Wie extrahiere ich den inneren Wert aus einer Enum-Variante, wenn ich genau weiß, um welche Variante es sich handelt?
Hallo! Ich schreibe in Rust und bin auf ein Problem bei der Arbeit mit Enums gestoßen. Ich habe diesen Code:
```rust
enum Message {
Text(String),
Number(i32),
Quit,
}
fn process(msg: Message) {
// Ich weiß genau, dass msg Text(String) ist
// Aber wie bekomme ich den String?
let text = msg; // hier gibt es natürlich einen Fehler
println!("Nachricht: {}", text);
}
```
Ich stoße oft auf Situationen, in denen ich genau weiß, welche Enum-Variante ich verarbeite – zum Beispiel nach einer Bedingungsprüfung oder in einem Kontext, wo dies durch die Programmlogik garantiert ist. Aber Rust erlaubt es nicht einfach, die Enum zu "entpacken" und den inneren Wert herauszuholen.
Ich kenne `match`, aber ein ganzes match mit der Behandlung aller Varianten zu schreiben, wenn ich mir bei einer bestimmten sicher bin, scheint überflüssig. Die Verwendung von `if let` scheint...
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen
Blogs