Trait zerogc::TraceImmutable[][src]

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

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

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

Visit an immutable reference to this type

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

Loading content...

Implementations on Foreign Types

impl TraceImmutable for i8[src]

impl TraceImmutable for i16[src]

impl TraceImmutable for i32[src]

impl TraceImmutable for i64[src]

impl TraceImmutable for isize[src]

impl TraceImmutable for u8[src]

impl TraceImmutable for u16[src]

impl TraceImmutable for u32[src]

impl TraceImmutable for u64[src]

impl TraceImmutable for usize[src]

impl TraceImmutable for f32[src]

impl TraceImmutable for f64[src]

impl TraceImmutable for bool[src]

impl TraceImmutable for char[src]

impl TraceImmutable for &'static str[src]

impl<T> TraceImmutable for PhantomData<T>[src]

impl TraceImmutable for ()[src]

impl<I> TraceImmutable for (I,) where
    I: TraceImmutable
[src]

impl<H, I> TraceImmutable for (H, I) where
    H: TraceImmutable,
    I: TraceImmutable
[src]

impl<G, H, I> TraceImmutable for (G, H, I) where
    G: TraceImmutable,
    H: TraceImmutable,
    I: TraceImmutable
[src]

impl<F, G, H, I> TraceImmutable for (F, G, H, I) where
    F: TraceImmutable,
    G: TraceImmutable,
    H: TraceImmutable,
    I: TraceImmutable
[src]

impl<E, F, G, H, I> TraceImmutable for (E, F, G, H, I) where
    E: TraceImmutable,
    F: TraceImmutable,
    G: TraceImmutable,
    H: TraceImmutable,
    I: TraceImmutable
[src]

impl<D, E, F, G, H, I> TraceImmutable for (D, E, F, G, H, I) where
    D: TraceImmutable,
    E: TraceImmutable,
    F: TraceImmutable,
    G: TraceImmutable,
    H: TraceImmutable,
    I: TraceImmutable
[src]

impl<C, D, E, F, G, H, I> TraceImmutable for (C, D, E, F, G, H, I) where
    C: TraceImmutable,
    D: TraceImmutable,
    E: TraceImmutable,
    F: TraceImmutable,
    G: TraceImmutable,
    H: TraceImmutable,
    I: TraceImmutable
[src]

impl<B, C, D, E, F, G, H, I> TraceImmutable for (B, C, D, E, F, G, H, I) where
    B: TraceImmutable,
    C: TraceImmutable,
    D: TraceImmutable,
    E: TraceImmutable,
    F: TraceImmutable,
    G: TraceImmutable,
    H: TraceImmutable,
    I: TraceImmutable
[src]

impl<A, B, C, D, E, F, G, H, I> TraceImmutable for (A, B, C, D, E, F, G, H, I) where
    A: TraceImmutable,
    B: TraceImmutable,
    C: TraceImmutable,
    D: TraceImmutable,
    E: TraceImmutable,
    F: TraceImmutable,
    G: TraceImmutable,
    H: TraceImmutable,
    I: TraceImmutable
[src]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

impl<'a, T: 'a> TraceImmutable for &'a T where
    T: TraceImmutable
[src]

impl<'a, T: 'a> TraceImmutable for &'a mut T where
    T: TraceImmutable
[src]

impl<T> TraceImmutable for [T] where
    T: TraceImmutable
[src]

impl<T> TraceImmutable for Option<T> where
    T: TraceImmutable
[src]

impl<T> TraceImmutable for Wrapping<T> where
    T: TraceImmutable
[src]

impl<T> TraceImmutable for Vec<T> where
    T: TraceImmutable
[src]

impl<T> TraceImmutable for Box<T> where
    T: TraceImmutable
[src]

impl<T: TraceImmutable> TraceImmutable for Rc<T> where
    T: TraceImmutable
[src]

impl<T: TraceImmutable> TraceImmutable for Arc<T> where
    T: TraceImmutable
[src]

impl TraceImmutable for String[src]

impl<K: TraceImmutable, V> TraceImmutable for HashMap<K, V> where
    K: TraceImmutable,
    V: TraceImmutable
[src]

impl<T: TraceImmutable> TraceImmutable for HashSet<T> where
    T: TraceImmutable
[src]

Loading content...

Implementors

impl TraceImmutable for DummyCollectorId[src]

impl<T> TraceImmutable for AssumeNotTraced<T>[src]

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

See Trace documentation on the safety of mutation

We require NullTrace in order to set our internals

Loading content...