On this page
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!(),
}
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!(),
}
For more information on match
and matching in general, see the Reference.
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/keyword.match.html