macro_rules! assert_eq_align { ($x:ty, $($xs:ty),+ $(,)?) => { ... }; }
Expand description
Asserts that types are equal in alignment.
This is useful when ensuring that pointer arithmetic is done correctly, or when FFI requires a type to have the same alignment as some foreign type.
§Examples
A usize
has the same alignment as any pointer type:
assert_eq_align!(usize, *const u8, *mut u8);
The following passes because [i32; 4]
has the same alignment as i32
:
assert_eq_align!([i32; 4], i32);
The following example fails to compile because i32x4
explicitly has 4
times the alignment as [i32; 4]
:
ⓘ
#[repr(align(16))]
struct i32x4([i32; 4]);
assert_eq_align!(i32x4, [i32; 4]);