Enum variants have three possible syntaxes:
-
unit
enum A { One } -
tuple
enum B { Two(u8, bool) } -
struct
enum C { Three { a: f64, b: String } }
You have to use the same syntax when pattern matching as the syntax the variant was defined as:
-
unit
match something { A::One => { /* Do something */ } } -
tuple
match something { B::Two(x, y) => { /* Do something */ } } -
struct
match something { C::Three { a: another_name, b } => { /* Do something */ } }
Beyond that, you can use various patterns that allow ignoring a value, such as _ or ... In this case, you need curly braces and the .. catch-all:
OperationMode::CBC { .. } => { /* Do something */ }
See also:
- Ignoring Values in a Pattern in The Rust Programming Language
- Appendix B: Operators and Symbols in The Rust Programming Language
- How to match struct fields in Rust?