# Error code E0004

This error indicates that the compiler cannot guarantee a matching pattern for one or more possible inputs to a match expression. Guaranteed matches are required in order to assign values to match expressions, or alternatively, determine the flow of execution.

Erroneous code example:

    #![allow(unused)]
    fn main() {
    enum Terminator {
        HastaLaVistaBaby,
        TalkToMyHand,
    }

    let x = Terminator::HastaLaVistaBaby;

    match x { // error: non-exhaustive patterns: `HastaLaVistaBaby` not covered
        Terminator::TalkToMyHand => {}
    }
    }

If you encounter this error you must alter your patterns so that every possible value of the input type is matched. For types with a small number of variants (like enums) you should probably cover all cases explicitly. Alternatively, the underscore `_` wildcard pattern can be added after all other patterns to match "anything else". Example:

    #![allow(unused)]
    fn main() {
    enum Terminator {
        HastaLaVistaBaby,
        TalkToMyHand,
    }

    let x = Terminator::HastaLaVistaBaby;

    match x {
        Terminator::TalkToMyHand => {}
        Terminator::HastaLaVistaBaby => {}
    }

    // or:

    match x {
        Terminator::TalkToMyHand => {}
        _ => {}
    }
    }