| #### Note: this error code is no longer emitted by the compiler. | |
| Patterns used to bind names must be irrefutable. That is, they must guarantee | |
| that a name will be extracted in all cases. Instead of pattern matching the | |
| loop variable, consider using a `match` or `if let` inside the loop body. For | |
| instance: | |
| ```compile_fail,E0005 | |
| let xs : Vec<Option<i32>> = vec![Some(1), None]; | |
| // This fails because `None` is not covered. | |
| for Some(x) in xs { | |
| // ... | |
| } | |
| ``` | |
| Match inside the loop instead: | |
| ``` | |
| let xs : Vec<Option<i32>> = vec![Some(1), None]; | |
| for item in xs { | |
| match item { | |
| Some(x) => {}, | |
| None => {}, | |
| } | |
| } | |
| ``` | |
| Or use `if let`: | |
| ``` | |
| let xs : Vec<Option<i32>> = vec![Some(1), None]; | |
| for item in xs { | |
| if let Some(x) = item { | |
| // ... | |
| } | |
| } | |
| ``` |