capypad
0 Tage Serie
rust / beginner
Snippet

Grundlegende Enum-Definition

Enums definieren Typen mit festen Varianten. Varianten können unit-ähnlich, tupel-ähnlich (mit Daten) oder struct-ähnlich sein. Der 'match'-Ausdruck behandelt alle Enum-Varianten erschöpfend. 'if let' bietet eine prägnante Möglichkeit, einzelne Muster zu vergleichen.

snippet.rs
rust
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
enum Direction {
North,
South,
East,
West,
}
 
enum Status {
Active(u32),
Inactive,
Suspended { reason: String },
}
 
fn main() {
let heading = Direction::North;
match heading {
Direction::North => println!("Heading north"),
Direction::South => println!("Heading south"),
Direction::East => println!("Heading east"),
Direction::West => println!("Heading west"),
}
let current = Status::Active(42);
if let Status::Active(credits) = current {
println!("Active with {} credits", credits);
}
}
Erklärung
1
enum Direction { North, South, East, West }
Einfaches Enum mit Unit-Varianten
2
enum Status { Active(u32), Inactive, Suspended { reason: String } }
Enum mit Tupel- und Struct-Varianten
3
Direction::North
Auf Variable zugreifen mit :: Pfadtrennzeichen
4
if let Status::Active(credits) = current
Mustervergleich einzelner Variante ohne Erschöpfung