[][src]Trait zerogc::TraceImmutable

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>

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 ()[src]

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

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

impl<A, B, C> TraceImmutable for (A, B, C) where
    A: TraceImmutable,
    B: TraceImmutable,
    C: TraceImmutable
[src]

impl<A, B, C, D> TraceImmutable for (A, B, C, D) where
    A: TraceImmutable,
    B: TraceImmutable,
    C: TraceImmutable,
    D: TraceImmutable
[src]

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

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

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

impl<A, B, C, D, E, F, G, H> TraceImmutable for (A, B, C, D, E, F, G, H) where
    A: TraceImmutable,
    B: TraceImmutable,
    C: TraceImmutable,
    D: TraceImmutable,
    E: TraceImmutable,
    F: TraceImmutable,
    G: TraceImmutable,
    H: 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> TraceImmutable for [T; 0][src]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Loading content...

Implementors

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

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

Since a cell has interior mutablity, it can implement TraceImmutable even if the interior type is only Trace

Loading content...