| 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 | |
| } | |
| ``` |