rust / intermediate
Snippet
Musterabgleich mit Enums
Musterabgleich mit match-Ausdrücken ist Rosts leistungsstarke Methode zur Behandlung von Enums. Der Compiler stellt sicher, dass alle Fälle abgedeckt sind, was den Code erschöpfend und sicher macht. Im Gegensatz zu switch-Anweisungen in anderen Sprachen muss Rusts match erschöpfend sein — das Auslassen eines Falls führt zu einem Kompilierfehler. Dies eliminiert ganze Kategorien von Bugs zur Kompilierzeit.
snippet.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#[derive(Debug)]enum Direction {North,South,East,West,}fn move(direction: Direction) -> &'static str {match direction {Direction::North => "Moving north",Direction::South => "Moving south",Direction::East => "Moving east",Direction::West => "Moving west",}}fn main() {let heading = Direction::North;println!("{:?} -> {}", heading, move(heading));}
Erklärung
1
#[derive(Debug)]
Makro, das automatisch die Debug-Trait-Implementierung für Debug-Ausgaben generiert
2
enum Direction { ... }
Enum das vier Richtungs-Varianten definiert, alle unit-ähnliche Structs
3
fn move(direction: Direction) -> &'static str
Funktion die Direction-Enum nimmt und einen String-Slice zurückgibt
4
match direction { ... }
Erschöpfender Musterabgleich — Compiler erzwingt alle Varianten behandelt
5
Direction::North => "Moving north"
Musterarm der Variante zu Rückgabewert mapt