SAFETY The only unsafety from copying the type is the creation of an unrooted value
A definition of some data which may be allocated by the garbage collector.
Trait which creates a typed pointer from a *mut () pointer.
For Sized
types this is just a cast but for unsized types some more metadata must be taken
from the provided D
value to make it initialize correctly.
Trait which must be implemented on all root types which contain GcPtr
A type unsafe implementing Trace must call trace on each of its fields
which in turn contains GcPtr