Trait gluon_vm::gc::Trace

source ·
pub unsafe trait Trace {
    // Provided methods
    unsafe fn root(&mut self) { ... }
    unsafe fn unroot(&mut self) { ... }
    fn trace(&self, gc: &mut Gc) { ... }
}
Expand description

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

Provided Methods§

source

unsafe fn root(&mut self)

source

unsafe fn unroot(&mut self)

source

fn trace(&self, gc: &mut Gc)

Implementations on Foreign Types§

source§

impl<'a, T: Trace> Trace for Vec<T>

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, gc: &mut Gc)

source§

impl<T> Trace for Cell<T>where T: Trace + Copy,

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, gc: &mut Gc)

source§

impl Trace for i32

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, _gc: &mut Gc)

source§

impl<E, F, G, H, I, J> Trace for (E, F, G, H, I, J)where E: Trace, F: Trace, G: Trace, H: Trace, I: Trace, J: Trace,

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, gc: &mut Gc)

source§

impl<J> Trace for (J,)where J: Trace,

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, gc: &mut Gc)

source§

impl Trace for u64

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, _gc: &mut Gc)

source§

impl<T> Trace for RwLockReadGuard<'_, T>where T: Trace,

source§

fn trace(&self, gc: &mut Gc)

source§

impl Trace for u32

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, _gc: &mut Gc)

source§

impl<T: ?Sized> Trace for PhantomData<T>

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, _gc: &mut Gc)

source§

impl Trace for String

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, _gc: &mut Gc)

source§

impl Trace for i8

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, _gc: &mut Gc)

source§

impl<T: ?Sized> Trace for *mut T

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, _gc: &mut Gc)

source§

impl Trace for u8

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, _gc: &mut Gc)

source§

impl<I, J> Trace for (I, J)where I: Trace, J: Trace,

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, gc: &mut Gc)

source§

impl<V, H> Trace for HashSet<V, H>where V: Trace,

source§

fn trace(&self, gc: &mut Gc)

source§

impl<T, E> Trace for Result<T, E>where T: Trace, E: Trace,

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, gc: &mut Gc)

source§

impl<G, H, I, J> Trace for (G, H, I, J)where G: Trace, H: Trace, I: Trace, J: Trace,

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, gc: &mut Gc)

source§

impl<F, G, H, I, J> Trace for (F, G, H, I, J)where F: Trace, G: Trace, H: Trace, I: Trace, J: Trace,

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, gc: &mut Gc)

source§

impl<D, E, F, G, H, I, J> Trace for (D, E, F, G, H, I, J)where D: Trace, E: Trace, F: Trace, G: Trace, H: Trace, I: Trace, J: Trace,

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, gc: &mut Gc)

source§

impl<'a, T: ?Sized + Trace> Trace for Rc<T>

source§

fn trace(&self, gc: &mut Gc)

source§

impl<A, B, C, D, E, F, G, H, I, J> Trace for (A, B, C, D, E, F, G, H, I, J)where A: Trace, B: Trace, C: Trace, D: Trace, E: Trace, F: Trace, G: Trace, H: Trace, I: Trace, J: Trace,

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, gc: &mut Gc)

source§

impl Trace for bool

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, _gc: &mut Gc)

source§

impl<'a, T: ?Sized + Trace> Trace for &'a T

source§

fn trace(&self, gc: &mut Gc)

source§

impl<U> Trace for [U]where U: Trace,

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, gc: &mut Gc)

source§

impl<B, C, D, E, F, G, H, I, J> Trace for (B, C, D, E, F, G, H, I, J)where B: Trace, C: Trace, D: Trace, E: Trace, F: Trace, G: Trace, H: Trace, I: Trace, J: Trace,

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, gc: &mut Gc)

source§

impl<T> Trace for RwLock<T>where T: Trace,

source§

fn trace(&self, gc: &mut Gc)

source§

impl Trace for i64

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, _gc: &mut Gc)

source§

impl Trace for isize

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, _gc: &mut Gc)

source§

impl<T> Trace for RwLock<T>where T: Trace,

source§

fn trace(&self, gc: &mut Gc)

source§

