Skip to main content

Erasable

Trait Erasable 

Source
pub trait Erasable: Copy {
    type Storage: Copy;
}
Expand description

Trait for types that can be erased into Erased<Self>.

Erasing and unerasing values is performed by erase_val and restore_val.

FIXME: This whole trait could potentially be replaced by T: Copy and the storage type [u8; size_of::<T>()] when support for that is more mature.

Required Associated Types§

Source

type Storage: Copy

Storage type to used for erased values of this type. Should be [u8; N], where N is equal to size_of::<Self>.

ErasedData wraps this storage type in MaybeUninit to ensure that transmutes to/from erased storage are well-defined.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl Erasable for (&CrateInherentImpls, Result<(), ErrorGuaranteed>)

Source§

impl Erasable for ()

Source§

type Storage = [u8; 0]

Source§

impl Erasable for (QueryResult<'_>, &Probe<TyCtxt<'_>>)

Source§

impl Erasable for Constness

Source§

type Storage = [u8; 1]

Source§

impl Erasable for CrateDepKind

Source§

type Storage = [u8; 1]

Source§

impl Erasable for DefId

Source§

type Storage = [u8; 8]

Source§

impl Erasable for DefKind

Source§

type Storage = [u8; 3]

Source§

impl Erasable for Defaultness

Source§

type Storage = [u8; 1]

Source§

impl Erasable for ExpnId

Source§

type Storage = [u8; 8]

Source§

impl Erasable for HirId

Source§

type Storage = [u8; 8]

Source§

impl Erasable for Limits

Source§

impl Erasable for MaybeOwner<'_>

Source§

impl Erasable for OpaqueTyOrigin<DefId>

Source§

impl Erasable for OptLevel

Source§

type Storage = [u8; 1]

Source§

impl Erasable for Option<&OsStr>

Source§

impl Erasable for Option<&[PreciseCapturingArgKind<Symbol, Symbol>]>

Source§

