Trait abi_stable::StableAbi

source ·
pub unsafe trait StableAbi: GetStaticEquivalent_ {
    type IsNonZeroType: Boolean;

    const LAYOUT: &'static TypeLayout;
    const ABI_CONSTS: AbiConsts = _;
}
Expand description

Represents a type whose layout is stable.

This trait can be derived using #[derive(StableAbi)].

Safety

The layout specified in LAYOUT must be correct, otherwise type checking when loading a dynamic library would be unsound, and passing this into a dynamic library would be equivalent to transmuting it.

Caveats

This trait cannot be directly implemented for functions that take lifetime parameters, because of that, #[derive(StableAbi)] detects the presence of extern fn types in type definitions.

Required Associated Types§

source

type IsNonZeroType: Boolean

Whether this type has a single invalid bit-pattern.

Possible values: True/False

Some standard library types have a single value that is invalid for them eg:0,null. these types are the only ones which can be stored in a Option<_> that implements StableAbi.

For an alternative to Option<T> for types where IsNonZeroType = False, you can use ROption.

Non-exhaustive list of std types that are NonZero:

  • &T (any T).

  • &mut T (any T).

  • extern "C" fn().

  • std::ptr::NonNull

  • std::num::NonZero*

Required Associated Constants§

source

const LAYOUT: &'static TypeLayout

The layout of the type provided by implementors.

Provided Associated Constants§

source

const ABI_CONSTS: AbiConsts = _

const-equivalents of the associated types.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl StableAbi for c_void

source§

impl StableAbi for Void

source§

impl StableAbi for bool

source§

impl StableAbi for f32

source§

impl StableAbi for f64

source§

impl StableAbi for i8

source§

impl StableAbi for i16

source§

impl StableAbi for i32

source§

impl StableAbi for i64

source§

impl StableAbi for isize

source§

impl StableAbi for u8

source§

impl StableAbi for u16

source§

impl StableAbi for u32

source§

impl StableAbi for u64

source§

impl StableAbi for ()

source§

impl StableAbi for usize

source§

impl StableAbi for PhantomPinned

source§

impl StableAbi for NonZeroI8

§

type IsNonZeroType = True

source§

const LAYOUT: &'static TypeLayout = _

source§

impl StableAbi for NonZeroI16

§

type IsNonZeroType = True

source§

const LAYOUT: &'static TypeLayout = _

source§

impl StableAbi for NonZeroI32

§

type IsNonZeroType = True

source§

const LAYOUT: &'static TypeLayout = _

source§

impl StableAbi for NonZeroI64

§

type IsNonZeroType = True

source§

const LAYOUT: &'static TypeLayout = _

source§

impl StableAbi for NonZeroIsize

§

type IsNonZeroType = True

source§

const LAYOUT: &'static TypeLayout = _

source§

impl StableAbi for NonZeroU8

§

type IsNonZeroType = True

source§

const LAYOUT: &'static TypeLayout = _

source§

impl StableAbi for NonZeroU16

§

type IsNonZeroType = True

source§

const LAYOUT: &'static TypeLayout = _

source§

impl StableAbi for NonZeroU32

§

type IsNonZeroType = True

source§

const LAYOUT: &'static TypeLayout = _

source§

impl StableAbi for NonZeroU64

§

type IsNonZeroType = True

source§

const LAYOUT: &'static TypeLayout = _

source§

impl StableAbi for NonZeroUsize

§

type IsNonZeroType = True

source§

const LAYOUT: &'static TypeLayout = _

source§

impl StableAbi for AtomicBool

source§

impl StableAbi for AtomicI8

source§

impl StableAbi for AtomicI16

source§

impl StableAbi for AtomicI32

source§

impl StableAbi for AtomicI64

source§

impl StableAbi for AtomicIsize

source§

impl StableAbi for AtomicU8

source§

impl StableAbi for AtomicU16

source§

impl StableAbi for AtomicU32

source§

impl StableAbi for AtomicU64

source§

impl StableAbi for AtomicUsize

