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