Examples
Success (real size matches expected):
use pakr_assert_size::*;
#[repr(C, packed)]
#[assert_size(16)]
struct A {
field1: u64,
field2: u64,
}
#[assert_size(24)]
#[repr(C, packed)]
struct B {
field1: u64,
field2: u64,
field3: u64,
}
Failure (real size is 24 bytes, expected is 32 bytes):
use pakr_assert_size::*;
#[assert_size(32)]
#[repr(C, packed)]
struct C {
field1: u64,
field2: u64,
field3: u64,
}
Examples assert_size_fits
Success (real size fits in expected size):
use pakr_assert_size::*;
// Exact match
#[repr(C, packed)]
#[assert_size_fits(16)]
struct A {
field1: u64,
field2: u64,
}
// Fits in match
#[assert_size_fits(32)]
#[repr(C, packed)]
struct B {
field1: u64,
field2: u64,
field3: u64,
}
Failure (real size is 24 bytes, exceeding maximum of 16 bytes):
use pakr_assert_size::*;
#[assert_size_fits(16)]
#[repr(C, packed)]
struct C {
field1: u64,
field2: u64,
field3: u64,
}