3 releases
0.1.2 | Jul 21, 2023 |
---|---|
0.1.1 | Jul 21, 2023 |
0.1.0 | Jul 21, 2023 |
#1664 in Rust patterns
7KB
fallthrough
This crate provides a fallthrough
macro, which allows performing a pattern match with fallthrough through the arms, in the style of C switch
.
use fallthrough::fallthrough;
fn fall(scrutinee: u32) -> u32 {
let mut ret: u32 = 0;
fallthrough!(scrutinee,
val @ (0 | 63..) => ret = val + 7,
'one: 1 => ret += 8,
'two: 2 => ret += 9,
'three: 3 if true => { ret += 10; break 'end },
'four: 4 => ret = 42,
'five: 5 => { ret += 1; break 'seven },
'six: 6 => ret = 3,
'seven: _ => ret *= 2,
'end
);
ret
}
fn main() {
assert_eq!(fall(0), 34);
assert_eq!(fall(1), 27);
assert_eq!(fall(2), 19);
assert_eq!(fall(3), 10);
assert_eq!(fall(4), 86);
assert_eq!(fall(5), 2);
assert_eq!(fall(6), 6);
assert_eq!(fall(7), 0);
assert_eq!(fall(64), 98);
}