如何在Rust中创建带常量值的枚举?
大家好!我在从C++和Python转向Rust后,遇到了一个意想不到的问题:如何正确创建带常量值的枚举(enums)?在C++中,我习惯写类似 `enum Color { RED = 0xFF0000, GREEN = 0x00FF00, BLUE = 0x0000FF };` 这样的代码,每个变体都有数值。在Python中,我使用 `IntEnum` 或简单的常量类。但在Rust中,当我尝试这样做:
```rust
enum HttpStatus {
Ok = 200,
NotFound = 404,
InternalServerError = 500,
}
```
编译器会报错,如果我试图将这些值用作整数。例如,我想将状态转换为数字以便通过网络发送或记录日志。我试过写 `status as u32`,但这只对显式继承整数类型的枚举有效。而如果我想存储字符串或其他复杂数据呢?例如,一个包含代码和文本描述的“错误”枚举:
```rust
enum Error {
NotFound { code: 42