[][src]Trait zerogc::GcErase

pub unsafe trait GcErase<'a, Id: CollectorId>: Trace {
    type Erased: 'a;
}

Indicates that it's safe to erase all GC lifetimes and change them to 'static (logically an 'unsafe)

This trait is the opposite of GcRebrand

The lifetime 'a is the minimum lifetime of all other non-gc references.

Associated Types

type Erased: 'a[src]

This type with all garbage collected lifetimes changed to 'static (or erased)

This must have the same in-memory repr as Self, so that it's safe to transmute.

Loading content...

Implementations on Foreign Types

impl<'a, Id: CollectorId> GcErase<'a, Id> for i8[src]

type Erased = Self

impl<'a, Id: CollectorId> GcErase<'a, Id> for i16[src]

type Erased = Self

impl<'a, Id: CollectorId> GcErase<'a, Id> for i32[src]

type Erased = Self

impl<'a, Id: CollectorId> GcErase<'a, Id> for i64[src]

type Erased = Self

impl<'a, Id: CollectorId> GcErase<'a, Id> for isize[src]

type Erased = Self

impl<'a, Id: CollectorId> GcErase<'a, Id> for u8[src]

type Erased = Self

impl<'a, Id: CollectorId> GcErase<'a, Id> for u16[src]

type Erased = Self

impl<'a, Id: CollectorId> GcErase<'a, Id> for u32[src]

type Erased = Self

impl<'a, Id: CollectorId> GcErase<'a, Id> for u64[src]

type Erased = Self

impl<'a, Id: CollectorId> GcErase<'a, Id> for usize[src]

type Erased = Self

impl<'a, Id: CollectorId> GcErase<'a, Id> for f32[src]

type Erased = Self

impl<'a, Id: CollectorId> GcErase<'a, Id> for f64[src]

type Erased = Self

impl<'a, Id: CollectorId> GcErase<'a, Id> for bool[src]

type Erased = Self

impl<'a, Id: CollectorId> GcErase<'a, Id> for char[src]

type Erased = Self

impl<'a, Id: CollectorId> GcErase<'a, Id> for &'static str[src]

type Erased = Self

impl<'a, Id> GcErase<'a, Id> for () where
    Id: CollectorId
[src]

type Erased = ()

impl<'a, Id, A> GcErase<'a, Id> for (A,) where
    Id: CollectorId,
    A: GcErase<'a, Id>,
    <A as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = (<A as GcErase<'a, Id>>::Erased,)

impl<'a, Id, A, B> GcErase<'a, Id> for (A, B) where
    Id: CollectorId,
    A: GcErase<'a, Id>,
    B: GcErase<'a, Id>,
    <A as GcErase<'a, Id>>::Erased: Sized,
    <B as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = (<A as GcErase<'a, Id>>::Erased, <B as GcErase<'a, Id>>::Erased)

impl<'a, Id, A, B, C> GcErase<'a, Id> for (A, B, C) where
    Id: CollectorId,
    A: GcErase<'a, Id>,
    B: GcErase<'a, Id>,
    C: GcErase<'a, Id>,
    <A as GcErase<'a, Id>>::Erased: Sized,
    <B as GcErase<'a, Id>>::Erased: Sized,
    <C as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = (<A as GcErase<'a, Id>>::Erased, <B as GcErase<'a, Id>>::Erased, <C as GcErase<'a, Id>>::Erased)

impl<'a, Id, A, B, C, D> GcErase<'a, Id> for (A, B, C, D) where
    Id: CollectorId,
    A: GcErase<'a, Id>,
    B: GcErase<'a, Id>,
    C: GcErase<'a, Id>,
    D: GcErase<'a, Id>,
    <A as GcErase<'a, Id>>::Erased: Sized,
    <B as GcErase<'a, Id>>::Erased: Sized,
    <C as GcErase<'a, Id>>::Erased: Sized,
    <D as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = (<A as GcErase<'a, Id>>::Erased, <B as GcErase<'a, Id>>::Erased, <C as GcErase<'a, Id>>::Erased, <D as GcErase<'a, Id>>::Erased)

impl<'a, Id, A, B, C, D, E> GcErase<'a, Id> for (A, B, C, D, E) where
    Id: CollectorId,
    A: GcErase<'a, Id>,
    B: GcErase<'a, Id>,
    C: GcErase<'a, Id>,
    D: GcErase<'a, Id>,
    E: GcErase<'a, Id>,
    <A as GcErase<'a, Id>>::Erased: Sized,
    <B as GcErase<'a, Id>>::Erased: Sized,
    <C as GcErase<'a, Id>>::Erased: Sized,
    <D as GcErase<'a, Id>>::Erased: Sized,
    <E as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = (<A as GcErase<'a, Id>>::Erased, <B as GcErase<'a, Id>>::Erased, <C as GcErase<'a, Id>>::Erased, <D as GcErase<'a, Id>>::Erased, <E as GcErase<'a, Id>>::Erased)

impl<'a, Id, A, B, C, D, E, F> GcErase<'a, Id> for (A, B, C, D, E, F) where
    Id: CollectorId,
    A: GcErase<'a, Id>,
    B: GcErase<'a, Id>,
    C: GcErase<'a, Id>,
    D: GcErase<'a, Id>,
    E: GcErase<'a, Id>,
    F: GcErase<'a, Id>,
    <A as GcErase<'a, Id>>::Erased: Sized,
    <B as GcErase<'a, Id>>::Erased: Sized,
    <C as GcErase<'a, Id>>::Erased: Sized,
    <D as GcErase<'a, Id>>::Erased: Sized,
    <E as GcErase<'a, Id>>::Erased: Sized,
    <F as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = (<A as GcErase<'a, Id>>::Erased, <B as GcErase<'a, Id>>::Erased, <C as GcErase<'a, Id>>::Erased, <D as GcErase<'a, Id>>::Erased, <E as GcErase<'a, Id>>::Erased, <F as GcErase<'a, Id>>::Erased)

impl<'a, Id, A, B, C, D, E, F, G> GcErase<'a, Id> for (A, B, C, D, E, F, G) where
    Id: CollectorId,
    A: GcErase<'a, Id>,
    B: GcErase<'a, Id>,
    C: GcErase<'a, Id>,
    D: GcErase<'a, Id>,
    E: GcErase<'a, Id>,
    F: GcErase<'a, Id>,
    G: GcErase<'a, Id>,
    <A as GcErase<'a, Id>>::Erased: Sized,
    <B as GcErase<'a, Id>>::Erased: Sized,
    <C as GcErase<'a, Id>>::Erased: Sized,
    <D as GcErase<'a, Id>>::Erased: Sized,
    <E as GcErase<'a, Id>>::Erased: Sized,
    <F as GcErase<'a, Id>>::Erased: Sized,
    <G as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = (<A as GcErase<'a, Id>>::Erased, <B as GcErase<'a, Id>>::Erased, <C as GcErase<'a, Id>>::Erased, <D as GcErase<'a, Id>>::Erased, <E as GcErase<'a, Id>>::Erased, <F as GcErase<'a, Id>>::Erased, <G as GcErase<'a, Id>>::Erased)

impl<'a, Id, A, B, C, D, E, F, G, H> GcErase<'a, Id> for (A, B, C, D, E, F, G, H) where
    Id: CollectorId,
    A: GcErase<'a, Id>,
    B: GcErase<'a, Id>,
    C: GcErase<'a, Id>,
    D: GcErase<'a, Id>,
    E: GcErase<'a, Id>,
    F: GcErase<'a, Id>,
    G: GcErase<'a, Id>,
    H: GcErase<'a, Id>,
    <A as GcErase<'a, Id>>::Erased: Sized,
    <B as GcErase<'a, Id>>::Erased: Sized,
    <C as GcErase<'a, Id>>::Erased: Sized,
    <D as GcErase<'a, Id>>::Erased: Sized,
    <E as GcErase<'a, Id>>::Erased: Sized,
    <F as GcErase<'a, Id>>::Erased: Sized,
    <G as GcErase<'a, Id>>::Erased: Sized,
    <H as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = (<A as GcErase<'a, Id>>::Erased, <B as GcErase<'a, Id>>::Erased, <C as GcErase<'a, Id>>::Erased, <D as GcErase<'a, Id>>::Erased, <E as GcErase<'a, Id>>::Erased, <F as GcErase<'a, Id>>::Erased, <G as GcErase<'a, Id>>::Erased, <H as GcErase<'a, Id>>::Erased)

impl<'a, Id, A, B, C, D, E, F, G, H, I> GcErase<'a, Id> for (A, B, C, D, E, F, G, H, I) where
    Id: CollectorId,
    A: GcErase<'a, Id>,
    B: GcErase<'a, Id>,
    C: GcErase<'a, Id>,
    D: GcErase<'a, Id>,
    E: GcErase<'a, Id>,
    F: GcErase<'a, Id>,
    G: GcErase<'a, Id>,
    H: GcErase<'a, Id>,
    I: GcErase<'a, Id>,
    <A as GcErase<'a, Id>>::Erased: Sized,
    <B as GcErase<'a, Id>>::Erased: Sized,
    <C as GcErase<'a, Id>>::Erased: Sized,
    <D as GcErase<'a, Id>>::Erased: Sized,
    <E as GcErase<'a, Id>>::Erased: Sized,
    <F as GcErase<'a, Id>>::Erased: Sized,
    <G as GcErase<'a, Id>>::Erased: Sized,
    <H as GcErase<'a, Id>>::Erased: Sized,
    <I as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = (<A as GcErase<'a, Id>>::Erased, <B as GcErase<'a, Id>>::Erased, <C as GcErase<'a, Id>>::Erased, <D as GcErase<'a, Id>>::Erased, <E as GcErase<'a, Id>>::Erased, <F as GcErase<'a, Id>>::Erased, <G as GcErase<'a, Id>>::Erased, <H as GcErase<'a, Id>>::Erased, <I as GcErase<'a, Id>>::Erased)

impl<'a, Id, T> GcErase<'a, Id> for [T; 0] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 0]

impl<'a, Id, T> GcErase<'a, Id> for [T; 1] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 1]

impl<'a, Id, T> GcErase<'a, Id> for [T; 2] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 2]

impl<'a, Id, T> GcErase<'a, Id> for [T; 3] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 3]

impl<'a, Id, T> GcErase<'a, Id> for [T; 4] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 4]

impl<'a, Id, T> GcErase<'a, Id> for [T; 5] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 5]

