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