[−][src]Trait zerogc::TraceImmutable
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
pub fn visit_immutable<V: GcVisitor>(
&self,
visitor: &mut V
) -> Result<(), V::Err>
[src]
&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.
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]
A: TraceImmutable,
impl<A, B> TraceImmutable for (A, B) where
A: TraceImmutable,
B: TraceImmutable,
[src]
A: TraceImmutable,
B: TraceImmutable,
impl<A, B, C> TraceImmutable for (A, B, C) where
A: TraceImmutable,
B: TraceImmutable,
C: TraceImmutable,
[src]
A: TraceImmutable,
B: TraceImmutable,
C: TraceImmutable,
impl<A, B, C, D> TraceImmutable for (A, B, C, D) where
A: TraceImmutable,
B: TraceImmutable,
C: TraceImmutable,
D: TraceImmutable,
[src]
A: TraceImmutable,
B: TraceImmutable,
C: TraceImmutable,
D: TraceImmutable,
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]
A: TraceImmutable,
B: TraceImmutable,
C: TraceImmutable,
D: TraceImmutable,
E: TraceImmutable,
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]
A: TraceImmutable,
B: TraceImmutable,
C: TraceImmutable,
D: TraceImmutable,
E: TraceImmutable,
F: TraceImmutable,
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]
A: TraceImmutable,
B: TraceImmutable,
C: TraceImmutable,
D: TraceImmutable,
E: TraceImmutable,
F: TraceImmutable,
G: TraceImmutable,
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]
A: TraceImmutable,
B: TraceImmutable,
C: TraceImmutable,
D: TraceImmutable,
E: TraceImmutable,
F: TraceImmutable,
G: TraceImmutable,
H: TraceImmutable,
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]
A: TraceImmutable,
B: TraceImmutable,
C: TraceImmutable,
D: TraceImmutable,
E: TraceImmutable,
F: TraceImmutable,
G: TraceImmutable,
H: TraceImmutable,
I: TraceImmutable,
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]
pub fn visit_immutable<V: GcVisitor>(
&self,
visitor: &mut V
) -> Result<(), <V as GcVisitor>::Err>
[src]
&self,
visitor: &mut V
) -> Result<(), <V as GcVisitor>::Err>
impl<T: TraceImmutable> TraceImmutable for Option<T>
[src]
pub fn visit_immutable<V: GcVisitor>(
&self,
visitor: &mut V
) -> Result<(), <V as GcVisitor>::Err>
[src]
&self,
visitor: &mut V
) -> Result<(), <V as GcVisitor>::Err>
impl<T: TraceImmutable> TraceImmutable for Wrapping<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]
T: TraceImmutable,
impl<T> TraceImmutable for Arc<T> where
T: TraceImmutable,
[src]
T: TraceImmutable,
impl TraceImmutable for String
[src]
impl<K, V> TraceImmutable for HashMap<K, V> where
K: TraceImmutable,
V: TraceImmutable,
[src]
K: TraceImmutable,
V: TraceImmutable,
pub fn visit_immutable<Visit: GcVisitor>(
&self,
visitor: &mut Visit
) -> Result<(), Visit::Err>
[src]
&self,
visitor: &mut Visit
) -> Result<(), Visit::Err>
impl<V> TraceImmutable for HashSet<V> where
V: TraceImmutable,
[src]
V: TraceImmutable,
pub fn visit_immutable<Visit: GcVisitor>(
&self,
visitor: &mut Visit
) -> Result<(), Visit::Err>
[src]
&self,
visitor: &mut Visit
) -> Result<(), Visit::Err>
Implementors
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