Wie extrahiere ich den inneren Wert aus einem Enum-Variant, wenn ich genau weiß, welcher Variant es ist?
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ß, welchen Enum-Variant 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 den Enum zu "entpacken" und den inneren Wert herauszuholen.
Ich kenne `match`, aber einen ganzen match mit der Behandlung aller Varianten zu schreiben, wenn ich mir bei einem bestimmten sicher bin, scheint überflüssig. Die Verwendung von `if let` scheint...