Crate struct_pad

Source
Expand description

Padding types to enable memory layout optimizations.

§Example

Basic usage:

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,
        }
    }
}

Structs§

PadU0
A padding type with the same layout as ().
PadU8
A padding type with the same layout as u8.
PadU16
A padding type with the same layout as u16.
PadU32
A padding type with the same layout as u32.
PadU64
A padding type with the same layout as u64.

Traits§

Pad
A padding type.

Type Aliases§

PadUsize
A padding type with the same layout as usize.