Trait zerogc::GcErase[][src]

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<'min, Id: CollectorId> GcErase<'min, Id> for i8[src]

type Erased = i8

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

type Erased = i16

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

type Erased = i32

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

type Erased = i64

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

type Erased = isize

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

type Erased = u8

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

type Erased = u16

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

type Erased = u32

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

type Erased = u64

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

type Erased = usize

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

type Erased = f32

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

type Erased = f64

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

type Erased = bool

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

type Erased = char

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

type Erased = &'static str

impl<'min, T, Id: CollectorId> GcErase<'min, Id> for PhantomData<T> where
    T: 'min, 
[src]

type Erased = Self

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

type Erased = ()

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

type Erased = (<I as GcErase<'min, Id>>::Erased,)

impl<'min, H, I, Id: CollectorId> GcErase<'min, Id> for (H, I) where
    H: GcErase<'min, Id>,
    I: GcErase<'min, Id>,
    H: Trace,
    I: Trace
[src]

type Erased = (<H as GcErase<'min, Id>>::Erased, <I as GcErase<'min, Id>>::Erased)

impl<'min, G, H, I, Id: CollectorId> GcErase<'min, Id> for (G, H, I) where
    G: GcErase<'min, Id>,
    H: GcErase<'min, Id>,
    I: GcErase<'min, Id>,
    G: Trace,
    H: Trace,
    I: Trace
[src]

type Erased = (<G as GcErase<'min, Id>>::Erased, <H as GcErase<'min, Id>>::Erased, <I as GcErase<'min, Id>>::Erased)

impl<'min, F, G, H, I, Id: CollectorId> GcErase<'min, Id> for (F, G, H, I) where
    F: GcErase<'min, Id>,
    G: GcErase<'min, Id>,
    H: GcErase<'min, Id>,
    I: GcErase<'min, Id>,
    F: Trace,
    G: Trace,
    H: Trace,
    I: Trace
[src]

type Erased = (<F as GcErase<'min, Id>>::Erased, <G as GcErase<'min, Id>>::Erased, <H as GcErase<'min, Id>>::Erased, <I as GcErase<'min, Id>>::Erased)

impl<'min, E, F, G, H, I, Id: CollectorId> GcErase<'min, Id> for (E, F, G, H, I) where
    E: GcErase<'min, Id>,
    F: GcErase<'min, Id>,
    G: GcErase<'min, Id>,
    H: GcErase<'min, Id>,
    I: GcErase<'min, Id>,
    E: Trace,
    F: Trace,
    G: Trace,
    H: Trace,
    I: Trace
[src]

type Erased = (<E as GcErase<'min, Id>>::Erased, <F as GcErase<'min, Id>>::Erased, <G as GcErase<'min, Id>>::Erased, <H as GcErase<'min, Id>>::Erased, <I as GcErase<'min, Id>>::Erased)

impl<'min, D, E, F, G, H, I, Id: CollectorId> GcErase<'min, Id> for (D, E, F, G, H, I) where
    D: GcErase<'min, Id>,
    E: GcErase<'min, Id>,
    F: GcErase<'min, Id>,
    G: GcErase<'min, Id>,
    H: GcErase<'min, Id>,
    I: GcErase<'min, Id>,
    D: Trace,
    E: Trace,
    F: Trace,
    G: Trace,
    H: Trace,
    I: Trace
[src]

type Erased = (<D as GcErase<'min, Id>>::Erased, <E as GcErase<'min, Id>>::Erased, <F as GcErase<'min, Id>>::Erased, <G as GcErase<'min, Id>>::Erased, <H as GcErase<'min, Id>>::Erased, <I as GcErase<'min, Id>>::Erased)

impl<'min, C, D, E, F, G, H, I, Id: CollectorId> GcErase<'min, Id> for (C, D, E, F, G, H, I) where
    C: GcErase<'min, Id>,
    D: GcErase<'min, Id>,
    E: GcErase<'min, Id>,
    F: GcErase<'min, Id>,
    G: GcErase<'min, Id>,
    H: GcErase<'min, Id>,
    I: GcErase<'min, Id>,
    C: Trace,
    D: Trace,
    E: Trace,
    F: Trace,
    G: Trace,
    H: Trace,
    I: Trace
[src]

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

impl<'min, B, C, D, E, F, G, H, I, Id: CollectorId> GcErase<'min, Id> for (B, C, D, E, F, G, H, I) where
    B: GcErase<'min, Id>,
    C: GcErase<'min, Id>,
    D: GcErase<'min, Id>,
    E: GcErase<'min, Id>,
    F: GcErase<'min, Id>,
    G: GcErase<'min, Id>,
    H: GcErase<'min, Id>,
    I: GcErase<'min, Id>,
    B: Trace,
    C: Trace,
    D: Trace,
    E: Trace,
    F: Trace,
    G: Trace,
    H: Trace,
    I: Trace
[src]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

type Erased = &'a T

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

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

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

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

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

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

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

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

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

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

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

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

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

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

type Erased = String

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

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

impl<'min, T: TraceImmutable, Id: CollectorId> GcErase<'min, Id> for HashSet<T> where
    <T as GcErase<'min, Id>>::Erased: TraceImmutable + GcErase<'min, Id>,
    T: TraceImmutable + GcErase<'min, Id>,
    T: Trace
[src]

type Erased = HashSet<<T as GcErase<'min, Id>>::Erased>

Loading content...

Implementors

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>

impl<'min, T, Id: CollectorId> GcErase<'min, Id> for AssumeNotTraced<T> where
    T: 'min, 
[src]

Loading content...