fork download
  1. use std::mem;
  2.  
  3. #[repr(C, packed)]
  4. struct S {
  5. pad: u8,
  6. arr: [u8; 32],
  7. }
  8.  
  9. fn main() {
  10. println!("align_of::<u8>() = {}", mem::align_of::<u8>());
  11. println!("align_of::<[u8; 32]>() = {}", mem::align_of::<[u8; 32]>());
  12. println!("align_of::<usize>() = {}", mem::align_of::<usize>());
  13.  
  14. let s = S { pad: 0, arr: [0; 32] };
  15.  
  16. let addr = &s.arr as *const _ as usize;
  17. let aligned = addr % mem::align_of::<usize>() == 0;
  18.  
  19. println!("\nAddress of s.arr: {:#x}", addr);
  20. println!("aligned_to_usize = {}", aligned);
  21. }
  22.  
Success #stdin #stdout 0s 5320KB
stdin
Standard input is empty
stdout
align_of::<u8>()       = 1
align_of::<[u8; 32]>() = 1
align_of::<usize>()    = 8

Address of s.arr: 0x7fff2bbae1c1
aligned_to_usize = false