Error code E0005

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:

#![allow(unused)] fn main() { 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:

#![allow(unused)] fn main() { let x = Some(1); match x { Some(y) => { // do something }, None => {} } // or: if let Some(y) = x { // do something } }