@@ -30,7 +30,6 @@ pub unsafe trait Mark<'o, 'n, O, N> {
30
30
31
31
pub unsafe trait Trace {
32
32
fn trace ( t : & Self ) ;
33
- const TRACE_FIELD_COUNT : u8 ;
34
33
const TRACE_TYPE_INFO : GcTypeInfo ;
35
34
const TRACE_CHILD_TYPE_INFO : [ Option < GcTypeInfo > ; 8 ] ;
36
35
fn trace_transitive_type_info ( tti : & mut Tti ) ;
@@ -165,7 +164,6 @@ unsafe impl<T> Immutable for Box<T> {}
165
164
// If you only implement Mark and not Trace CHILD_TYPE_INFO will all be const None
166
165
unsafe impl < T : Immutable > Trace for T {
167
166
default fn trace ( _: & T ) { }
168
- default const TRACE_FIELD_COUNT : u8 = 0 ;
169
167
default const TRACE_TYPE_INFO : GcTypeInfo = GcTypeInfo :: new:: < Self > ( ) ;
170
168
default const TRACE_CHILD_TYPE_INFO : [ Option <GcTypeInfo >; 8 ] = [ None ; 8 ] ;
171
169
default fn trace_transitive_type_info ( _: & mut Tti ) { }
@@ -181,7 +179,6 @@ unsafe impl<'r, T: 'r + Immutable + Trace> Trace for Gc<'r, T> {
181
179
fn trace ( t : & Self ) {
182
180
Trace :: trace ( t. deref ( ) )
183
181
}
184
- const TRACE_FIELD_COUNT : u8 = 0 ;
185
182
// A Gc<Gc<T>> is equvlent to Gc<T>
186
183
const TRACE_TYPE_INFO : GcTypeInfo = GcTypeInfo :: new :: < T > ( ) ;
187
184
const TRACE_CHILD_TYPE_INFO : [ Option < GcTypeInfo > ; 8 ] = [
@@ -204,7 +201,6 @@ unsafe impl<'r, T: Immutable + Trace> Trace for Option<T> {
204
201
default fn trace ( t : & Self ) {
205
202
Trace :: trace ( t. deref ( ) )
206
203
}
207
- default const TRACE_FIELD_COUNT : u8 = 0 ;
208
204
default const TRACE_TYPE_INFO : GcTypeInfo = GcTypeInfo :: new:: < Self > ( ) ;
209
205
default const TRACE_CHILD_TYPE_INFO : [ Option <GcTypeInfo >; 8 ] = GcTypeInfo :: one_child:: < T > ( ) ;
210
206
default fn trace_transitive_type_info ( tti : & mut Tti ) {
@@ -217,23 +213,20 @@ unsafe impl<'r, T: Immutable + Trace + HasNoGc> Trace for Option<T> {
217
213
fn trace ( t : & Self ) {
218
214
Trace :: trace ( t. deref ( ) )
219
215
}
220
- const TRACE_FIELD_COUNT : u8 = 0 ;
221
216
const TRACE_TYPE_INFO : GcTypeInfo = GcTypeInfo :: new :: < Self > ( ) ;
222
217
const TRACE_CHILD_TYPE_INFO : [ Option < GcTypeInfo > ; 8 ] = [ None ; 8 ] ;
223
218
fn trace_transitive_type_info ( _: & mut Tti ) { }
224
219
}
225
220
226
221
unsafe impl < T : Immutable + Trace > Trace for Box < T > {
227
222
default fn trace ( _: & Self ) { }
228
- default const TRACE_FIELD_COUNT : u8 = 0 ;
229
223
default const TRACE_TYPE_INFO : GcTypeInfo = GcTypeInfo :: new:: < Self > ( ) ;
230
224
default const TRACE_CHILD_TYPE_INFO : [ Option <GcTypeInfo >; 8 ] = [ None ; 8 ] ;
231
225
default fn trace_transitive_type_info ( _: & mut Tti ) { }
232
226
}
233
227
234
228
unsafe impl < T : Immutable + Trace + HasNoGc > Trace for Box < T > {
235
229
fn trace ( _: & Self ) { }
236
- const TRACE_FIELD_COUNT : u8 = 0 ;
237
230
const TRACE_TYPE_INFO : GcTypeInfo = GcTypeInfo :: new :: < Self > ( ) ;
238
231
default const TRACE_CHILD_TYPE_INFO : [ Option <GcTypeInfo >; 8 ] = GcTypeInfo :: one_child:: < T > ( ) ;
239
232
fn trace_transitive_type_info ( tti : & mut Tti ) {
@@ -251,7 +244,6 @@ struct List<'r, T> {
251
244
// These three impls will be derived with a procedural macro
252
245
unsafe impl < ' r , T : ' r + Trace + Immutable > Trace for List < ' r , T > {
253
246
fn trace ( _: & List < ' r , T > ) { }
254
- const TRACE_FIELD_COUNT : u8 = 0 ;
255
247
const TRACE_TYPE_INFO : GcTypeInfo = GcTypeInfo :: new :: < Self > ( ) ;
256
248
const TRACE_CHILD_TYPE_INFO : [ Option < GcTypeInfo > ; 8 ] = [
257
249
Some ( GcTypeInfo :: new :: < T > ( ) ) ,
@@ -309,7 +301,6 @@ struct Foo<'r> {
309
301
310
302
unsafe impl < ' r > Trace for Foo < ' r > {
311
303
fn trace ( _: & Foo < ' r > ) { }
312
- const TRACE_FIELD_COUNT : u8 = 0 ;
313
304
const TRACE_TYPE_INFO : GcTypeInfo = GcTypeInfo :: new :: < Self > ( ) ;
314
305
default const TRACE_CHILD_TYPE_INFO : [ Option <GcTypeInfo >; 8 ] =
315
306
GcTypeInfo :: one_child:: < Gc < ' r , usize > > ( ) ;
@@ -384,7 +375,6 @@ fn hidden_lifetime_test() {
384
375
// This may not be trivail to implement as a proc macro
385
376
unsafe impl < ' a , ' b : ' a > Trace for Foo2 < ' a , ' b > {
386
377
fn trace ( _: & Foo2 < ' a , ' b > ) { }
387
- const TRACE_FIELD_COUNT : u8 = 0 ;
388
378
const TRACE_TYPE_INFO : GcTypeInfo = GcTypeInfo :: new :: < Self > ( ) ;
389
379
const TRACE_CHILD_TYPE_INFO : [ Option < GcTypeInfo > ; 8 ] =
390
380
GcTypeInfo :: one_child :: < Gc < ' a , Bar < ' b > > > ( ) ;
0 commit comments