3 个版本
0.1.2 | 2023 年 7 月 21 日 |
---|---|
0.1.1 | 2023 年 7 月 21 日 |
0.1.0 | 2023 年 7 月 21 日 |
#20 in #模式匹配
7KB
fallthrough
此软件包提供了一个 fallthrough
宏,允许通过 arms 进行带 fallthrough 的模式匹配,类似于 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);
}