1  //! Workarounds for Rust 1.63 where some things in the `static_assertions`
2  //! crate do things that don't work in const contexts. We want to call them in
3  //! const contexts in Rust versions where that's supported so that problems are
4  //! caught at compile time, and fall back to dynamic asserts in Rust 1.63.
5  
6  #![allow(unused_macros)]
7  
8  macro_rules! assert_eq_size {
9      ($x:ty, $y:ty) => {
10          assert_eq!(core::mem::size_of::<$x>(), core::mem::size_of::<$y>());
11      };
12  }
13  
14  macro_rules! assert_eq_align {
15      ($x:ty, $y:ty) => {
16          assert_eq!(core::mem::align_of::<$x>(), core::mem::align_of::<$y>());
17      };
18  }
19  
20  macro_rules! const_assert_eq {
21      ($x:expr, $y:expr) => {
22          assert_eq!($x, $y);
23      };
24  }
25  
26  macro_rules! const_assert_ne {
27      ($x:expr, $y:expr) => {
28          assert_ne!($x, $y);
29      };
30  }
31  
32  macro_rules! const_assert {
33      ($x:expr) => {
34          assert!($x);
35      };
36  }
37