source§

impl StableAbi for extern "C" fn()

§

type IsNonZeroType = True

source§

const LAYOUT: &'static TypeLayout = _

source§

impl StableAbi for unsafe extern "C" fn()

§

type IsNonZeroType = True

source§

const LAYOUT: &'static TypeLayout = _

source§

impl<'a, T> StableAbi for &'a T
where T: 'a + StableAbi,

§

type IsNonZeroType = True

source§

const LAYOUT: &'static TypeLayout = _

source§

impl<'a, T> StableAbi for &'a mut T
where T: 'a + StableAbi,

§

type IsNonZeroType = True

source§

const LAYOUT: &'static TypeLayout = _

source§

impl<P> StableAbi for Cell<P>
where P: StableAbi,

source§

impl<P> StableAbi for UnsafeCell<P>
where P: StableAbi,

source§

impl<P> StableAbi for ManuallyDrop<P>
where P: StableAbi,

source§

impl<P> StableAbi for Wrapping<P>
where P: StableAbi,

source§

impl<P> StableAbi for Pin<P>
where P: StableAbi,

source§

impl<T0> StableAbi for PhantomData<(T0,)>
where T0: StableAbi,

source§

impl<T0, T1> StableAbi for PhantomData<(T0, T1)>
where T0: StableAbi, T1: StableAbi,

source§

impl<T0, T1, T2> StableAbi for PhantomData<(T0, T1, T2)>
where T0: StableAbi, T1: StableAbi, T2: StableAbi,

source§

impl<T0, T1, T2, T3> StableAbi for PhantomData<(T0, T1, T2, T3)>
where T0: StableAbi, T1: StableAbi, T2: StableAbi, T3: StableAbi,

source§

impl<T0, T1, T2, T3, T4> StableAbi for PhantomData<(T0, T1, T2, T3, T4)>
where T0: StableAbi, T1: StableAbi, T2: StableAbi, T3: StableAbi, T4: StableAbi,

source§

impl<T0, T1, T2, T3, T4, T5> StableAbi for PhantomData<(T0, T1, T2, T3, T4, T5)>
where T0: StableAbi, T1: StableAbi, T2: StableAbi, T3: StableAbi, T4: StableAbi, T5: StableAbi,

source§

impl<T0, T1, T2, T3, T4, T5, T6> StableAbi for PhantomData<(T0, T1, T2, T3, T4, T5, T6)>
where T0: StableAbi, T1: StableAbi, T2: StableAbi, T3: StableAbi, T4: StableAbi, T5: StableAbi, T6: StableAbi,

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7> StableAbi for PhantomData<(T0, T1, T2, T3, T4, T5, T6, T7)>
where T0: StableAbi, T1: StableAbi, T2: StableAbi, T3: StableAbi, T4: StableAbi, T5: StableAbi, T6: StableAbi, T7: StableAbi,

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8> StableAbi for PhantomData<(T0, T1, T2, T3, T4, T5, T6, T7, T8)>
where T0: StableAbi, T1: StableAbi, T2: StableAbi, T3: StableAbi, T4: StableAbi, T5: StableAbi, T6: StableAbi, T7: StableAbi, T8: StableAbi,

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> StableAbi for PhantomData<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)>
where T0: StableAbi, T1: StableAbi, T2: StableAbi, T3: StableAbi, T4: StableAbi, T5: StableAbi, T6: StableAbi, T7: StableAbi, T8: StableAbi, T9: StableAbi,

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> StableAbi for PhantomData<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)>
where T0: StableAbi, T1: StableAbi, T2: StableAbi, T3: StableAbi, T4: StableAbi, T5: StableAbi, T6: StableAbi, T7: StableAbi, T8: StableAbi, T9: StableAbi, T10: StableAbi,

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> StableAbi for PhantomData<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)>
where T0: StableAbi, T1: StableAbi, T2: StableAbi, T3: StableAbi, T4: StableAbi, T5: StableAbi, T6: StableAbi, T7: StableAbi, T8: StableAbi, T9: StableAbi, T10: StableAbi, T11: StableAbi,

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> StableAbi for PhantomData<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)>
where T0: StableAbi, T1: StableAbi, T2: StableAbi, T3: StableAbi, T4: StableAbi, T5: StableAbi, T6: StableAbi, T7: StableAbi, T8: StableAbi, T9: StableAbi, T10: StableAbi, T11: StableAbi, T12: StableAbi,

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> StableAbi for PhantomData<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)>
where T0: StableAbi, T1: StableAbi, T2: StableAbi, T3: StableAbi, T4: StableAbi, T5: StableAbi, T6: StableAbi, T7: StableAbi, T8: StableAbi, T9: StableAbi, T10: StableAbi, T11: StableAbi, T12: StableAbi, T13: StableAbi,

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> StableAbi for PhantomData<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)>
where T0: StableAbi, T1: StableAbi, T2: StableAbi, T3: StableAbi, T4: StableAbi, T5: StableAbi, T6: StableAbi, T7: StableAbi, T8: StableAbi, T9: StableAbi, T10: StableAbi, T11: StableAbi, T12: StableAbi, T13: StableAbi, T14: StableAbi,