impl<'a, T: ?Sized + Trace> Trace for &'a mut T

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, gc: &mut Gc)

source§

impl Trace for i16

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, _gc: &mut Gc)

source§

impl<C, D, E, F, G, H, I, J> Trace for (C, D, E, F, G, H, I, J)where C: Trace, D: Trace, E: Trace, F: Trace, G: Trace, H: Trace, I: Trace, J: Trace,

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, gc: &mut Gc)

source§

impl<T> Trace for RwLockReadGuard<'_, T>where T: Trace,

source§

fn trace(&self, gc: &mut Gc)

source§

impl<'a, T: ?Sized + Trace> Trace for Box<T>

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, gc: &mut Gc)

source§

impl<H, I, J> Trace for (H, I, J)where H: Trace, I: Trace, J: Trace,

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, gc: &mut Gc)

source§

impl Trace for f32

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, _gc: &mut Gc)

source§

impl<T> Trace for VecDeque<T>where T: Trace,

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, gc: &mut Gc)

source§

impl<T: ?Sized> Trace for *const T

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, _gc: &mut Gc)

source§

impl<'a, T: ?Sized + Trace> Trace for Arc<T>

source§

fn trace(&self, gc: &mut Gc)

source§

impl Trace for str

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, _gc: &mut Gc)

source§

impl<T> Trace for Option<T>where T: Trace,

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, gc: &mut Gc)

source§

impl Trace for ()

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, _gc: &mut Gc)

source§

impl Trace for u16

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, _gc: &mut Gc)

source§

impl Trace for Slab<GcPtr<Thread>>

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, gc: &mut Gc)

source§

impl<T> Trace for Mutex<T>where T: Trace,

source§

fn trace(&self, gc: &mut Gc)

source§

impl<K, V, H> Trace for HashMap<K, V, H>where V: Trace,

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, gc: &mut Gc)

source§

impl Trace for usize

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, _gc: &mut Gc)

source§

impl Trace for f64

source§

unsafe fn root(&mut self)

source§

unsafe fn unroot(&mut self)

source§

fn trace(&self, _gc: &mut Gc)

Implementors§

source§

impl Trace for A

source§

impl Trace for B

source§

impl Trace for C

source§

impl Trace for D

source§

impl Trace for E

source§

impl Trace for F

source§

impl Trace for G

source§

impl Trace for H

source§

impl Trace for I

source§

impl Trace for J

source§

impl Trace for K

source§

impl Trace for L

source§

impl Trace for M

source§

impl Trace for N

source§

impl Trace for O

source§

impl Trace for P

source§

impl Trace for Q

source§

impl Trace for R

source§

impl Trace for S

source§

impl Trace for T

source§

impl Trace for U

source§

impl Trace for V

source§

impl Trace for X

source§

impl Trace for Y

source§

impl Trace for Z

source§

impl Trace for ClosureData

source§

impl Trace for InternedStr

source§

impl Trace for Value

source§

impl Trace for MacroEnv

source§

impl Trace for DirEntry

source§

impl Trace for Metadata

source§

impl Trace for Stack

source§

impl Trace for RootedThread

source§

impl Trace for Thread

source§

impl Trace for GlobalVmState

source§

impl Trace for VmEnvInstance<'_>

source§

impl<'a> Trace for Variants<'a>

source§

impl<'a, T: Trace> Trace for Borrow<'a, T>

source§

impl<T> Trace for Receiver<T>

source§

impl<T> Trace for Sender<T>

source§

impl<T> Trace for Lazy<T>

source§

impl<T> Trace for Reference<T>

source§

impl<T> Trace for RootedValue<T>where T: VmRootInternal,

source§

impl<T> Trace for gluon_vm::gc::mutex::Mutex<T>where T: Trace,

source§

impl<T> Trace for GcPtr<T>where T: Trace + ?Sized,

When traversing a GcPtr we need to mark it

source§

impl<T> Trace for Move<T>where T: Trace,

source§

impl<T, V> Trace for Opaque<T, V>where T: Trace,

source§

impl<T: VmRootInternal + Trace, F> Trace for Function<T, F>

source§

impl<V> Trace for Global<V>where V: Trace,