E0005 - Error codes index
Description: Book listing all Rust error codes

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