如何从枚举变体中提取内部值(当我确切知道是哪个变体时)
你好!我在用 Rust 编程时遇到了枚举处理的问题。我有这样的代码:
```rust
enum Message {
Text(String),
Number(i32),
Quit,
}
fn process(msg: Message) {
// 我确切知道 msg 是 Text(String)
// 但我如何获取字符串?
let text = msg; // 这里当然会报错
println!("消息: {}", text);
}
```
我经常遇到这样的情况:我确切知道正在处理哪个枚举变体——例如,在条件检查之后,或者在程序逻辑保证的上下文中。但 Rust 不允许直接“解包”枚举并提取内部值。
我知道 `match`,但当我确信只有一个特定变体时,编写一个处理所有变体的完整 match 似乎有些冗余。使用 `if let` 看起来更简单,但即使这样,我得到的是 Option 或 Result,而我只需要值。
有没有办法在不写多余代码的情况下做到这一点?类似于 Option 的 `unwrap()`?也许有某种函数?