[−][src]Keyword match
Control flow based on pattern matching.
match
can be used to run code conditionally. Every pattern must
be handled exhaustively either explicitly or by using wildcards like
_
in the match
. Since match
is an expression, values can also be
returned.
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!(), // all other numbers _ => panic!(), }Run
match
can be used to gain access to the inner members of an enum
and use them directly.
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
For more information on match
and matching in general, see the Reference.