## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

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