source§

impl<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> StableAbi for PhantomData<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)>
where T0: StableAbi, T1: StableAbi, T2: StableAbi, T3: StableAbi, T4: StableAbi, T5: StableAbi, T6: StableAbi, T7: StableAbi, T8: StableAbi, T9: StableAbi, T10: StableAbi, T11: StableAbi, T12: StableAbi, T13: StableAbi, T14: StableAbi, T15: StableAbi,

source§

impl<T> StableAbi for Option<T>
where T: StableAbi<IsNonZeroType = True>,

Implementing abi stability for Option<T> is fine if T is a NonZero primitive type.

source§

impl<T> StableAbi for *const T
where T: StableAbi,

source§

impl<T> StableAbi for *mut T
where T: StableAbi,

source§

impl<T> StableAbi for PhantomData<T>
where T: StableAbi,

source§

impl<T> StableAbi for NonNull<T>
where T: StableAbi,

§

type IsNonZeroType = True

source§

const LAYOUT: &'static TypeLayout = _

source§

impl<T> StableAbi for AtomicPtr<T>
where T: StableAbi,

source§

impl<T> StableAbi for MaybeUninit<T>
where T: StableAbi,

source§

impl<T, const N: usize> StableAbi for [T; N]
where T: StableAbi,

Implementors§

source§

impl StableAbi for ExtraChecksError

source§

impl StableAbi for ROnceState

source§

impl StableAbi for IsLayoutChecked

source§

impl StableAbi for RootModuleError

source§

impl StableAbi for CallReferentDrop

source§

impl StableAbi for Deallocate

source§

impl StableAbi for PointerKind

source§

impl StableAbi for IsAccessible

source§

impl StableAbi for IsConditional

source§

impl StableAbi for ModReflMode

source§

impl StableAbi for RCmpOrdering

source§

impl StableAbi for RSeekFrom

source§

impl StableAbi for DiscriminantRepr

source§

impl StableAbi for FieldAccessor

source§

impl StableAbi for GenericTLData

source§

impl StableAbi for MonoTLData

source§

impl StableAbi for ReprAttr

source§

impl StableAbi for TLDataDiscriminant

source§

impl StableAbi for TLDiscriminant

source§

impl StableAbi for TLFieldOrFunction

source§

impl StableAbi for TLPrimitive

source§

impl StableAbi for CTVariant

source§

impl StableAbi for Primitive

source§

impl StableAbi for TagVariant

source§

impl StableAbi for ExtraChecks_Interface

source§

impl StableAbi for TypeChecker_Interface

source§

impl StableAbi for AbiConsts

source§

impl StableAbi for ConstGeneric

source§

impl StableAbi for CloneEqInterface

source§

impl StableAbi for CloneInterface

source§

impl StableAbi for DebugDefEqInterface

