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§
Sourcefn align_down(self, alignment: Alignment) -> Self
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);Sourcefn align_up(self, alignment: Alignment) -> Option<Self>
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.