21.5 Match Expressions
A match
expression takes a value (or the result of an expression), compares it against multiple patterns, and executes the first matching arm. Each arm consists of a pattern, the =>
token, and the code to run or expression to evaluate:
match VALUE {
PATTERN => EXPRESSION,
PATTERN => EXPRESSION,
PATTERN => EXPRESSION,
}
21.5.1 Simple Example: Option<i32>
fn main() { let x: Option<i32> = Some(5); let result = match x { None => None, Some(i) => Some(i + 1), }; println!("{:?}", result); // Outputs: Some(6) }
Because Option<i32>
only has two variants (None
and Some
), the match is exhaustive. Rust forces you to either handle each variant or include a wildcard _
.