Comment on shadowing with patterns

Fixes #28687
This commit is contained in:
Steve Klabnik 2015-10-07 16:41:15 -04:00
parent c056cbbe05
commit bbc2056694
1 changed files with 25 additions and 0 deletions

View File

@ -23,6 +23,31 @@ match x {
This prints `one`.
Theres one pitfall with patterns: like anything that introduces a new binding,
they introduce shadowing. For example:
```rust
let x = 'x';
let c = 'c';
match c {
x => println!("x: {} c: {}", x, c),
}
println!("x: {}", x)
```
This prints:
```text
x: c c: c
x: x
```
In other words, `x =>` matches the pattern and introduces a new binding named
`x` thats in scope for the match arm. Because we already have a binding named
`x`, this new `x` shadows it.
# Multiple patterns
You can match multiple patterns with `|`: