capypad
0 Tage Serie
rust / intermediate
Snippet

Enums mit Daten und Pattern Matching

Rust-Enums sind algebraische Datentypen. Sie können in jeder Variante verschiedene Datentypen speichern, die mit 'match' elegant extrahiert werden können.

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),
}
}
Erklärung
1
KeyPress(char),
Eine Variante, die ein einzelnes Zeichen enthält.
2
WebEvent::Click { x, y } =>
Vergleicht das Muster der Click-Variante und bindet die Felder an die Variablen x und y.