[][src]Trait chromium::StableLayout

pub unsafe trait StableLayout { }

Indicates a type with a layout that is stable across Rust compiler versions.

Safety

The type's Type Layout must fit one of the following:

  • Primitive layout types of 64-bits or less.
    • Examples: i8, u32
  • Any zero-sized type (ZST).
    • Examples: ()
  • repr(C) struct or union types when all fields are also StableLayout.
    • Examples: Most libc and winapi types.
  • repr(transparent) struct or union types when the non-ZST field is also StableLayout.
  • Any other layout that is guaranteed by Rust.
    • Examples: &T and &mut T where T: Sized.

Specifically there are some things that this type does not attempt to guarantee. StableLayout types can have:

  • Uninitialized bytes, such as padding bytes.
  • Invalid bit patterns, such as bool and char.

Implementations on Foreign Types

impl<T> StableLayout for PhantomData<T> where
    T: StableLayout
[src]

PhantomData is a zero-sized type and so technically it could be defined as always being StableLayout. However, since PhantomData is semantically supposed to indicate to the world that you want to be treated like you're holding some sort of T, then we will also require that the T be a StableLayout type.

impl<T> StableLayout for Wrapping<T> where
    T: StableLayout
[src]

impl<T> StableLayout for ManuallyDrop<T> where
    T: StableLayout
[src]

impl StableLayout for NonZeroU8[src]

impl StableLayout for NonZeroU16[src]

impl StableLayout for NonZeroU32[src]

impl StableLayout for NonZeroU64[src]

impl StableLayout for NonZeroUsize[src]

impl StableLayout for Option<NonZeroU8>[src]

impl StableLayout for Option<NonZeroU16>[src]

impl StableLayout for Option<NonZeroU32>[src]

impl StableLayout for Option<NonZeroU64>[src]

impl StableLayout for Option<NonZeroUsize>[src]

impl StableLayout for NonZeroI8[src]

impl StableLayout for NonZeroI16[src]

impl StableLayout for NonZeroI32[src]

impl StableLayout for NonZeroI64[src]

impl StableLayout for NonZeroIsize[src]

impl StableLayout for Option<NonZeroI8>[src]

impl StableLayout for Option<NonZeroI16>[src]

impl StableLayout for Option<NonZeroI32>[src]

impl StableLayout for Option<NonZeroI64>[src]

impl StableLayout for Option<NonZeroIsize>[src]

impl<'_, T> StableLayout for Option<&'_ T> where
    T: Sized + StableLayout
[src]

impl<'_, T> StableLayout for Option<&'_ mut T> where
    T: Sized + StableLayout
[src]

impl<T> StableLayout for NonNull<T> where
    T: Sized + StableLayout
[src]

impl<T> StableLayout for Option<NonNull<T>> where
    T: Sized + StableLayout
[src]

impl<T> StableLayout for UnsafeCell<T> where
    T: StableLayout
[src]

impl<T> StableLayout for Cell<T> where
    T: StableLayout
[src]

impl<T> StableLayout for Box<T> where
    T: Sized + StableLayout
[src]

impl<T> StableLayout for Option<Box<T>> where
    T: Sized + StableLayout
[src]

impl StableLayout for __m128i[src]

impl StableLayout for __m128[src]

impl StableLayout for __m128d[src]

impl StableLayout for __m256i[src]

impl StableLayout for __m256[src]

impl StableLayout for __m256d[src]

Loading content...

Implementors

impl StableLayout for ()[src]

impl StableLayout for StableString[src]

impl StableLayout for bool[src]

impl StableLayout for char[src]

impl StableLayout for f32[src]

impl StableLayout for f64[src]

impl StableLayout for i8[src]

impl StableLayout for i16[src]

impl StableLayout for i32[src]

impl StableLayout for i64[src]

impl StableLayout for isize[src]

impl StableLayout for u8[src]

impl StableLayout for u16[src]

impl StableLayout for u32[src]

impl StableLayout for u64[src]

impl StableLayout for usize[src]

impl<'_, T> StableLayout for &'_ T where
    T: Sized + StableLayout
[src]

impl<'_, T> StableLayout for &'_ mut T where
    T: Sized + StableLayout
[src]

impl<'a> StableLayout for SharedStr<'a>[src]

impl<'a> StableLayout for UniqueStr<'a>[src]

impl<'a, T: StableLayout> StableLayout for SharedSlice<'a, T>[src]

impl<'a, T: StableLayout> StableLayout for UniqueSlice<'a, T>[src]

impl<T> StableLayout for *const T where
    T: Sized + StableLayout
[src]

impl<T> StableLayout for *mut T where
    T: Sized + StableLayout
[src]

impl<T> StableLayout for [T; 0] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 1] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 2] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 3] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 4] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 5] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 6] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 7] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 8] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 9] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 10] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 11] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 12] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 13] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 14] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 15] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 16] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 17] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 18] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 19] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 20] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 21] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 22] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 23] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 24] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 25] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 26] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 27] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 28] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 29] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 30] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 31] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 32] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 48] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 64] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 96] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 128] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 256] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 512] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 1024] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 2048] where
    T: StableLayout
[src]

impl<T> StableLayout for [T; 4096] where
    T: StableLayout
[src]

impl<T: StableLayout> StableLayout for StableVec<T>[src]

Loading content...