1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
#[macro_export] macro_rules! cmp3 { ($a:expr, >, $b:expr, >, $c:expr) => {{ let b = $b; $a > b && b > $c }}; ($a:expr, >=, $b:expr, >, $c:expr) => {{ let b = $b; $a >= b && b > $c }}; ($a:expr, >, $b:expr, >=, $c:expr) => {{ let b = $b; $a > b && b >= $c }}; ($a:expr, >=, $b:expr, >=, $c:expr) => {{ let b = $b; $a >= b && b >= $c }}; ($a:expr, <, $b:expr, <, $c:expr) => {{ let b = $b; $a < b && b < $c }}; ($a:expr, <=, $b:expr, <, $c:expr) => {{ let b = $b; $a <= b && b < $c }}; ($a:expr, <, $b:expr, <=, $c:expr) => {{ let b = $b; $a < b && b <= $c }}; ($a:expr, <=, $b:expr, <=, $c:expr) => {{ let b = $b; $a <= b && b <= $c }}; ($a:expr, <, $b:expr, >, $c:expr) => {{ let b = $b; $a < b && b > $c }}; ($a:expr, >, $b:expr, <, $c:expr) => {{ let b = $b; $a > b && b < $c }}; ($a:expr, >=, $b:expr, <=, $c:expr) => {{ let b = $b; $a >= b && b <= $c }}; ($a:expr, <=, $b:expr, >, $c:expr) => {{ let b = $b; $a <= b && b > $c }}; ($a:expr, >, $b:expr, <=, $c:expr) => {{ let b = $b; $a > b && b <= $c }}; ($a:expr, >=, $b:expr, <, $c:expr) => {{ let b = $b; $a <= b && b < $c }}; ($a:expr, <, $b:expr, >=, $c:expr) => {{ let b = $b; $a < b && b <= $c }}; ($a:expr, >=, $b:expr, >=, $c:expr) => {{ let b = $b; $a <= b && b <= $c }}; ($a:expr, ==, $b:expr, ==, $c:expr) => {{ let b = $b; $a == b && b == $c }}; ($a:expr, !=, $b:expr, !=, $c:expr) => {{ let b = $b; $a != b && b != $c }}; ($a:expr, !=, $b:expr, ==, $c:expr) => {{ let b = $b; $a != b && b == $c }}; ($a:expr, ==, $b:expr, !=, $c:expr) => {{ let b = $b; $a == b && b != $c }}; } #[cfg(test)] mod tests { #[test] fn it_works() { assert!(cmp3!(3, >, 2, >, 1)); assert!(cmp3!(1, <, 2, <, 3)); assert!(cmp3!(3, >, 2, <, 4)); assert!(cmp3!(4, >, 2, <, 3)); assert!(cmp3!(3, >=, 3, >, 2)); assert!(cmp3!(3, >, 2, >=, 2)); assert!(cmp3!(3, >=, 3, <=, 3)); assert!(cmp3!(2, ==, 2, ==, 2)); assert!(cmp3!(1, !=, 2, ==, 2)); } }