Skip to main content

hopper_layout

Macro hopper_layout 

Source
macro_rules! hopper_layout {
    (
        $(#[$attr:meta])*
        pub struct $name:ident, disc = $disc:literal, version = $ver:literal
        {
            $(
                $(#[$field_attr:meta])*
                $field:ident : $fty:ty = $fsize:literal
            ),+ $(,)?
        }
    ) => { ... };
}
Expand description

Define a zero-copy account layout.

Generates a #[repr(C)] struct with:

  • 16-byte Hopper header
  • Alignment-1 fields
  • Deterministic LAYOUT_ID via SHA-256
  • Tiered loading: load, load_mut, load_cross_program, load_compatible, load_unverified
  • Compile-time size and alignment assertions

§Example

hopper_layout! {
    pub struct Vault, disc = 1, version = 1 {
        authority: [u8; 32]  = 32,
        mint:      [u8; 32]  = 32,
        balance:   WireU64   = 8,
        bump:      u8        = 1,
    }
}