如何在Rust中获取枚举变体的字符串表示?
大家好!我刚开始学习Rust,遇到了一个看似简单但找不到优雅解决方案的问题。
我有一个订单状态的枚举:
```rust
enum OrderStatus {
Pending,
Processing,
Shipped,
Delivered,
Cancelled,
}
```
我需要将当前状态输出到控制台用于日志记录和用户显示。我尝试直接使用 `println!("{}", status)`,但编译器报错说我的类型没有实现 `std::fmt::Display` trait。
我知道可以添加 `#[derive(Debug)]` 并使用 `{:?}`,但这会输出类似 `OrderStatus::Pending` 的内容,而我只需要不带枚举名称的 "Pending"。我也尝试为每个变体编写 match 表达式,但这看起来很笨重,尤其是当变体很多时。
请问在Rust中如何正确且惯用地从枚举变体获取字符串?最好避免不必要的复制并保持最小开销。提前感谢!