interval

Macro interval 

Source
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);