Macro range

Source
macro_rules! range {
    ($min:literal..=$max:literal) => { ... };
    ($min:literal..$max:literal) => { ... };
    (<= $max:literal) => { ... };
    (< $max:literal) => { ... };
    (>= $min:literal) => { ... };
    (> $min:literal) => { ... };
}
Expand description

Check that the value is within the specified range

§Between

Inclusive

range!(5..=20)

Exclusive

range!(5..20)

§Example

use swift_check::{ensure, range, arch::load};

let input = b"abcdefghijklmnop";
let data = load(input);

let is_lowercase_alphabet = ensure!(data, range!(b'a'..=b'z'));
assert!(is_lowercase_alphabet);

let input = b"Abcdefghijklmnop";
let data = load(input);

let is_lowercase_alphabet = ensure!(data, range!(b'a'..=b'z'));
assert!(!is_lowercase_alphabet);

let data = load(b"bbcdefghijklmnop");
// exclusive range
let is_not_a_or_z = ensure!(data, range!(b'a'..b'z'));
assert!(is_not_a_or_z);

let data = load(b"abbbbbbbbbbbbbbz");
let should_fail = ensure!(data, range!(b'a'..b'z'));

assert!(!should_fail);

§Less or Greater Than

Less than

range!(< 20)

Less than or eq

range!(<= 20)

Greater than

range!(> 20)

Greater than or eq

range!(>= 20)