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