source§

impl StableAbi for DebugDisplayInterface

source§

impl StableAbi for DefaultInterface

source§

impl StableAbi for FmtWriteInterface

source§

impl StableAbi for IoWriteInterface

source§

impl StableAbi for PartialEqInterface

source§

impl StableAbi for UnpinInterface

source§

impl StableAbi for RequiredTraits

source§

impl StableAbi for TypeInfo

source§

impl StableAbi for DebugDisplayObject

source§

impl StableAbi for ROnce

source§

impl StableAbi for RawValueBox

Available on crate feature serde_json only.
source§

impl StableAbi for Module_Ref

§

type IsNonZeroType = True

source§

const LAYOUT: &'static TypeLayout = <__sabi_re::PrefixRef<Module_Prefix> as __sabi_re::StableAbi>::LAYOUT

source§

impl StableAbi for ValidTag_Interface

source§

impl StableAbi for ValidTag_Storage

source§

impl StableAbi for CAbiTestingFns

source§

impl StableAbi for AbiHeader

source§

impl StableAbi for AbiHeaderRef

source§

impl StableAbi for LibHeader

source§

impl StableAbi for RootModuleConsts

source§

impl StableAbi for NotCopyNotClone

source§

impl StableAbi for SyncSend

source§

impl StableAbi for SyncUnsend

source§

impl StableAbi for UnsyncSend

source§

impl StableAbi for UnsyncUnsend

source§

impl StableAbi for EnumInfo

source§

impl StableAbi for PTStructLayout

source§

impl StableAbi for Action_Interface

source§

impl StableAbi for ConstExample_Interface

source§

impl StableAbi for Doer_Interface

source§

impl StableAbi for VersionNumber

source§

impl StableAbi for VersionStrings

§

type IsNonZeroType = <RStr<'static> as StableAbi>::IsNonZeroType

source§

const LAYOUT: &'static TypeLayout = _

source§

impl StableAbi for RDuration

source§

impl StableAbi for RIoError

source§

impl StableAbi for RIoErrorKind

source§

impl StableAbi for RString

source§

impl StableAbi for UTypeId

source§

impl StableAbi for CompFieldAccessor

source§

impl StableAbi for CompGenericParams

source§

impl StableAbi for CompTLField

source§

impl StableAbi for CompTLFields

source§

impl StableAbi for CompTLFunction

source§

impl StableAbi for GenericTLEnum

source§

impl StableAbi for GenericTLPrefixType

source§

impl StableAbi for IncompatibleWithNonExhaustive

source§

impl StableAbi for IsExhaustive

source§

impl StableAbi for ItemInfo

source§

impl StableAbi for LifetimeIndex

source§

impl StableAbi for LifetimeIndexArray

source§

impl StableAbi for LifetimeIndexPair

source§

impl StableAbi for LifetimeRange

source§

impl StableAbi for ModPath

§

type IsNonZeroType = <NulStr<'static> as StableAbi>::IsNonZeroType

source§

const LAYOUT: &'static TypeLayout = _

source§

impl StableAbi for MonoSharedVars

source§

impl StableAbi for MonoTLEnum

source§

impl StableAbi for MonoTLPrefixType

source§

impl StableAbi for MonoTypeLayout

source§

impl StableAbi for OptionU8

source§

impl StableAbi for OptionU16

source§

impl StableAbi for SharedVars

source§

impl StableAbi for StartLen

source§

impl StableAbi for TLDiscriminants

source§

impl StableAbi for TLField

source§

impl StableAbi for TLFields

source§

impl StableAbi for TLFunction

source§

impl StableAbi for TLFunctionQualifiers

source§

impl StableAbi for TLFunctionSlice

source§

impl StableAbi for TLFunctions

source§

impl StableAbi for TLNonExhaustive

source§

impl StableAbi for TLPrefixType

source§

impl StableAbi for TypeLayout

source§

impl StableAbi for TypeLayoutIndex

source§

impl StableAbi for TypeLayoutRange

source§

