| Patterns used to bind names must be irrefutable, that is, they must guarantee |
| that a name will be extracted in all cases. |
| |
| Erroneous code example: |
| |
| ```compile_fail,E0005 |
| let x = Some(1); |
| let Some(y) = x; |
| // error: refutable pattern in local binding: `None` not covered |
| ``` |
| |
| If you encounter this error you probably need to use a `match` or `if let` to |
| deal with the possibility of failure. Example: |
| |
| ``` |
| let x = Some(1); |
| |
| match x { |
| Some(y) => { |
| // do something |
| }, |
| None => {} |
| } |
| |
| // or: |
| |
| if let Some(y) = x { |
| // do something |
| } |
| ``` |