Macro static_assertions::assert_eq_align
source · [−]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]);