TraceImmutable

Trait TraceImmutable 

Source
pub unsafe trait TraceImmutable: Trace {
    // Required method
    fn visit_immutable<V: GcVisitor>(
        &self,
        visitor: &mut V,
    ) -> Result<(), V::Err>;
}
Expand description

A type that can be safely traced/relocated without having to use a mutable reference

Types with interior mutability (like RefCell or Cell<Gc<T>>) can safely implement this, since they allow safely relocating the pointer without a mutable reference. Likewise primitives (with new garbage collected data) can also implement this (since they have nothing to trace).

Required Methods§

Source

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Visit an immutable reference to this type

The visitor may want to relocate garbage collected pointers, which this type must support.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl TraceImmutable for f32

Source§

fn visit_immutable<V: GcVisitor>(&self, _visitor: &mut V) -> Result<(), V::Err>

Source§

impl TraceImmutable for f64

Source§

fn visit_immutable<V: GcVisitor>(&self, _visitor: &mut V) -> Result<(), V::Err>

Source§

impl TraceImmutable for i8

Source§

fn visit_immutable<V: GcVisitor>(&self, _visitor: &mut V) -> Result<(), V::Err>

Source§

impl TraceImmutable for i16

Source§

fn visit_immutable<V: GcVisitor>(&self, _visitor: &mut V) -> Result<(), V::Err>

Source§

impl TraceImmutable for i32

Source§

fn visit_immutable<V: GcVisitor>(&self, _visitor: &mut V) -> Result<(), V::Err>

Source§

impl TraceImmutable for i64

Source§

fn visit_immutable<V: GcVisitor>(&self, _visitor: &mut V) -> Result<(), V::Err>

Source§

impl TraceImmutable for isize

Source§

fn visit_immutable<V: GcVisitor>(&self, _visitor: &mut V) -> Result<(), V::Err>

Source§

impl TraceImmutable for u8

Source§

fn visit_immutable<V: GcVisitor>(&self, _visitor: &mut V) -> Result<(), V::Err>

Source§

impl TraceImmutable for u16

Source§

fn visit_immutable<V: GcVisitor>(&self, _visitor: &mut V) -> Result<(), V::Err>

Source§

impl TraceImmutable for u32

Source§

fn visit_immutable<V: GcVisitor>(&self, _visitor: &mut V) -> Result<(), V::Err>

Source§

impl TraceImmutable for u64

Source§

fn visit_immutable<V: GcVisitor>(&self, _visitor: &mut V) -> Result<(), V::Err>

Source§

impl TraceImmutable for ()

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl TraceImmutable for usize

Source§

fn visit_immutable<V: GcVisitor>(&self, _visitor: &mut V) -> Result<(), V::Err>

Source§

impl TraceImmutable for String

Source§

fn visit_immutable<V: GcVisitor>(&self, _visitor: &mut V) -> Result<(), V::Err>

Source§

impl<'a, T: TraceImmutable> TraceImmutable for &'a T

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<'a, T: TraceImmutable> TraceImmutable for &'a mut T

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<A> TraceImmutable for (A,)
where A: TraceImmutable,

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<A, B> TraceImmutable for (A, B)

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<A, B, C> TraceImmutable for (A, B, C)

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<A, B, C, D> TraceImmutable for (A, B, C, D)

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<A, B, C, D, E> TraceImmutable for (A, B, C, D, E)

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<A, B, C, D, E, F> TraceImmutable for (A, B, C, D, E, F)

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<A, B, C, D, E, F, G> TraceImmutable for (A, B, C, D, E, F, G)

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<A, B, C, D, E, F, G, H> TraceImmutable for (A, B, C, D, E, F, G, H)

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<A, B, C, D, E, F, G, H, I> TraceImmutable for (A, B, C, D, E, F, G, H, I)

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<K, V> TraceImmutable for HashMap<K, V>

Source§

fn visit_immutable<Visit: GcVisitor>( &self, visitor: &mut Visit, ) -> Result<(), Visit::Err>

Source§

impl<T> TraceImmutable for Rc<T>
where T: TraceImmutable,

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T> TraceImmutable for Arc<T>
where T: TraceImmutable,

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for Option<T>

Source§

fn visit_immutable<V: GcVisitor>( &self, visitor: &mut V, ) -> Result<(), <V as GcVisitor>::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 0]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 1]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 2]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 3]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 4]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 5]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 6]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 7]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 8]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 9]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 10]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 11]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 12]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 13]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 14]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 15]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 16]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 17]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 18]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 19]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 20]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 24]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 32]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 48]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 64]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 100]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 128]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 256]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 512]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 1024]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 2048]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T; 4096]

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for [T]

Source§

fn visit_immutable<V: GcVisitor>( &self, visitor: &mut V, ) -> Result<(), <V as GcVisitor>::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for Box<T>

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for Vec<T>

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<T: TraceImmutable> TraceImmutable for Wrapping<T>

Source§

fn visit_immutable<V: GcVisitor>(&self, visitor: &mut V) -> Result<(), V::Err>

Source§

impl<V> TraceImmutable for HashSet<V>
where V: TraceImmutable,

Source§

fn visit_immutable<Visit: GcVisitor>( &self, visitor: &mut Visit, ) -> Result<(), Visit::Err>

Implementors§

Source§

impl<T> TraceImmutable for AssumeNotTraced<T>

Source§

impl<T: GcSafe + NullTrace + Copy> TraceImmutable for GcCell<T>

See Trace documentation on the safety of mutation

We require NullTrace in order to set our internals