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 folgenden 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 so das enum zu "entpacken" und den inneren Wert zu holen.
Ich kenne `match`, aber einen ganzen match mit allen Varianten zu schreiben, wenn ich mir bei einem bestimmten sicher bin, scheint überflüssig. `if let` zu verwenden ist zwar einfacher, aber selbst damit bekomme ich ein Option oder Result, während ich einfach den Wert brauche.
Gibt es einen Weg, dies ohne überflüssigen Code zu tun? So etwas wie `unwrap()` für Option? Vielleicht gibt es eine Funktion...