Skip to main content

ErasableGeneric

Trait ErasableGeneric 

Source
pub unsafe trait ErasableGeneric {
    type Repr: 'static;
}
Expand description

Private marker trait for erasable generics - types with this trait have the same repr for all generic param values, and can therefore be transmuted on the singular Repr type representation on ABI boundaries.

§Safety

This type must only be implemented on types known to be repr equivalent to their Repr type.

Required Associated Types§

Source

type Repr: 'static

The singular concrete type that all generic variants can be transmuted on

Implementations on Foreign Types§

Source§

impl ErasableGeneric for &str

Source§

type Repr = &'static str

Source§

impl ErasableGeneric for bool

Source§

impl ErasableGeneric for char

Source§

impl ErasableGeneric for f32

Source§

impl ErasableGeneric for i8

Source§

impl ErasableGeneric for i16

Source§

impl ErasableGeneric for i32

Source§

impl ErasableGeneric for isize

Source§

impl ErasableGeneric for u8

Source§

impl ErasableGeneric for u16

Source§

impl ErasableGeneric for u32

Source§

impl ErasableGeneric for ()

Source§

impl ErasableGeneric for usize

Source§

impl<'a, A, B, C, D, E, F, G, H, R> ErasableGeneric for &'a (dyn Fn(A, B, C, D, E, F, G, H) -> R + 'a)

Source§

impl<'a, A, B, C, D, E, F, G, H, R> ErasableGeneric for &'a mut (dyn FnMut(A, B, C, D, E, F, G, H) -> R + 'a)

Source§

impl<'a, A, B, C, D, E, F, G, R> ErasableGeneric for &'a (dyn Fn(A, B, C, D, E, F, G) -> R + 'a)

Source§

type Repr = &'static dyn Fn(<A as ErasableGeneric>::Repr, <B as ErasableGeneric>::Repr, <C as ErasableGeneric>::Repr, <D as ErasableGeneric>::Repr, <E as ErasableGeneric>::Repr, <F as ErasableGeneric>::Repr, <G as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr

Source§

impl<'a, A, B, C, D, E, F, G, R> ErasableGeneric for &'a mut (dyn FnMut(A, B, C, D, E, F, G) -> R + 'a)

Source§

impl<'a, A, B, C, D, E, F, R> ErasableGeneric for &'a (dyn Fn(A, B, C, D, E, F) -> R + 'a)

Source§

type Repr = &'static dyn Fn(<A as ErasableGeneric>::Repr, <B as ErasableGeneric>::Repr, <C as ErasableGeneric>::Repr, <D as ErasableGeneric>::Repr, <E as ErasableGeneric>::Repr, <F as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr

Source§

impl<'a, A, B, C, D, E, F, R> ErasableGeneric for &'a mut (dyn FnMut(A, B, C, D, E, F) -> R + 'a)

Source§

type Repr = &'static dyn FnMut(<A as ErasableGeneric>::Repr, <B as ErasableGeneric>::Repr, <C as ErasableGeneric>::Repr, <D as ErasableGeneric>::Repr, <E as ErasableGeneric>::Repr, <F as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr

Source§

impl<'a, A, B, C, D, E, R> ErasableGeneric for &'a (dyn Fn(A, B, C, D, E) -> R + 'a)

Source§

type Repr = &'static dyn Fn(<A as ErasableGeneric>::Repr, <B as ErasableGeneric>::Repr, <C as ErasableGeneric>::Repr, <D as ErasableGeneric>::Repr, <E as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr

Source§

impl<'a, A, B, C, D, E, R> ErasableGeneric for &'a mut (dyn FnMut(A, B, C, D, E) -> R + 'a)

Source§

type Repr = &'static dyn FnMut(<A as ErasableGeneric>::Repr, <B as ErasableGeneric>::Repr, <C as ErasableGeneric>::Repr, <D as ErasableGeneric>::Repr, <E as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr

Source§

impl<'a, A, B, C, D, R> ErasableGeneric for &'a (dyn Fn(A, B, C, D) -> R + 'a)

Source§

type Repr = &'static dyn Fn(<A as ErasableGeneric>::Repr, <B as ErasableGeneric>::Repr, <C as ErasableGeneric>::Repr, <D as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr

Source§

impl<'a, A, B, C, D, R> ErasableGeneric for &'a mut (dyn FnMut(A, B, C, D) -> R + 'a)

Source§

type Repr = &'static dyn FnMut(<A as ErasableGeneric>::Repr, <B as ErasableGeneric>::Repr, <C as ErasableGeneric>::Repr, <D as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr

Source§

impl<'a, A, B, C, R> ErasableGeneric for &'a (dyn Fn(A, B, C) -> R + 'a)

Source§

type Repr = &'static dyn Fn(<A as ErasableGeneric>::Repr, <B as ErasableGeneric>::Repr, <C as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr

Source§

impl<'a, A, B, C, R> ErasableGeneric for &'a mut (dyn FnMut(A, B, C) -> R + 'a)

Source§

type Repr = &'static dyn FnMut(<A as ErasableGeneric>::Repr, <B as ErasableGeneric>::Repr, <C as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr

Source§

impl<'a, A, B, R> ErasableGeneric for &'a (dyn Fn(A, B) -> R + 'a)

Source§

type Repr = &'static dyn Fn(<A as ErasableGeneric>::Repr, <B as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr

Source§

impl<'a, A, B, R> ErasableGeneric for &'a mut (dyn FnMut(A, B) -> R + 'a)

Source§

type Repr = &'static dyn FnMut(<A as ErasableGeneric>::Repr, <B as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr

Source§

impl<'a, A, R> ErasableGeneric for &'a (dyn Fn(&A) -> R + 'a)

Source§

type Repr = &'static dyn Fn(<A as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr

Source§

impl<'a, A, R> ErasableGeneric for &'a (dyn Fn(A) -> R + 'a)

Source§

type Repr = &'static dyn Fn(<A as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr

Source§

impl<'a, A, R> ErasableGeneric for &'a mut (dyn FnMut(&A) -> R + 'a)

Source§

type Repr = &'static dyn FnMut(<A as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr

Source§

impl<'a, A, R> ErasableGeneric for &'a mut (dyn FnMut(A) -> R + 'a)

Source§

type Repr = &'static dyn FnMut(<A as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr

Source§

impl<'a, R> ErasableGeneric for &'a (dyn Fn() -> R + 'a)
where R: ErasableGeneric,

Source§

type Repr = &'static dyn Fn() -> <R as ErasableGeneric>::Repr

Source§

impl<'a, R> ErasableGeneric for &'a mut (dyn FnMut() -> R + 'a)
where R: ErasableGeneric,

Source§

type Repr = &'static dyn FnMut() -> <R as ErasableGeneric>::Repr

Source§

impl<T: ErasableGeneric> ErasableGeneric for &[T]

Source§

type Repr = &'static [<T as ErasableGeneric>::Repr]

Source§

impl<T: ErasableGeneric> ErasableGeneric for Option<T>

Source§

impl<T: ErasableGeneric> ErasableGeneric for *const T

Source§

impl<T: ErasableGeneric> ErasableGeneric for &T

Source§

type Repr = &'static <T as ErasableGeneric>::Repr

Source§

impl<T: ErasableGeneric> ErasableGeneric for &mut T

Source§

type Repr = &'static mut <T as ErasableGeneric>::Repr

Source§

impl<T: ErasableGeneric> ErasableGeneric for Box<[T]>

Source§

impl<T: ErasableGeneric> ErasableGeneric for Vec<T>

Source§

impl<T: ErasableGeneric, E: ErasableGeneric> ErasableGeneric for Result<T, E>

Implementors§

Source§

impl ErasableGeneric for JsError

Source§

impl ErasableGeneric for JsValue

Source§

impl ErasableGeneric for Null

Source§

impl ErasableGeneric for Undefined

Source§

impl<'a, 'b, A, B, C, D, E, F, G, H, R> ErasableGeneric for ImmediateClosure<'a, dyn Fn(A, B, C, D, E, F, G, H) -> R + 'b>

Source§

impl<'a, 'b, A, B, C, D, E, F, G, H, R> ErasableGeneric for ImmediateClosure<'a, dyn FnMut(A, B, C, D, E, F, G, H) -> R + 'b>

Source§

impl<'a, 'b, A, B, C, D, E, F, G, R> ErasableGeneric for ImmediateClosure<'a, dyn Fn(A, B, C, D, E, F, G) -> R + 'b>

Source§

type Repr = &'static ImmediateClosure<'static, dyn Fn(<A as ErasableGeneric>::Repr, <B as ErasableGeneric>::Repr, <C as ErasableGeneric>::Repr, <D as ErasableGeneric>::Repr, <E as ErasableGeneric>::Repr, <F as ErasableGeneric>::Repr, <G as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr>

Source§

impl<'a, 'b, A, B, C, D, E, F, G, R> ErasableGeneric for ImmediateClosure<'a, dyn FnMut(A, B, C, D, E, F, G) -> R + 'b>

Source§

impl<'a, 'b, A, B, C, D, E, F, R> ErasableGeneric for ImmediateClosure<'a, dyn Fn(A, B, C, D, E, F) -> R + 'b>

Source§

type Repr = &'static ImmediateClosure<'static, dyn Fn(<A as ErasableGeneric>::Repr, <B as ErasableGeneric>::Repr, <C as ErasableGeneric>::Repr, <D as ErasableGeneric>::Repr, <E as ErasableGeneric>::Repr, <F as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr>

Source§

impl<'a, 'b, A, B, C, D, E, F, R> ErasableGeneric for ImmediateClosure<'a, dyn FnMut(A, B, C, D, E, F) -> R + 'b>

Source§

type Repr = &'static ImmediateClosure<'static, dyn FnMut(<A as ErasableGeneric>::Repr, <B as ErasableGeneric>::Repr, <C as ErasableGeneric>::Repr, <D as ErasableGeneric>::Repr, <E as ErasableGeneric>::Repr, <F as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr>

Source§

impl<'a, 'b, A, B, C, D, E, R> ErasableGeneric for ImmediateClosure<'a, dyn Fn(A, B, C, D, E) -> R + 'b>

Source§

type Repr = &'static ImmediateClosure<'static, dyn Fn(<A as ErasableGeneric>::Repr, <B as ErasableGeneric>::Repr, <C as ErasableGeneric>::Repr, <D as ErasableGeneric>::Repr, <E as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr>

Source§

impl<'a, 'b, A, B, C, D, E, R> ErasableGeneric for ImmediateClosure<'a, dyn FnMut(A, B, C, D, E) -> R + 'b>

Source§

type Repr = &'static ImmediateClosure<'static, dyn FnMut(<A as ErasableGeneric>::Repr, <B as ErasableGeneric>::Repr, <C as ErasableGeneric>::Repr, <D as ErasableGeneric>::Repr, <E as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr>

Source§

impl<'a, 'b, A, B, C, D, R> ErasableGeneric for ImmediateClosure<'a, dyn Fn(A, B, C, D) -> R + 'b>

Source§

type Repr = &'static ImmediateClosure<'static, dyn Fn(<A as ErasableGeneric>::Repr, <B as ErasableGeneric>::Repr, <C as ErasableGeneric>::Repr, <D as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr>

Source§

impl<'a, 'b, A, B, C, D, R> ErasableGeneric for ImmediateClosure<'a, dyn FnMut(A, B, C, D) -> R + 'b>

Source§

type Repr = &'static ImmediateClosure<'static, dyn FnMut(<A as ErasableGeneric>::Repr, <B as ErasableGeneric>::Repr, <C as ErasableGeneric>::Repr, <D as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr>

Source§

impl<'a, 'b, A, B, C, R> ErasableGeneric for ImmediateClosure<'a, dyn Fn(A, B, C) -> R + 'b>

Source§

type Repr = &'static ImmediateClosure<'static, dyn Fn(<A as ErasableGeneric>::Repr, <B as ErasableGeneric>::Repr, <C as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr>

Source§

impl<'a, 'b, A, B, C, R> ErasableGeneric for ImmediateClosure<'a, dyn FnMut(A, B, C) -> R + 'b>

Source§

type Repr = &'static ImmediateClosure<'static, dyn FnMut(<A as ErasableGeneric>::Repr, <B as ErasableGeneric>::Repr, <C as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr>

Source§

impl<'a, 'b, A, B, R> ErasableGeneric for ImmediateClosure<'a, dyn Fn(A, B) -> R + 'b>

Source§

type Repr = &'static ImmediateClosure<'static, dyn Fn(<A as ErasableGeneric>::Repr, <B as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr>

Source§

impl<'a, 'b, A, B, R> ErasableGeneric for ImmediateClosure<'a, dyn FnMut(A, B) -> R + 'b>

Source§

type Repr = &'static ImmediateClosure<'static, dyn FnMut(<A as ErasableGeneric>::Repr, <B as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr>

Source§

impl<'a, 'b, A, R> ErasableGeneric for ImmediateClosure<'a, dyn Fn(&A) -> R + 'b>

Source§

type Repr = &'static ImmediateClosure<'static, dyn Fn(<A as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr>

Source§

impl<'a, 'b, A, R> ErasableGeneric for ImmediateClosure<'a, dyn Fn(A) -> R + 'b>

Source§

type Repr = &'static ImmediateClosure<'static, dyn Fn(<A as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr>

Source§

impl<'a, 'b, A, R> ErasableGeneric for ImmediateClosure<'a, dyn FnMut(&A) -> R + 'b>

Source§

type Repr = &'static ImmediateClosure<'static, dyn FnMut(<A as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr>

Source§

impl<'a, 'b, A, R> ErasableGeneric for ImmediateClosure<'a, dyn FnMut(A) -> R + 'b>

Source§

type Repr = &'static ImmediateClosure<'static, dyn FnMut(<A as ErasableGeneric>::Repr) -> <R as ErasableGeneric>::Repr>

Source§

impl<'a, 'b, R> ErasableGeneric for ImmediateClosure<'a, dyn Fn() -> R + 'b>
where R: ErasableGeneric,

Source§

type Repr = &'static ImmediateClosure<'static, dyn Fn() -> <R as ErasableGeneric>::Repr>

Source§

impl<'a, 'b, R> ErasableGeneric for ImmediateClosure<'a, dyn FnMut() -> R + 'b>
where R: ErasableGeneric,

Source§

type Repr = &'static ImmediateClosure<'static, dyn FnMut() -> <R as ErasableGeneric>::Repr>

Source§

impl<T> ErasableGeneric for JsOption<T>

Source§

impl<T: ?Sized + WasmClosure> ErasableGeneric for ScopedClosure<'_, T>

Source§

type Repr = ScopedClosure<'static, dyn FnMut()>