| //@ normalize-stderr-test: "(\n)ALLOC \(.*\) \{\n(.*\n)*\}(\n)" -> "${1}ALLOC DUMP${3}" | 
 | //@ normalize-stderr-test: "\[0x[0-9a-z]..0x[0-9a-z]\]" -> "[0xX..0xY]" | 
 |  | 
 | use std::mem; | 
 |  | 
 | // If this is `None`, the metadata becomes padding. | 
 | type T = Option<&'static str>; | 
 |  | 
 | fn main() { | 
 |     unsafe { | 
 |         let mut p: mem::MaybeUninit<T> = mem::MaybeUninit::zeroed(); | 
 |         // The copy when `T` is returned from `transmute` should destroy padding | 
 |         // (even when we use `write_unaligned`, which under the hood uses an untyped copy). | 
 |         p.as_mut_ptr().write_unaligned(mem::transmute((0usize, 0usize))); | 
 |         // Null epresents `None`. | 
 |         assert!(matches!(*p.as_ptr(), None)); | 
 |  | 
 |         // The second part, with the length, becomes padding. | 
 |         let c = &p as *const _ as *const u8; | 
 |         // Read a padding byte. | 
 |         let _val = *c.add(mem::size_of::<*const u8>()); | 
 |         //~^ERROR: uninitialized | 
 |     } | 
 | } |