impl<'a, Id, T> GcErase<'a, Id> for [T; 6] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 6]

impl<'a, Id, T> GcErase<'a, Id> for [T; 7] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 7]

impl<'a, Id, T> GcErase<'a, Id> for [T; 8] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 8]

impl<'a, Id, T> GcErase<'a, Id> for [T; 9] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 9]

impl<'a, Id, T> GcErase<'a, Id> for [T; 10] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 10]

impl<'a, Id, T> GcErase<'a, Id> for [T; 11] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 11]

impl<'a, Id, T> GcErase<'a, Id> for [T; 12] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 12]

impl<'a, Id, T> GcErase<'a, Id> for [T; 13] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 13]

impl<'a, Id, T> GcErase<'a, Id> for [T; 14] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 14]

impl<'a, Id, T> GcErase<'a, Id> for [T; 15] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 15]

impl<'a, Id, T> GcErase<'a, Id> for [T; 16] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 16]

impl<'a, Id, T> GcErase<'a, Id> for [T; 17] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 17]

impl<'a, Id, T> GcErase<'a, Id> for [T; 18] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 18]

impl<'a, Id, T> GcErase<'a, Id> for [T; 19] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 19]

impl<'a, Id, T> GcErase<'a, Id> for [T; 20] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 20]

impl<'a, Id, T> GcErase<'a, Id> for [T; 24] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 24]

