pub struct DynamicRootSet<'gc>(/* private fields */);
Expand description
A way of registering GC roots dynamically.
Use this type as (a part of) an Arena
root to enable dynamic rooting of
GC’d objects through DynamicRoot
handles.
Implementations§
Source§impl<'gc> DynamicRootSet<'gc>
impl<'gc> DynamicRootSet<'gc>
Sourcepub fn stash<R: for<'a> Rootable<'a>>(
&self,
mc: &Mutation<'gc>,
root: Root<'gc, R>,
) -> DynamicRoot<R>
pub fn stash<R: for<'a> Rootable<'a>>( &self, mc: &Mutation<'gc>, root: Root<'gc, R>, ) -> DynamicRoot<R>
Puts a root inside this root set.
The returned handle can be freely stored outside the current arena, and will keep the root alive across garbage collections.
Sourcepub fn fetch<'a, R: for<'r> Rootable<'r>>(
&self,
root: &'a DynamicRoot<R>,
) -> &'a Root<'gc, R>
pub fn fetch<'a, R: for<'r> Rootable<'r>>( &self, root: &'a DynamicRoot<R>, ) -> &'a Root<'gc, R>
Sourcepub fn try_fetch<'a, R: for<'r> Rootable<'r>>(
&self,
root: &'a DynamicRoot<R>,
) -> Result<&'a Root<'gc, R>, MismatchedRootSet>
pub fn try_fetch<'a, R: for<'r> Rootable<'r>>( &self, root: &'a DynamicRoot<R>, ) -> Result<&'a Root<'gc, R>, MismatchedRootSet>
Gets immutable access to the given root, or returns an error if the handle doesn’t belong to this root set.
Sourcepub fn contains<R: for<'r> Rootable<'r>>(&self, root: &DynamicRoot<R>) -> bool
pub fn contains<R: for<'r> Rootable<'r>>(&self, root: &DynamicRoot<R>) -> bool
Tests if the given handle belongs to this root set.
Trait Implementations§
Source§impl<'gc> Clone for DynamicRootSet<'gc>
impl<'gc> Clone for DynamicRootSet<'gc>
Source§fn clone(&self) -> DynamicRootSet<'gc>
fn clone(&self) -> DynamicRootSet<'gc>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl<'gc> Collect for DynamicRootSet<'gc>
impl<'gc> Collect for DynamicRootSet<'gc>
Source§fn trace(&self, cc: &Collection)
fn trace(&self, cc: &Collection)
Must call
Collect::trace
on all held Gc
pointers. If this type holds inner types that
implement Collect
, a valid implementation would simply call Collect::trace
on all the
held values to ensure this.Source§fn needs_trace() -> boolwhere
Self: Sized,
fn needs_trace() -> boolwhere
Self: Sized,
As an optimization, if this type can never hold a
Gc
pointer and trace
is unnecessary
to call, you may implement this method and return false. The default implementation returns
true, signaling that Collect::trace
must be called.impl<'gc> Copy for DynamicRootSet<'gc>
Auto Trait Implementations§
impl<'gc> Freeze for DynamicRootSet<'gc>
impl<'gc> !RefUnwindSafe for DynamicRootSet<'gc>
impl<'gc> !Send for DynamicRootSet<'gc>
impl<'gc> !Sync for DynamicRootSet<'gc>
impl<'gc> Unpin for DynamicRootSet<'gc>
impl<'gc> !UnwindSafe for DynamicRootSet<'gc>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more