impl Erasable for Option<(ConstValue, Ty<'_>)>

Source§

impl Erasable for Option<(DefId, EntryFnType)>

Source§

impl Erasable for Option<Align>

Source§

type Storage = [u8; 2]

Source§

impl Erasable for Option<AllocatorKind>

Source§

type Storage = [u8; 1]

Source§

impl Erasable for Option<AsyncDestructor>

Source§

type Storage = [u8; 8]

Source§

impl Erasable for Option<ConstStability>

Source§

impl Erasable for Option<CoroutineKind>

Source§

type Storage = [u8; 2]

Source§

impl Erasable for Option<CrateNum>

Source§

type Storage = [u8; 4]

Source§

impl Erasable for Option<DefId>

Source§

type Storage = [u8; 8]

Source§

impl Erasable for Option<DefaultBodyStability>

Source§

impl Erasable for Option<DeprecationEntry>

Source§

impl Erasable for Option<Destructor>

Source§

type Storage = [u8; 8]

Source§

impl Erasable for Option<EarlyBinder<'_, Ty<'_>>>

Source§

type Storage = [u8; 8]

Source§

impl Erasable for Option<IntrinsicDef>

Source§

type Storage = [u8; 8]

Source§

impl Erasable for Option<LocalDefId>

Source§

type Storage = [u8; 4]

Source§

impl Erasable for Option<PanicStrategy>

Source§

type Storage = [u8; 1]

Source§

impl Erasable for Option<ScalarInt>

Source§

impl Erasable for Option<Span>

Source§

impl Erasable for Option<Stability>

Source§

impl Erasable for Option<Svh>

Source§

impl Erasable for Option<Value<'_>>

Source§

impl Erasable for Option<usize>

Source§

impl Erasable for PanicStrategy

Source§

type Storage = [u8; 1]

Source§

impl Erasable for Result<&FnAbi<'_, Ty<'_>>, &FnAbiError<'_>>

Source§

impl Erasable for Result<&ImplSource<'_, ()>, CodegenObligationError>

Source§

impl Erasable for Result<&List<Ty<'_>>, AlwaysRequiresDrop>

Source§

type Storage = [u8; 8]

Source§

impl Erasable for Result<&TokenStream, ()>

Source§

type Storage = [u8; 8]

Source§

impl Erasable for Result<(&Steal<Thir<'_>>, ExprId), ErrorGuaranteed>

Source§

impl Erasable for Result<(&[Spanned<MonoItem<'_>>], &[Spanned<MonoItem<'_>>]), NormalizationErrorInMono>

Source§

impl Erasable for Result<(), ErrorGuaranteed>

Source§

type Storage = [u8; 1]

Source§

impl Erasable for Result<CoerceUnsizedInfo, ErrorGuaranteed>

Source§

type Storage = [u8; 4]

Source§

impl Erasable for Result<ConstAlloc<'_>, ErrorHandled>

Source§

impl Erasable for Result<ConstValue, ErrorHandled>

Source§

impl Erasable for Result<EvaluationResult, OverflowError>

Source§

type Storage = [u8; 2]

Source§

impl Erasable for Result<GenericArg<'_>, NoSolution>

Source§

type Storage = [u8; 8]

Source§

impl Erasable for Result<Option<EarlyBinder<'_, Const<'_>>>, ErrorGuaranteed>

Source§

impl Erasable for Result<Option<Instance<'_>>, ErrorGuaranteed>

Source§

impl Erasable for Result<TyAndLayout<'_, Ty<'_>>, &LayoutError<'_>>

Source§

impl Erasable for Result<bool, &LayoutError<'_>>

Source§

impl Erasable for Span

Source§

type Storage = [u8; 8]

Source§

impl Erasable for Svh

Source§

impl Erasable for Symbol

Source§

type Storage = [u8; 4]

Source§

impl Erasable for SymbolManglingVersion

Source§

type Storage = [u8; 1]

Source§

impl Erasable for bool

Source§

type Storage = [u8; 1]

Source§

impl Erasable for usize

Source§

type Storage = [u8; 8]

Source§

impl<T0, T1> Erasable for (&T0, &T1)

Source§

impl<T0, T1> Erasable for (&[T0], &[T1])

Source§

impl<T> Erasable for &T

Source§

type Storage = [u8; 8]

Source§

impl<T> Erasable for &[T]

Source§

impl<T> Erasable for Option<&T>

Source§

type Storage = [u8; 8]

Source§

impl<T> Erasable for Result<&T, ErrorGuaranteed>

Source§

type Storage = [u8; 8]

Source§

impl<T> Erasable for Result<&T, NoSolution>

Source§

type Storage = [u8; 8]

Implementors§

Source§

impl Erasable for AdtDef<'_>

Source§

type Storage = [u8; 8]

Source§

impl Erasable for AllocId

Source§

type Storage = [u8; 8]

Source§

impl Erasable for AnonConstKind

Source§

type Storage = [u8; 1]

Source§

impl Erasable for AssocItem

Source§

impl Erasable for Asyncness

Source§

type Storage = [u8; 1]

Source§

impl Erasable for Binder<'_, CoroutineWitnessTypes<TyCtxt<'_>>>

Source§

impl Erasable for Binder<'_, FnSig<'_>>

Source§

impl Erasable for ClosureTypeInfo<'_>

Source§

impl Erasable for Const<'_>

Source§

type Storage = [u8; 8]

Source§

impl Erasable for ConstConditions<'_>

Source§

impl Erasable for ConstQualifs

Source§

type Storage = [u8; 4]

Source§

impl Erasable for ConstValue

Source§

impl Erasable for EvalStaticInitializerRawResult<'_>

Source§

impl Erasable for EvalToValTreeResult<'_>

Source§

impl Erasable for GenericPredicates<'_>

Source§

impl Erasable for ImplTraitHeader<'_>

Source§

impl Erasable for InhabitedPredicate<'_>

Source§

impl Erasable for MethodAutoderefStepsResult<'_>

Source§

impl Erasable for MonoItemPartitions<'_>

Source§

impl Erasable for ObjectLifetimeDefault

Source§

type Storage = [u8; 8]

Source§

impl Erasable for ParamEnv<'_>

Source§

type Storage = [u8; 8]

Source§

impl Erasable for ProjectedMaybeOwner<'_>

Source§

impl Erasable for SanitizerFnAttrs

Source§

type Storage = [u8; 4]

Source§

impl Erasable for SymbolName<'_>

Source§

impl Erasable for Ty<'_>

Source§

type Storage = [u8; 8]

Source§

impl Erasable for TypingEnv<'_>

Source§

impl Erasable for Visibility<DefId>

Source§

type Storage = [u8; 8]

Source§

impl<H, T> Erasable for &RawList<H, T>

Source§

type Storage = [u8; 8]

Source§

impl<T: Erasable> Erasable for EarlyBinder<'_, T>