impl StableAbi for CheckableTag

source§

impl StableAbi for Tag

source§

impl<'a> StableAbi for LifetimeArrayOrSlice<'a>

source§

impl<'a> StableAbi for HasherObject<'a>

source§

impl<'a> StableAbi for RawValueRef<'a>

Available on crate feature serde_json only.
source§

impl<'a> StableAbi for NulStr<'a>

source§

impl<'a> StableAbi for RStr<'a>

source§

impl<'a> StableAbi for MultipleTypeLayouts<'a>

source§

impl<'a, K, V> StableAbi for REntry<'a, K, V>
where K: __StableAbi + 'a, V: __StableAbi + 'a,

source§

impl<'a, K, V> StableAbi for Keys<'a, K, V>
where K: __StableAbi + 'a, V: __StableAbi + 'a,

source§

impl<'a, K, V> StableAbi for ROccupiedEntry<'a, K, V>
where K: __StableAbi + 'a, V: __StableAbi + 'a,

source§

impl<'a, K, V> StableAbi for RVacantEntry<'a, K, V>
where K: __StableAbi + 'a, V: __StableAbi + 'a,

source§

impl<'a, K, V> StableAbi for Values<'a, K, V>
where K: __StableAbi + 'a, V: __StableAbi + 'a,

source§

impl<'a, T> StableAbi for RMutexGuard<'a, T>
where T: __StableAbi + 'a,

source§

impl<'a, T> StableAbi for RReadGuard<'a, T>
where T: __StableAbi + 'a,

source§

impl<'a, T> StableAbi for RWriteGuard<'a, T>
where T: __StableAbi + 'a,

source§

impl<'a, T> StableAbi for MovePtr<'a, T>
where T: __StableAbi + 'a,

source§

impl<'a, T> StableAbi for RMut<'a, T>
where T: __StableAbi + 'a,

source§

impl<'a, T> StableAbi for RRef<'a, T>
where T: __StableAbi + 'a,

source§

impl<'a, T> StableAbi for RSlice<'a, T>
where T: __StableAbi + 'a,

source§

impl<'a, T> StableAbi for RSliceMut<'a, T>
where T: __StableAbi + 'a,

source§

impl<'borr, ErasedPtr, I> StableAbi for VTable_Ref<'borr, ErasedPtr, I>
where ErasedPtr: __StableAbi, I: __StableAbi + IteratorItemOrDefault<'borr> + GetSerializeProxyType<'borr> + InterfaceType, <I as IteratorItemOrDefault<'borr>>::Item: StableAbi, <I as GetSerializeProxyType<'borr>>::ProxyType: StableAbi, VTable<'borr, ErasedPtr, I>: PrefixTypeTrait,

§

type IsNonZeroType = True

source§

const LAYOUT: &'static TypeLayout = <__sabi_re::PrefixRef<VTable_Prefix<'borr, ErasedPtr, I>> as __sabi_re::StableAbi>::LAYOUT

source§

impl<'borr, P, I, EV> StableAbi for DynTrait<'borr, P, I, EV>

source§

impl<'lt, P, I, V> StableAbi for RObject<'lt, P, I, V>

source§

impl<'lt, _ErasedPtr> StableAbi for Action_TO<'lt, _ErasedPtr>
where _ErasedPtr: __GetPointerKind + __StableAbi, Action_Backend<'lt, _ErasedPtr>: StableAbi,

§

type IsNonZeroType = <RObject<'lt, _ErasedPtr, Action_Interface, VTable_Prefix<(), _ErasedPtr>> as StableAbi>::IsNonZeroType

source§

const LAYOUT: &'static TypeLayout = _

source§

impl<'lt, _ErasedPtr> StableAbi for ConstExample_TO<'lt, _ErasedPtr>
where _ErasedPtr: __GetPointerKind + __StableAbi, ConstExample_Backend<'lt, _ErasedPtr>: StableAbi,

§

