pub unsafe trait Unaligned { }Expand description
Types with no alignment requirement.
WARNING: Do not implement this trait yourself! Instead, use
#[derive(Unaligned)] (requires the derive Cargo feature).
If T: Unaligned, then align_of::<T>() == 1.
Safety
This section describes what is required in order for T: Unaligned, and
what unsafe code may assume of such types. #[derive(Unaligned)] only
permits types which satisfy these requirements. If you don’t plan on
implementing Unaligned manually, and you don’t plan on writing unsafe code
that operates on Unaligned types, then you don’t need to read this
section.
If T: Unaligned, then unsafe code may assume that it is sound to produce a
reference to T at any memory location regardless of alignment. If a type
is marked as Unaligned which violates this contract, it may cause
undefined behavior.
Implementations on Foreign Types§
impl Unaligned for Option<NonZeroI8>
impl Unaligned for Option<NonZeroU8>
impl Unaligned for bool
impl Unaligned for i8
impl Unaligned for str
impl Unaligned for u8
impl Unaligned for ()
impl Unaligned for NonZeroI8
impl Unaligned for NonZeroU8
impl<T: Unaligned> Unaligned for [T]
impl<T: Unaligned> Unaligned for Wrapping<T>
impl<T: Unaligned> Unaligned for MaybeUninit<T>
impl<T: ?Sized + Unaligned> Unaligned for ManuallyDrop<T>
impl<T: ?Sized> Unaligned for PhantomData<T>
impl<const N: usize, T: Unaligned> Unaligned for [T; N]
Implementors§
impl<O> Unaligned for F32<O>
byteorder only.impl<O> Unaligned for F64<O>
byteorder only.impl<O> Unaligned for I16<O>
byteorder only.impl<O> Unaligned for I32<O>
byteorder only.impl<O> Unaligned for I64<O>
byteorder only.impl<O> Unaligned for I128<O>
byteorder only.impl<O> Unaligned for U16<O>
byteorder only.impl<O> Unaligned for U32<O>
byteorder only.impl<O> Unaligned for U64<O>
byteorder only.impl<O> Unaligned for U128<O>
byteorder only.