#![allow(dead_code, deprecated, unused_variables, unused_mut)] #![feature(ptr_alignment_type)] #![feature(ptr_mask)] use std::ptr::{Alignment, NonNull}; #[repr(align(1))] struct Align1(u8); #[repr(align(2))] struct Align2(u16); #[repr(align(4))] struct Align4(u32); fn main() { let one = >::dangling().as_ptr(); let two = >::dangling().as_ptr(); let four = >::dangling().as_ptr(); assert_eq!(four.mask(Alignment::of::< Align1 > ().mask()), four); assert_eq!(four.mask(Alignment::of::< Align2 > ().mask()), four); assert_eq!(four.mask(Alignment::of::< Align4 > ().mask()), four); assert_ne!(one.mask(Alignment::of::< Align4 > ().mask()), one); }