use std::mem;
#[repr(C, packed)]
struct S {
pad: u8,
arr: [u8; 32],
}
fn main() {
println!("align_of::<u8>() = {}", mem::align_of::<u8>());
println!("align_of::<[u8; 32]>() = {}", mem::align_of::<[u8; 32]>());
println!("align_of::<usize>() = {}", mem::align_of::<usize>());
let s = S { pad: 0, arr: [0; 32] };
let addr = &s.arr as *const _ as usize;
let aligned = addr % mem::align_of::<usize>() == 0;
println!("\nAddress of s.arr: {:#x}", addr);
println!("aligned_to_usize = {}", aligned);
}
dXNlIHN0ZDo6bWVtOwoKI1tyZXByKEMsIHBhY2tlZCldCnN0cnVjdCBTIHsKICAgIHBhZDogdTgsCiAgICBhcnI6IFt1ODsgMzJdLAp9CgpmbiBtYWluKCkgewogICAgcHJpbnRsbiEoImFsaWduX29mOjo8dTg+KCkgICAgICAgPSB7fSIsIG1lbTo6YWxpZ25fb2Y6Ojx1OD4oKSk7CiAgICBwcmludGxuISgiYWxpZ25fb2Y6OjxbdTg7IDMyXT4oKSA9IHt9IiwgbWVtOjphbGlnbl9vZjo6PFt1ODsgMzJdPigpKTsKICAgIHByaW50bG4hKCJhbGlnbl9vZjo6PHVzaXplPigpICAgID0ge30iLCBtZW06OmFsaWduX29mOjo8dXNpemU+KCkpOwoKICAgIGxldCBzID0gUyB7IHBhZDogMCwgYXJyOiBbMDsgMzJdIH07CgogICAgbGV0IGFkZHIgPSAmcy5hcnIgYXMgKmNvbnN0IF8gYXMgdXNpemU7CiAgICBsZXQgYWxpZ25lZCA9IGFkZHIgJSBtZW06OmFsaWduX29mOjo8dXNpemU+KCkgPT0gMDsKCiAgICBwcmludGxuISgiXG5BZGRyZXNzIG9mIHMuYXJyOiB7OiN4fSIsIGFkZHIpOwogICAgcHJpbnRsbiEoImFsaWduZWRfdG9fdXNpemUgPSB7fSIsIGFsaWduZWQpOwp9Cg==