Padding types to enable memory layout optimizations.
use struct_pad::{Pad, PadU0, PadU8, PadU16, PadU32};
struct Example {
field1: u64,
field2: u8,
// Padding fields
pad1: PadU8,
#[cfg(target_pointer_width = "16")]
pad2: PadU0,
#[cfg(not(target_pointer_width = "16"))]
pad2: PadU16,
#[cfg(target_pointer_width = "64")]
pad3: PadU32,
#[cfg(not(target_pointer_width = "64"))]
pad3: PadU0,
}
impl Example {
const fn new(field1: u64, field2: u8) -> Self {
Self {
field1,
field2,
pad1: Pad::VALUE,
pad2: Pad::VALUE,
pad3: Pad::VALUE,
}
}
}