如何访问Rust中enum的值?解析match、if let及其他方法
大家好!我最近开始学习Rust,在处理枚举(enums)时遇到了问题。我创建了一个简单的enum来表示订单状态:
```rust
enum OrderStatus {
Pending,
Processing,
Shipped(String),
Delivered { date: String, signature: bool },
}
```
但我不明白如何从变体中提取数据。例如,当状态是`Shipped`时,我需要获取追踪号码(`String`)。当是`Delivered`时,需要获取日期和签名。直接写`order_status.tracking_number`是不行的——编译器会报错。
我尝试过使用`match`,但总是搞混语法,并得到类似“expected enum, found &str”的错误。文档中提到了`if let`和`unwrap`,但我不明白何时该用哪个。请告诉我如何正确访问Rust中enum内部的数据?希望能看到不同变体的示例:包括命名字段、元组以及无数据的变体。
另外我还想知道:是否可以通过某种方式...