Expand description
基于模式匹配的控制流。
match
可用于有条件地执行代码。
必须显式或通过使用通配符 (例如 match
中的 _
) 来详尽地处理每个模式。
由于 match
是表达式,因此也可以返回值。
let opt = Option::None::<usize>;
let x = match opt {
Some(int) => int,
None => 10,
};
assert_eq!(x, 10);
let a_number = Option::Some(10);
match a_number {
Some(x) if x <= 5 => println!("0 to 5 num = {x}"),
Some(x @ 6..=10) => println!("6 to 10 num = {x}"),
None => panic!(),
// 所有其他数字
_ => panic!(),
}
Runmatch
可用于访问枚举的内部成员并直接使用它们。
enum Outer {
Double(Option<u8>, Option<String>),
Single(Option<u8>),
Empty
}
let get_inner = Outer::Double(None, Some(String::new()));
match get_inner {
Outer::Double(None, Some(st)) => println!("{st}"),
Outer::Single(opt) => println!("{opt:?}"),
_ => panic!(),
}
Run有关 match
和常规匹配的更多信息,请参见 Reference。