capypad
0 Tage Serie
rust / beginner
Snippet

if let - Kompakter Musterabgleich

if let bietet eine kompakte Methode um einzelne Musterabgleiche ohne die erschopfenden Anforderungen von match zu behandeln. Es extrahiert Werte aus Enum-Varianten. while let setzt die Schleife fort wahrend ein Muster matcht, nutzlich fur Iteratoren und Streams.

snippet.rs
rust
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
enum Color {
Red,
Blue,
Green,
Custom(u8, u8, u8),
}
 
fn main() {
let preferred = Color::Custom(100, 50, 150);
if let Color::Custom(r, g, b) = preferred {
println!("Custom RGB: {}, {}, {}", r, g, b);
} else {
println!("Standard color");
}
while let Color::Blue = Color::Blue {
println!("Blue detected!");
break;
}
}
Erklärung
1
enum Color { Red, Blue, Green, Custom(u8, u8, u8) }
Enum mit Einheitsvarianten und Tuple-Variante Custom
2
if let Color::Custom(r, g, b) = preferred {
Bindet Felder aus der passenden Variante
3
while let Color::Blue = Color::Blue {
Schleife lauft weiter solange Muster matcht