capypad
0 day streak
rust / intermediate
Snippet

Enums with Data and Pattern Matching

Rust enums are algebraic data types. They can store different types of data in each variant, which can be elegantly extracted using 'match'.

snippet.rs
rust
1
2
3
4
5
6
7
8
9
10
11
12
13
enum WebEvent {
PageLoad,
KeyPress(char),
Click { x: i64, y: i64 },
}
 
fn inspect(event: WebEvent) {
match event {
WebEvent::PageLoad => println!("page loaded"),
WebEvent::KeyPress(c) => println!("pressed '{}'", c),
WebEvent::Click { x, y } => println!("clicked at {}, {}", x, y),
}
}
Breakdown
1
KeyPress(char),
A variant that holds a single character.
2
WebEvent::Click { x, y } =>
Pattern matches the Click variant and binds its fields to variables x and y.