leodos_libcfs/macros/
asserts.rs1#[macro_export]
6macro_rules! comptime_assert_size_le {
7 ($type:ty, $limit:expr) => {{
8 trait SizeCheck {
9 const CHECK: ();
10 }
11 impl<T, const N: usize> SizeCheck for (T, [(); N]) {
12 const CHECK: () = {
13 if core::mem::size_of::<T>() > N {
14 panic!("type size exceeds limit");
15 }
16 };
17 }
18 let _ = <($type, [(); $limit]) as SizeCheck>::CHECK;
19 }};
20}
21
22#[macro_export]
25macro_rules! comptime_assert_align_le {
26 ($type:ty, $limit:expr) => {{
27 trait AlignCheck {
28 const CHECK: ();
29 }
30 impl<T, const N: usize> AlignCheck for (T, [(); N]) {
31 const CHECK: () = {
32 if core::mem::align_of::<T>() > N {
33 panic!("type alignment exceeds limit");
34 }
35 };
36 }
37 let _ = <($type, [(); $limit]) as AlignCheck>::CHECK;
38 }};
39}