在Rust中创建具有常数值的枚举通常指的是给枚举的每个变体分配一个固定的整数值。这种类型的枚举在其他编程语言中很常见,比如C或C++中的枚举。在Rust中,这可以通过使用repr
属性和显式地为每个变体指派值来实现。下面是一个具体的例子:
rust// 使用`repr`属性来指定枚举底层使用的整数类型 #[repr(i32)] enum StatusCode { Success = 200, NotFound = 404, InternalServerError = 500, } fn main() { // 可以通过枚举变体直接访问它们的数值 println!("Success code: {}", StatusCode::Success as i32); println!("Not Found code: {}", StatusCode::NotFound as i32); println!("Internal Server Error code: {}", StatusCode::InternalServerError as i32); }
在这个例子中:
#[repr(i32)]
属性告诉编译器这个枚举应该使用i32
类型来存储其值。StatusCode
枚举有三个变体,每个变体都被赋予了一个固定的i32
类型的值。- 在
main
函数中,通过类型转换(例如StatusCode::Success as i32
),我们可以获取枚举变体对应的整数值。
这种方法使得枚举在内存中的表示是确定的,这在与其他语言或系统接口时特别有用,例如在需要确保二进制兼容性的FFI(Foreign Function Interface)场景中。
2024年8月7日 17:09 回复