macro_rules! interval {
($ctor:tt: $t:ty) => { ... };
(0) => { ... };
(< $x:expr) => { ... };
(<= $x:expr) => { ... };
(> $x:expr) => { ... };
(>= $x:expr) => { ... };
(= $x:expr) => { ... };
(== $x:expr) => { ... };
( ( $a:expr , $b:expr ) ) => { ... };
( ($a:expr , =$b:expr) ) => { ... };
( ( =$a:expr , $b:expr ) ) => { ... };
( ( =$a:expr , =$b:expr ) ) => { ... };
( [ $a:expr , $b:expr ] ) => { ... };
(U) => { ... };
}Expand description
Create an Interval using a concise syntax.
assert_eq!(interval!(0), Empty::<i32>);
assert_eq!(interval!(0: u8), Empty);
assert_eq!(interval!(< 5), LessThan(5));
assert_eq!(interval!(<= 3.2), LessThanOrEqual(3.2));
assert_eq!(interval!(> -10), GreaterThan(-10));
assert_eq!(interval!(>= 0u32), GreaterThanOrEqual(0u32));
assert_eq!(interval!(= 42), Interval::singleton(42));
assert_eq!(interval!(== 42), Interval::singleton(42));
assert_eq!(interval!((1, 10)), Open((1, 10)));
assert_eq!(interval!((0, =100)), LeftOpen((0, 100)));
assert_eq!(interval!((=0, 100)), RightOpen((0, 100)));
assert_eq!(interval!([0.0, 1.0]), Closed((0.0, 1.0)));
assert_eq!(interval!((=0.0, =1.0)), Closed((0.0, 1.0)));
assert_eq!(interval!(U), Full::<f64>);
assert_eq!(interval!(U: f32), Full);