| Crates.io | simple-enum |
| lib.rs | simple-enum |
| version | 0.1.0 |
| created_at | 2025-09-02 04:12:20.714609+00 |
| updated_at | 2025-09-02 04:12:20.714609+00 |
| description | easier to use rust enum |
| homepage | |
| repository | https://github.com/hitolz/simple-enum/ |
| max_upload_size | |
| id | 1820597 |
| size | 16,901 |
一个Rust派生宏,用于在枚举上自动实现常用的方法。
这个宏会为你的枚举自动生成以下方法:
to_str() - 将枚举变体转换为字符串get_code() - 获取枚举变体的代码值from_code() - 根据代码值创建枚举变体desc() - 获取枚举变体的描述在你的枚举上使用 #[derive(SimpleEnum)],并为每个变体添加 #[simple_enum(code = X, desc = "描述")] 属性:
use simple_enum::SimpleEnum;
// 支持整数类型的code
#[derive(SimpleEnum, Debug, PartialEq)]
pub enum Status {
#[simple_enum(code = 1, desc = "活跃状态")]
Active,
#[simple_enum(code = 0, desc = "非活跃状态")]
Inactive,
#[simple_enum(code = 2, desc = "暂停状态")]
Suspended,
}
// 支持字符串类型的code
#[derive(SimpleEnum, Debug, PartialEq)]
pub enum UserType {
#[simple_enum(code = "admin", desc = "管理员用户")]
Admin,
#[simple_enum(code = "user", desc = "普通用户")]
Regular,
#[simple_enum(code = "guest", desc = "访客用户")]
Guest,
}
fn main() {
let status = Status::Active;
// 获取字符串表示
println!("{}", status.to_str()); // "Active"
// 获取代码值
println!("{}", status.get_code()); // 1
// 获取描述
println!("{}", status.desc()); // "活跃状态"
// 根据代码值创建枚举
let status_from_code = Status::from_code(1);
assert_eq!(status_from_code, Some(Status::Active));
// 字符串类型的code
let user_type = UserType::from_code("admin");
assert_eq!(user_type, Some(UserType::Admin));
}
i32, u32, 等)&str)宏会自动推断code的类型并生成相应的方法签名。
cargo run --bin example
这将运行包含的示例代码,展示不同类型code的使用方法。