Trait Alignable

Source
pub trait Alignable: Sized {
    // Required methods
    fn align_down(self, alignment: Alignment) -> Self;
    fn align_up(self, alignment: Alignment) -> Option<Self>;
}
Expand description

Trait for items that can be aligned against an Alignment.

Required Methods§

Source

fn align_down(self, alignment: Alignment) -> Self

Aligns self down to alignment.

§Examples
use kernel::ptr::{Alignable, Alignment};

assert_eq!(0x2f_usize.align_down(Alignment::new::<0x10>()), 0x20);
assert_eq!(0x30usize.align_down(Alignment::new::<0x10>()), 0x30);
assert_eq!(0xf0u8.align_down(Alignment::new::<0x1000>()), 0x0);
Source

fn align_up(self, alignment: Alignment) -> Option<Self>

Aligns self up to alignment, returning None if aligning would result in an overflow.

§Examples
use kernel::ptr::{Alignable, Alignment};

assert_eq!(0x4fusize.align_up(Alignment::new::<0x10>()), Some(0x50));
assert_eq!(0x40usize.align_up(Alignment::new::<0x10>()), Some(0x40));
assert_eq!(0x0usize.align_up(Alignment::new::<0x10>()), Some(0x0));
assert_eq!(u8::MAX.align_up(Alignment::new::<0x10>()), None);
assert_eq!(0x10u8.align_up(Alignment::new::<0x100>()), None);
assert_eq!(0x0u8.align_up(Alignment::new::<0x100>()), Some(0x0));

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl Alignable for u8

Source§

fn align_down(self, alignment: Alignment) -> Self

Source§

fn align_up(self, alignment: Alignment) -> Option<Self>

Source§

impl Alignable for u16

Source§

fn align_down(self, alignment: Alignment) -> Self

Source§

fn align_up(self, alignment: Alignment) -> Option<Self>

Source§

impl Alignable for u32

Source§

fn align_down(self, alignment: Alignment) -> Self

Source§

fn align_up(self, alignment: Alignment) -> Option<Self>

Source§

impl Alignable for u64

Source§

fn align_down(self, alignment: Alignment) -> Self

Source§

fn align_up(self, alignment: Alignment) -> Option<Self>

Source§

impl Alignable for usize

Source§

fn align_down(self, alignment: Alignment) -> Self

Source§

fn align_up(self, alignment: Alignment) -> Option<Self>

Implementors§