1 // run-pass 2 #![allow(dead_code)] 3 #![allow(deprecated)] 4 5 use std::mem; 6 7 enum Tag { 8 TagInner(u64) 9 } 10 11 struct Rec { 12 c8: u8, 13 t: Tag 14 } 15 mk_rec() -> Rec16fn mk_rec() -> Rec { 17 return Rec { c8:0, t:Tag::TagInner(0) }; 18 } 19 is_u64_aligned(u: &Tag) -> bool20fn is_u64_aligned(u: &Tag) -> bool { 21 let p: usize = unsafe { mem::transmute(u) }; 22 let u64_align = std::mem::min_align_of::<u64>(); 23 return (p & (u64_align - 1)) == 0; 24 } 25 main()26pub fn main() { 27 let x = mk_rec(); 28 assert!(is_u64_aligned(&x.t)); 29 } 30