Er yes, Cell<SmartPtr<Self>>
is what I meant. (Gc<T>
is essentially Cell<NonNull<GcBox<T>>>
, where GcBox<T>
is a struct with T
and some header information. It actually uses a bit of the pointer as a bit to indicate whether the Gc
is rooted, so there isn’t an alignment guarantee. But we know that the vtable is valid because at some point the Gc
originated from a Gc::new
call.)