cvlr_asserts/
asserts.rs

1#[rustfmt::skip]
2macro_rules! impl_bin_assert {
3    ($name: ident, $pred: tt, $dollar: tt) => {
4        #[macro_export]
5        macro_rules! $name {
6        ($lhs: expr, $rhs: expr $dollar(, $desc: literal)? ) => {{
7            let lhs = $lhs;
8            let rhs = $rhs;
9            cvlr::clog!(stringify!(assert $lhs $pred $rhs));
10            cvlr::clog!(lhs => stringify!($lhs));
11            cvlr::clog!(rhs => stringify!($rhs));
12            $crate::cvlr_assert!(lhs $pred rhs);
13        }};
14    }
15        pub use $name;
16    };
17}
18
19impl_bin_assert!(cvlr_assert_eq, ==, $);
20impl_bin_assert!(cvlr_assert_ne, !=, $);
21impl_bin_assert!(cvlr_assert_le, <=, $);
22impl_bin_assert!(cvlr_assert_lt, <, $);
23impl_bin_assert!(cvlr_assert_ge, >=, $);
24impl_bin_assert!(cvlr_assert_gt, >, $);
25
26#[rustfmt::skip]
27macro_rules! impl_bin_assume {
28    ($name: ident, $pred: tt, $dollar: tt) => {
29        #[macro_export]
30        macro_rules! $name {
31        ($lhs: expr, $rhs: expr $dollar(, $desc: literal)? ) => {{
32            let lhs = $lhs;
33            let rhs = $rhs;
34            cvlr::clog!(stringify!(assume $lhs $pred $rhs));
35            cvlr::clog!(lhs => stringify!($lhs));
36            cvlr::clog!(rhs => stringify!($rhs));
37            $crate::cvlr_assume!(lhs $pred rhs);
38        }};
39    }
40        pub use $name;
41    };
42}
43
44impl_bin_assume!(cvlr_assume_eq, ==, $);
45impl_bin_assume!(cvlr_assume_ne, !=, $);
46impl_bin_assume!(cvlr_assume_le, <=, $);
47impl_bin_assume!(cvlr_assume_lt, <, $);
48impl_bin_assume!(cvlr_assume_ge, >=, $);
49impl_bin_assume!(cvlr_assume_gt, >, $);