Trait kernel::ptr::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));

Object Safety§

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§