Crates.io | fallthrough |
lib.rs | fallthrough |
version | 0.1.2 |
source | src |
created_at | 2023-07-21 08:27:34.717656 |
updated_at | 2023-07-21 08:31:46.019046 |
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,452 |
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);
}