Struct elain::Align[][src]

#[repr(transparent)]pub struct Align<const N: usize>(_)
where
    Self: Alignment
;

A zero-sized-type aligned to N. Compound types containing a field Align<N> with have an alignment of at least N.

use elain::Align;
use core::mem::{align_of, align_of_val};

assert_eq!(align_of::<Align<1>>(), 1);
assert_eq!(align_of::<Align<2>>(), 2);
assert_eq!(align_of::<Align<4>>(), 4);

const FOO_ALIGN: usize = 8;

#[repr(C)]
struct Foo {
    _align: Align<FOO_ALIGN>,
}

let foo: Foo = Foo { _align: Align::NEW };

assert_eq!(align_of_val(&foo), 8);

Implementations

impl<const N: usize> Align<N> where
    Self: Alignment
[src]

pub const NEW: Self[src]

An instance of Align<N>.

use elain::Align;
use core::mem::{align_of, align_of_val};

#[repr(C)]
struct Foo {
    _align: Align<8>,
}

let foo: Foo = Foo { _align: Align::NEW };

assert_eq!(align_of_val(&foo), 8);

Trait Implementations

impl Alignment for Align<1>[src]

impl Alignment for Align<2>[src]

impl Alignment for Align<1024>[src]

impl Alignment for Align<2048>[src]

impl Alignment for Align<4096>[src]

impl Alignment for Align<8192>[src]

impl Alignment for Align<16384>[src]

impl Alignment for Align<32768>[src]

impl Alignment for Align<65536>[src]

impl Alignment for Align<131072>[src]

impl Alignment for Align<262144>[src]

impl Alignment for Align<524288>[src]

impl Alignment for Align<4>[src]

impl Alignment for Align<1048576>[src]

impl Alignment for Align<2097152>[src]

impl Alignment for Align<4194304>[src]

impl Alignment for Align<8388608>[src]

impl Alignment for Align<16777216>[src]

impl Alignment for Align<33554432>[src]

impl Alignment for Align<67108864>[src]

impl Alignment for Align<134217728>[src]

impl Alignment for Align<268435456>[src]

impl Alignment for Align<8>[src]

impl Alignment for Align<16>[src]

impl Alignment for Align<32>[src]

impl Alignment for Align<64>[src]

impl Alignment for Align<128>[src]

impl Alignment for Align<256>[src]

impl Alignment for Align<512>[src]

impl<const N: usize> Clone for Align<N> where
    Self: Alignment
[src]

impl<const N: usize> Copy for Align<N> where
    Self: Alignment
[src]

impl<const N: usize> Debug for Align<N> where
    Self: Alignment
[src]

impl<const N: usize> Default for Align<N> where
    Self: Alignment
[src]

impl<const N: usize> Eq for Align<N> where
    Self: Alignment
[src]

impl<const N: usize> Hash for Align<N> where
    Self: Alignment
[src]

impl<const N: usize> Ord for Align<N> where
    Self: Alignment
[src]

impl<const N: usize> PartialEq<Align<N>> for Align<N> where
    Self: Alignment
[src]

impl<const N: usize> PartialOrd<Align<N>> for Align<N> where
    Self: Alignment
[src]

impl<const N: usize> StructuralEq for Align<N> where
    Self: Alignment
[src]

impl<const N: usize> StructuralPartialEq for Align<N> where
    Self: Alignment
[src]

Auto Trait Implementations

impl<const N: usize> Send for Align<N>

impl<const N: usize> Sync for Align<N>

impl<const N: usize> Unpin for Align<N>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.