| 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: | |
| ```compile_fail,E0004 | |
| 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: | |
| ``` | |
| enum Terminator { | |
| HastaLaVistaBaby, | |
| TalkToMyHand, | |
| } | |
| let x = Terminator::HastaLaVistaBaby; | |
| match x { | |
| Terminator::TalkToMyHand => {} | |
| Terminator::HastaLaVistaBaby => {} | |
| } | |
| // or: | |
| match x { | |
| Terminator::TalkToMyHand => {} | |
| _ => {} | |
| } | |
| ``` |