pub trait Trace {
// Required method
fn trace(&self, m: &mut Marker);
// Provided method
fn type_name(&self) -> &'static str { ... }
}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§
Provided Methods§
Sourcefn type_name(&self) -> &'static str
fn type_name(&self) -> &'static str
Concrete Rust type name for diagnostic/testC telemetry
(Heap::type_name_count). Collector behavior must not branch on
this. The default covers container blanket impls, which are never
GC-boxed directly; concrete runtime types override it with
std::any::type_name::<Self>().
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".