Avatar ·

如何在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