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 => {} _ => {} } }