Wieso soll ich den immer alles definieren? Vielleicht will ich mit der Case ja nur Teile prüfen...
Oder übersehen ich da etwas?
Nein, da übersiehst du nichts. Aber das Problem ist dabei, dass solcher Code auch fehleranfällig ist. Denn du merkst ja gar nicht, wenn ein Enum erweitert wird und der Fall nicht behandelt wird. Wenn mehrere Entwickler an einem Projekt arbeiten, passiert so leicht ein Fehler.
Genau aus diesen Gründen wird das in Rust und anderen Sprachen geprüft und genau deshalb werden diese an sicherheitsrelevanten Stellen gerne eingesetzt.
Für den von dir beschriebenen Fall kann man z.B. mit if-Statements arbeiten.