| Crates.io | fallthrough |
| lib.rs | fallthrough |
| version | 0.1.3 |
| created_at | 2023-07-21 08:27:34.717656+00 |
| updated_at | 2025-02-23 22:58:24.396734+00 |
| description | Pattern match with fallthrough, in the style of C switch |
| homepage | https://github.com/Jules-Bertholet/fallthrough |
| repository | https://github.com/Jules-Bertholet/fallthrough |
| max_upload_size | |
| id | 922295 |
| size | 18,759 |
fallthroughThis 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);
}