Skip to main content

Trace

Trait Trace 

Source
pub trait Trace {
    // Required method
    fn trace(&self, m: &mut Marker);
}
Expand description

Every GC-rooted type implements Trace to expose its Gc<_> fields.

The trace method visits every reachable Gc<_> and calls Marker::mark on it. For container fields (Vec<LuaValue>, etc.) call field.trace(m) to delegate.

§Mechanical pattern

impl Trace for LuaTable {
    fn trace(&self, m: &mut Marker) {
        for v in self.array.iter() { v.trace(m); }
        if let Some(mt) = self.metatable { m.mark(mt); }
    }
}

Required Methods§

Source

fn trace(&self, m: &mut Marker)

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl Trace for bool

Source§

fn trace(&self, _m: &mut Marker)

Source§

impl Trace for char

Source§

fn trace(&self, _m: &mut Marker)

Source§

impl Trace for f32

Source§

fn trace(&self, _m: &mut Marker)

Source§

impl Trace for f64

Source§

fn trace(&self, _m: &mut Marker)

Source§

impl Trace for i8

Source§

fn trace(&self, _m: &mut Marker)

Source§

impl Trace for i16

Source§

fn trace(&self, _m: &mut Marker)

Source§

impl Trace for i32

Source§

fn trace(&self, _m: &mut Marker)

Source§

impl Trace for i64

Source§

fn trace(&self, _m: &mut Marker)

Source§

impl Trace for i128

Source§

fn trace(&self, _m: &mut Marker)

Source§

impl Trace for isize

Source§

fn trace(&self, _m: &mut Marker)

Source§

impl Trace for str

Source§

fn trace(&self, _m: &mut Marker)

Source§

impl Trace for u8

Source§

fn trace(&self, _m: &mut Marker)

Source§

impl Trace for u16

Source§

fn trace(&self, _m: &mut Marker)

Source§

impl Trace for u32

Source§

fn trace(&self, _m: &mut Marker)

Source§

impl Trace for u64

Source§

fn trace(&self, _m: &mut Marker)

Source§

impl Trace for u128

Source§

fn trace(&self, _m: &mut Marker)

Source§

impl Trace for usize

Source§

fn trace(&self, _m: &mut Marker)

Source§

impl Trace for String

Source§

fn trace(&self, _m: &mut Marker)

Source§

impl<T> Trace for PhantomData<T>

Source§

fn trace(&self, _m: &mut Marker)

Source§

impl<T: Trace + ?Sized> Trace for Box<T>

Source§

fn trace(&self, m: &mut Marker)

Source§

impl<T: Trace + ?Sized> Trace for Rc<T>

Source§

fn trace(&self, m: &mut Marker)

Source§

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

Source§

fn trace(&self, m: &mut Marker)

Source§

impl<T: Trace> Trace for Vec<T>

Source§

fn trace(&self, m: &mut Marker)

Source§

impl<T: Trace> Trace for RefCell<T>

Source§

fn trace(&self, m: &mut Marker)

Implementors§

Source§

impl<T: Trace + 'static> Trace for Gc<T>

Gc<T> is itself traceable: marking it forwards to the contained T.