Avatar ·

如何从枚举变体中提取内部值(当我确切知道是哪个变体时)

你好!我在用 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()`?也许有某种函数?