• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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