`Literal` pins a value to specific strings/ints. Combine with the match statement (Python 3.10+) and a `_ : assert_never` clause for exhaustiveness — every variant must be handled or mypy yells at you.
Rust enums are full sum types — each variant can carry its own data. `match` is exhaustive: leave a variant unhandled and the compiler refuses to build.