impl<'a, Id, T> GcErase<'a, Id> for [T; 32] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 32]

impl<'a, Id, T> GcErase<'a, Id> for [T; 48] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 48]

impl<'a, Id, T> GcErase<'a, Id> for [T; 64] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 64]

impl<'a, Id, T> GcErase<'a, Id> for [T; 100] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 100]

impl<'a, Id, T> GcErase<'a, Id> for [T; 128] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 128]

impl<'a, Id, T> GcErase<'a, Id> for [T; 256] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 256]

impl<'a, Id, T> GcErase<'a, Id> for [T; 512] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 512]

impl<'a, Id, T> GcErase<'a, Id> for [T; 1024] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 1024]

impl<'a, Id, T> GcErase<'a, Id> for [T; 2048] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 2048]

impl<'a, Id, T> GcErase<'a, Id> for [T; 4096] where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = [<T as GcErase<'a, Id>>::Erased; 4096]

impl<'a, Id, T> GcErase<'a, Id> for &'a T where
    Id: CollectorId,
    T: NullTrace
[src]

See impl of GcRebrand for why we require T: NullTrace

type Erased = &'a T

impl<'a, Id, T> GcErase<'a, Id> for &'a mut T where
    Id: CollectorId,
    T: NullTrace
[src]

TODO: We currently require NullTrace for T

impl<'a, Id, T> GcErase<'a, Id> for Option<T> where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Trace
[src]

type Erased = Option<<T as GcErase<'a, Id>>::Erased>

impl<'a, Id, T> GcErase<'a, Id> for Wrapping<T> where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Trace
[src]

type Erased = Wrapping<<T as GcErase<'a, Id>>::Erased>

impl<'a, Id, T> GcErase<'a, Id> for Vec<T> where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Trace
[src]

type Erased = Vec<<T as GcErase<'a, Id>>::Erased>

impl<'a, Id, T> GcErase<'a, Id> for Box<T> where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Trace
[src]

type Erased = Box<<T as GcErase<'a, Id>>::Erased>

impl<'a, Id, T> GcErase<'a, Id> for Rc<T> where
    Id: CollectorId,
    T: GcErase<'a, Id> + TraceImmutable,
    <T as GcErase<'a, Id>>::Erased: TraceImmutable
[src]

type Erased = Rc<<T as GcErase<'a, Id>>::Erased>

impl<'a, Id, T> GcErase<'a, Id> for Arc<T> where
    Id: CollectorId,
    T: GcErase<'a, Id> + TraceImmutable,
    <T as GcErase<'a, Id>>::Erased: TraceImmutable
[src]

type Erased = Arc<<T as GcErase<'a, Id>>::Erased>

impl<'a, Id: CollectorId> GcErase<'a, Id> for String[src]

type Erased = Self

impl<'a, Id, K, V> GcErase<'a, Id> for HashMap<K, V> where
    Id: CollectorId,
    K: TraceImmutable + GcErase<'a, Id>,
    V: GcErase<'a, Id>,
    <K as GcErase<'a, Id>>::Erased: TraceImmutable + Sized,
    <V as GcErase<'a, Id>>::Erased: Sized
[src]

type Erased = HashMap<<K as GcErase<'a, Id>>::Erased, <V as GcErase<'a, Id>>::Erased>

impl<'a, Id, V> GcErase<'a, Id> for HashSet<V> where
    Id: CollectorId,
    V: GcErase<'a, Id> + TraceImmutable,
    <V as GcErase<'a, Id>>::Erased: TraceImmutable
[src]

type Erased = HashSet<<V as GcErase<'a, Id>>::Erased>

Loading content...

Implementors

impl<'a, Id, T> GcErase<'a, Id> for AssumeNotTraced<T> where
    Id: CollectorId,
    T: GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: Trace
[src]

type Erased = AssumeNotTraced<<T as GcErase<'a, Id>>::Erased>

impl<'gc, 'a, T, Id> GcErase<'a, Id> for Gc<'gc, T, Id> where
    T: GcSafe + GcErase<'a, Id>,
    <T as GcErase<'a, Id>>::Erased: GcSafe,
    Id: CollectorId
[src]

type Erased = Gc<'a, <T as GcErase<'a, Id>>::Erased, Id>

impl<'min, T, Id> GcErase<'min, Id> for GcCell<T> where
    T: Trace + Copy + GcErase<'min, Id>,
    Id: CollectorId,
    T::Erased: Copy + Trace
[src]

type Erased = GcCell<T::Erased>

Loading content...