Cairo allows you to define types called "enums" which enumerate possible values. Enums are a feature in many languages, but their capabilities differ in each language. Cairo’s enums are most similar to Rust and algebraic data types in functional languages. Useful in combination with enums is Cairo's "pattern matching" facility, which makes it easy to run different code for different values of an enumeration.