As the Rust Book tells us, match is not the only place where pattern matching occurs. It also happens in many other places: let, if let, while let, for, function arguments, etc. Even a simple let x = 1 exhibits pattern matching: we match 1 against pattern x. This is called the identifier pattern and it never fails, hence it is called a irrefutable pattern. We must use irrefutable patterns with function parameters, let statements, and for loops. If we try to write something like let Some(x) = Some(1), it will fail to compile since the match could fail and we aren't covering all the cases. A pattern which may fail is called a refutable pattern. I am reminding you about those let patterns here just because it's easier to use them in examples rather than in a fully fledged match even though such examples may feel more contrived.