Crate gc_arena

source ·

Modules

Macros

  • A convenience macro for quickly creating a type that implements Rootable.
  • If a type is static, we know that it can never hold Gc pointers, so it is safe to provide a simple empty Collect implementation. Collect implementation.
  • If a type will never hold Gc pointers, you can use this macro to provide a simple empty Collect implementation.
  • Unsizes a Gc or GcWeak pointer.

Structs

  • A generic, garbage collected arena.
  • Handle value given by arena callbacks during garbage collection, which must be passed through Collect::trace implementations.
  • An unbranded, reference-counted handle to a GC root held in some DynamicRootSet.
  • A way of registering GC roots dynamically.
  • 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.
  • Error returned when trying to fetch a DynamicRoot from the wrong DynamicRootSet.
  • Handle value given by arena callbacks during construction and mutation. Allows allocating new Gc pointers and internally mutating values held by Gc pointers.
  • A wrapper type that implements Collect whenever the contained T is ’static, which is useful in generic contexts

Traits

  • 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:
  • A trait that produces a Collect-able type for the given lifetime. This is used to produce the root Collect instance in an Arena.

Functions

  • Create a temporary arena without a root object and perform the given operation on it. No garbage collection will be done until the very end of the call, at which point all allocations will be collected.

Type Aliases

  • A helper type alias for a Rootable::Root for a specific lifetime.