Struct Aligned

Source
#[repr(C)]
pub struct Aligned<T: ?Sized, const ALIGNMENT: usize>
where Alignment<ALIGNMENT>: SupportedAlignment,
{ pub align: AlignedZst<ALIGNMENT>, pub inner: T, }
Expand description

A wrapper type with the specified alignment.

This type implements most relevant traits if the wrapped type does, including Default, Ord, Copy, Send, Sync, Unpin, etc.

With the bytemuck optional feature enabled, this type implements the bytemuck::AnyBitPattern trait if the wrapped type does. (It cannot in general implement Pod, because there may be padding.)

With the freeze optional feature enabled, this type implements the unstable core::marker::Freeze trait if the wrapped type does.

§Layout

The wrapped field inner is at offset 0, and the size and alignment of Self are minimal to meet the wrapped field’s size and alignment, and to meet the requested alignment, under Rust’s normal size % align == 0 rule.

This is not repr(transparent).

Fields§

§align: AlignedZst<ALIGNMENT>§inner: T

Implementations§

Source§

impl<T, const ALIGNMENT: usize> Aligned<T, ALIGNMENT>
where Alignment<ALIGNMENT>: SupportedAlignment,

Source

pub const fn new(value: T) -> Self

Creates a new Aligned wrapper containing the given value.

Source

pub fn into_inner(self) -> T

Consumes this Aligned wrapper, returning the wrapped value.

Trait Implementations§

Source§

impl<T: ?Sized, const ALIGNMENT: usize> AsMut<T> for Aligned<T, ALIGNMENT>
where Alignment<ALIGNMENT>: SupportedAlignment,

Source§

fn as_mut(&mut self) -> &mut T

Converts this type into a mutable reference of the (usually inferred) input type.
Source§

impl<T: ?Sized, const ALIGNMENT: usize> AsRef<T> for Aligned<T, ALIGNMENT>
where Alignment<ALIGNMENT>: SupportedAlignment,

Source§

fn as_ref(&self) -> &T

Converts this type into a shared reference of the (usually inferred) input type.
Source§

impl<T: ?Sized, const ALIGNMENT: usize> Borrow<T> for Aligned<T, ALIGNMENT>
where Alignment<ALIGNMENT>: SupportedAlignment,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T: ?Sized, const ALIGNMENT: usize> BorrowMut<T> for Aligned<T, ALIGNMENT>
where Alignment<ALIGNMENT>: SupportedAlignment,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T: Clone + ?Sized, const ALIGNMENT: usize> Clone for Aligned<T, ALIGNMENT>
where Alignment<ALIGNMENT>: SupportedAlignment,

Source§

fn clone(&self) -> Aligned<T, ALIGNMENT>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<T: Default + ?Sized, const ALIGNMENT: usize> Default for Aligned<T, ALIGNMENT>
where Alignment<ALIGNMENT>: SupportedAlignment,

Source§

fn default() -> Aligned<T, ALIGNMENT>

Returns the “default value” for a type. Read more
Source§

impl<T: ?Sized + Hash, const ALIGNMENT: usize> Hash for Aligned<T, ALIGNMENT>
where Alignment<ALIGNMENT>: SupportedAlignment,

Source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl<T: Ord + ?Sized, const ALIGNMENT: usize> Ord for Aligned<T, ALIGNMENT>
where Alignment<ALIGNMENT>: SupportedAlignment,

Source§

fn cmp(&self, other: &Aligned<T, ALIGNMENT>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl<T: PartialEq + ?Sized, const ALIGNMENT: usize> PartialEq for Aligned<T, ALIGNMENT>
where Alignment<ALIGNMENT>: SupportedAlignment,

Source§

fn eq(&self, other: &Aligned<T, ALIGNMENT>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<T: PartialOrd + ?Sized, const ALIGNMENT: usize> PartialOrd for Aligned<T, ALIGNMENT>
where Alignment<ALIGNMENT>: SupportedAlignment,

Source§

fn partial_cmp(&self, other: &Aligned<T, ALIGNMENT>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl<T, const ALIGNMENT: usize> Zeroable for Aligned<T, ALIGNMENT>
where T: Zeroable, Alignment<ALIGNMENT>: SupportedAlignment,

Available on crate feature bytemuck only.
Source§

fn zeroed() -> Self

Source§

impl<T, const ALIGNMENT: usize> AnyBitPattern for Aligned<T, ALIGNMENT>

Available on crate feature bytemuck only.
Source§

impl<T: Copy + ?Sized, const ALIGNMENT: usize> Copy for Aligned<T, ALIGNMENT>
where Alignment<ALIGNMENT>: SupportedAlignment,

Source§

impl<T: Eq + ?Sized, const ALIGNMENT: usize> Eq for Aligned<T, ALIGNMENT>
where Alignment<ALIGNMENT>: SupportedAlignment,

Source§

impl<T: ?Sized, const ALIGNMENT: usize> StructuralPartialEq for Aligned<T, ALIGNMENT>
where Alignment<ALIGNMENT>: SupportedAlignment,

Auto Trait Implementations§

§

impl<T, const ALIGNMENT: usize> Freeze for Aligned<T, ALIGNMENT>
where T: Freeze + ?Sized,

§

impl<T, const ALIGNMENT: usize> RefUnwindSafe for Aligned<T, ALIGNMENT>
where T: RefUnwindSafe + ?Sized,

§

impl<T, const ALIGNMENT: usize> Send for Aligned<T, ALIGNMENT>
where T: Send + ?Sized,

§

impl<T, const ALIGNMENT: usize> Sync for Aligned<T, ALIGNMENT>
where T: Sync + ?Sized,

§

impl<T, const ALIGNMENT: usize> Unpin for Aligned<T, ALIGNMENT>
where T: Unpin + ?Sized,

§

impl<T, const ALIGNMENT: usize> UnwindSafe for Aligned<T, ALIGNMENT>
where T: UnwindSafe + ?Sized,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CheckedBitPattern for T
where T: AnyBitPattern,

Source§

type Bits = T

Self must have the same layout as the specified Bits except for the possible invalid bit patterns being checked during is_valid_bit_pattern.
Source§

fn is_valid_bit_pattern(_bits: &T) -> bool

If this function returns true, then it must be valid to reinterpret bits as &Self.
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.