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
/// This is a useful macro to write expression like `?:` or `if expr { left } else { right }`. /// /// # Example /// /// ``` /// use helper::r#if; /// /// let s = "hello"; /// let len = s.len(); /// let len = r#if!(len > 10, 10, len); /// assert_eq!(len, 5); /// ``` #[macro_export] macro_rules! r#if { ($cond:expr, $left:expr, $right:expr) => { if $cond { $left } else { $right } }; } #[cfg(test)] mod test { use super::*; #[test] fn test_if() { let a = 1; assert_eq!(r#if!(a > 0, 1, 2), 1); assert_eq!(r#if!(a > 1, 1, 2), 2); } }