Simple Enum
一个Rust派生宏,用于在枚举上自动实现常用的方法。
功能
这个宏会为你的枚举自动生成以下方法:
to_str() - 将枚举变体转换为字符串
get_code() - 获取枚举变体的代码值
from_code() - 根据代码值创建枚举变体
desc() - 获取枚举变体的描述
使用方法
在你的枚举上使用 #[derive(SimpleEnum)],并为每个变体添加 #[simple_enum(code = X, desc = "描述")] 属性:
use simple_enum::SimpleEnum;
#[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,
}
#[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());
println!("{}", status.get_code());
println!("{}", status.desc());
let status_from_code = Status::from_code(1);
assert_eq!(status_from_code, Some(Status::Active));
let user_type = UserType::from_code("admin");
assert_eq!(user_type, Some(UserType::Admin));
}
支持的代码类型
- 整数类型 (
i32, u32, 等)
- 字符串类型 (
&str)
宏会自动推断code的类型并生成相应的方法签名。
运行示例
cargo run --bin example
这将运行包含的示例代码,展示不同类型code的使用方法。