25 lines
423 B
Rust
25 lines
423 B
Rust
// run-pass
|
|
#![allow(dead_code)]
|
|
#![allow(deprecated)]
|
|
|
|
use std::mem;
|
|
|
|
fn addr_of<T>(ptr: &T) -> usize {
|
|
ptr as *const T as usize
|
|
}
|
|
|
|
fn is_aligned<T>(ptr: &T) -> bool {
|
|
unsafe {
|
|
let addr: usize = mem::transmute(ptr);
|
|
(addr % mem::min_align_of::<T>()) == 0
|
|
}
|
|
}
|
|
|
|
pub fn main() {
|
|
let x = Some(0u64);
|
|
match x {
|
|
None => panic!(),
|
|
Some(ref y) => assert!(is_aligned(y))
|
|
}
|
|
}
|