A garbage collected pointer to a type T. Implements Copy, and is implemented as a plain machine
pointer. You can only allocate Gc pointers through a &Mutation<'gc> inside an arena type,
and through “generativity” such Gc pointers may not escape the arena they were born in or
be stored inside TLS. This, combined with correct Collect implementations, means that Gc
pointers will never be dangling and are always safe to access.
Handle value given by arena callbacks during construction and mutation. Allows allocating new
Gc pointers and internally mutating values held by Gc pointers.
A trait for garbage collected objects that can be placed into Gc pointers. This trait is
unsafe, because Gc pointers inside an Arena are assumed never to be dangling, and in order to
ensure this certain rules must be followed: