Trait packed::Aligned
[−]
[src]
pub unsafe trait Aligned: Sized { type Unaligned: Unaligned + Sized + Copy; fn is_aligned(u: &Self::Unaligned) -> bool { ... } fn as_unaligned(&self) -> &Self::Unaligned { ... } unsafe fn as_unaligned_mut(&mut self) -> &mut Self::Unaligned { ... } fn as_aligned(u: &Self::Unaligned) -> Option<&Self> { ... } unsafe fn as_aligned_mut(u: &mut Self::Unaligned) -> Option<&mut Self> { ... } unsafe fn as_aligned_unchecked(u: &Self::Unaligned) -> &Self { ... } unsafe fn as_aligned_mut_unchecked(u: &mut Self::Unaligned) -> &mut Self { ... } fn unaligned(self) -> Self::Unaligned { ... } unsafe fn from_unaligned(u: Self::Unaligned) -> Self { ... } }
A marker trait indicating that a type has an alignment over 1
,
and is therefore not safe to use in an unaligned context.
Associated Types
type Unaligned: Unaligned + Sized + Copy
An unaligned representation of this type. Usually a u8 array of the same size.
Provided Methods
fn is_aligned(u: &Self::Unaligned) -> bool
Determines whether an unaligned representation of this type is aligned.
fn as_unaligned(&self) -> &Self::Unaligned
Borrows the value as unaligned.
unsafe fn as_unaligned_mut(&mut self) -> &mut Self::Unaligned
Mutably borrows the value as unaligned.
fn as_aligned(u: &Self::Unaligned) -> Option<&Self>
Borrows an unaligned type as an aligned value.
Returns None
if u
is not aligned.
unsafe fn as_aligned_mut(u: &mut Self::Unaligned) -> Option<&mut Self>
Mutably borrows an unaligned type as an aligned value.
Returns None
if u
is not aligned.
unsafe fn as_aligned_unchecked(u: &Self::Unaligned) -> &Self
Borrows an unaligned type as an aligned value, without first checking the alignment.
Causes undefined behaviour if used improprly!
unsafe fn as_aligned_mut_unchecked(u: &mut Self::Unaligned) -> &mut Self
Mutably borrows an unaligned type as an aligned value, without first checking the alignment.
Causes undefined behaviour if used improprly!
fn unaligned(self) -> Self::Unaligned
Converts a value to its unaligned representation.
unsafe fn from_unaligned(u: Self::Unaligned) -> Self
Copies a value from its unaligned representation.
Implementors
impl Aligned for isize
impl Aligned for usize
impl<T: Sized> Aligned for *const T
impl<T: Sized> Aligned for *mut T
impl<'a, T: Sized> Aligned for &'a T
impl<'a, T: Sized> Aligned for &'a mut T
impl Aligned for char
impl Aligned for f32
impl Aligned for f64
impl Aligned for i16
impl Aligned for u16
impl Aligned for i32
impl Aligned for u32
impl Aligned for i64
impl Aligned for u64
impl Aligned for u8
impl Aligned for i8
impl Aligned for ()
impl Aligned for bool
impl<T: Aligned> Aligned for (T,)
impl<T: Aligned> Aligned for [T; 1]
impl<T> Aligned for [T; 0]