type IsNonZeroType = <DynTrait<'lt, _ErasedPtr, ConstExample_Interface, PrefixRef<VTable_Prefix<(), _ErasedPtr>>> as StableAbi>::IsNonZeroType

source§

const LAYOUT: &'static TypeLayout = _

source§

impl<'lt, _ErasedPtr> StableAbi for Doer_TO<'lt, _ErasedPtr>
where _ErasedPtr: __GetPointerKind + __StableAbi, Doer_Backend<'lt, _ErasedPtr>: StableAbi,

§

type IsNonZeroType = <RObject<'lt, _ErasedPtr, Doer_Interface, VTable_Prefix<(), _ErasedPtr>> as StableAbi>::IsNonZeroType

source§

const LAYOUT: &'static TypeLayout = _

source§

impl<A> StableAbi for Tuple1<A>
where A: __StableAbi,

source§

impl<A> StableAbi for ArrayLen<A>
where A: __StableAbi,

source§

impl<A, B> StableAbi for Tuple2<A, B>
where A: __StableAbi, B: __StableAbi,

source§

impl<A, B, C> StableAbi for Tuple3<A, B, C>

source§

impl<A, B, C, D> StableAbi for Tuple4<A, B, C, D>

source§

impl<B, O> StableAbi for RCow<B, O>
where B: __StableAbi, O: __StableAbi,

source§

impl<E> StableAbi for BitArray64<E>
where E: __StableAbi,

source§

impl<E, S, I> StableAbi for NonExhaustive<E, S, I>

source§

impl<Inline> StableAbi for AlignTo1<Inline>
where Inline: __StableAbi,

source§

impl<Inline> StableAbi for AlignTo2<Inline>
where Inline: __StableAbi,

source§

impl<Inline> StableAbi for AlignTo4<Inline>
where Inline: __StableAbi,

source§

impl<Inline> StableAbi for AlignTo8<Inline>
where Inline: __StableAbi,

source§

impl<Inline> StableAbi for AlignTo16<Inline>
where Inline: __StableAbi,

source§

impl<Inline> StableAbi for AlignTo32<Inline>
where Inline: __StableAbi,

source§

impl<Inline> StableAbi for AlignTo64<Inline>
where Inline: __StableAbi,

source§

impl<Inline> StableAbi for AlignTo128<Inline>
where Inline: __StableAbi,

source§

impl<Inline> StableAbi for AlignTo256<Inline>
where Inline: __StableAbi,

source§

impl<Inline> StableAbi for AlignTo512<Inline>
where Inline: __StableAbi,

source§

impl<Inline> StableAbi for AlignTo1024<Inline>
where Inline: __StableAbi,

source§

impl<Inline> StableAbi for AlignTo2048<Inline>
where Inline: __StableAbi,

source§

impl<Inline> StableAbi for AlignTo4096<Inline>
where Inline: __StableAbi,

source§

impl<Inline> StableAbi for AlignTo8192<Inline>
where Inline: __StableAbi,

source§

impl<Inline> StableAbi for AlignTo16384<Inline>
where Inline: __StableAbi,

source§

impl<Inline> StableAbi for AlignTo32768<Inline>
where Inline: __StableAbi,

source§

impl<K, V> StableAbi for IntoIter<K, V>
where K: __StableAbi, V: __StableAbi,

source§

impl<K, V> StableAbi for MutIterInterface<K, V>
where K: __StableAbi, V: __StableAbi,

source§

impl<K, V> StableAbi for RefIterInterface<K, V>
where K: __StableAbi, V: __StableAbi,

source§

impl<K, V> StableAbi for ValIterInterface<K, V>
where K: __StableAbi, V: __StableAbi,

source§

impl<K, V, S> StableAbi for RHashMap<K, V, S>
where K: __StableAbi, V: __StableAbi,

source§

impl<M> StableAbi for RBoxError_<M>
where M: __StableAbi,

source§

impl<N> StableAbi for UnwrapEnumError<N>
where N: __StableAbi,

source§

impl<P> StableAbi for PrefixRef<P>
where P: PrefixStableAbi,

