#### 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> = vec![Some(1), None]; // This fails because `None` is not covered. for Some(x) in xs { // ... } ``` Match inside the loop instead: ``` let xs : Vec> = vec![Some(1), None]; for item in xs { match item { Some(x) => {}, None => {}, } } ``` Or use `if let`: ``` let xs : Vec> = vec![Some(1), None]; for item in xs { if let Some(x) = item { // ... } } ```