1 // run-pass 2 #![allow(dead_code)] 3 #![allow(deprecated)] 4 5 use std::mem; 6 addr_of<T>(ptr: &T) -> usize7fn addr_of<T>(ptr: &T) -> usize { 8 ptr as *const T as usize 9 } 10 is_aligned<T>(ptr: &T) -> bool11fn is_aligned<T>(ptr: &T) -> bool { 12 unsafe { 13 let addr: usize = mem::transmute(ptr); 14 (addr % mem::min_align_of::<T>()) == 0 15 } 16 } 17 main()18pub fn main() { 19 let x = Some(0u64); 20 match x { 21 None => panic!(), 22 Some(ref y) => assert!(is_aligned(y)) 23 } 24 } 25