§

type IsNonZeroType = True

source§

const LAYOUT: &'static TypeLayout = _

source§

impl<T> StableAbi for ConstructorOrValue<T>
where T: __StableAbi,

source§

impl<T> StableAbi for MaybeCmp<T>
where T: __StableAbi,

source§

impl<T> StableAbi for ROption<T>
where T: __StableAbi,

source§

impl<T> StableAbi for SabiUnsafeOpaqueField<T>
where T: StableAbi,

§

type IsNonZeroType = False

source§

const LAYOUT: &'static TypeLayout = { UnsafeOpaqueField<T>::LAYOUT }

source§

impl<T> StableAbi for UnsafeOpaqueField<T>

source§

impl<T> StableAbi for DEIteratorCloneInterface<T>
where T: __StableAbi,

source§

impl<T> StableAbi for DEIteratorInterface<T>
where T: __StableAbi,

source§

impl<T> StableAbi for IteratorInterface<T>
where T: __StableAbi,

source§

impl<T> StableAbi for RReceiver<T>
where T: __StableAbi,

Available on crate feature channels only.
source§

impl<T> StableAbi for RSender<T>
where T: __StableAbi,

Available on crate feature channels only.
source§

impl<T> StableAbi for RMutex<T>
where T: __StableAbi,

source§

impl<T> StableAbi for RRwLock<T>
where T: __StableAbi,

source§

impl<T> StableAbi for PhantModule_Ref<T>

§

type IsNonZeroType = True

source§

const LAYOUT: &'static TypeLayout = <__sabi_re::PrefixRef<PhantModule_Prefix<T>> as __sabi_re::StableAbi>::LAYOUT

source§

impl<T> StableAbi for ErasedObject<T>
where T: __StableAbi,

source§

impl<T> StableAbi for UnsafeIgnoredType<T>

source§

impl<T> StableAbi for CmpIgnored<T>
where T: __StableAbi,

source§

impl<T> StableAbi for Constructor<T>
where T: __StableAbi,

§

type IsNonZeroType = True

source§

const LAYOUT: &'static TypeLayout = _

source§

impl<T> StableAbi for LateStaticRef<T>
where T: __StableAbi,

source§

impl<T> StableAbi for StaticRef<T>
where T: __StableAbi,

source§

impl<T> StableAbi for RArc<T>
where T: __StableAbi,

source§

impl<T> StableAbi for RBox<T>
where T: __StableAbi,

source§

impl<T> StableAbi for RVec<T>
where T: __StableAbi,

source§

impl<T> StableAbi for KeyValue<T>
where T: __StableAbi,

source§

impl<T, E> StableAbi for RResult<T, E>
where T: __StableAbi, E: __StableAbi,

source§

impl<T, Inline> StableAbi for RSmallBox<T, Inline>

source§

impl<T: ?Sized> StableAbi for NonOwningPhantom<T>

source§

impl<_ErasedPtr> StableAbi for ExtraChecks_TO<_ErasedPtr>
where _ErasedPtr: __GetPointerKind + __StableAbi, ExtraChecks_Backend<_ErasedPtr>: StableAbi,

§

type IsNonZeroType = <RObject<'static, _ErasedPtr, ExtraChecks_Interface, VTable_Prefix<(), _ErasedPtr>> as StableAbi>::IsNonZeroType

source§

const LAYOUT: &'static TypeLayout = _

source§

impl<_ErasedPtr> StableAbi for TypeChecker_TO<_ErasedPtr>
where _ErasedPtr: __GetPointerKind + __StableAbi, TypeChecker_Backend<_ErasedPtr>: StableAbi,

§

type IsNonZeroType = <RObject<'static, _ErasedPtr, TypeChecker_Interface, VTable_Prefix<(), _ErasedPtr>> as StableAbi>::IsNonZeroType

source§

const LAYOUT: &'static TypeLayout = _

source§

impl<__Storage> StableAbi for ValidTag_NEMarker<ValidTag, __Storage>