Keyword match[−][src]
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!(), }Run
match
可以用来获取枚举的内部成员并直接使用它们。
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。