# Simple Enum
一个Rust派生宏,用于在枚举上自动实现常用的方法。
## 功能
这个宏会为你的枚举自动生成以下方法:
- `to_str()` - 将枚举变体转换为字符串
- `get_code()` - 获取枚举变体的代码值
- `from_code()` - 根据代码值创建枚举变体
- `desc()` - 获取枚举变体的描述
## 使用方法
在你的枚举上使用 `#[derive(SimpleEnum)]`,并为每个变体添加 `#[simple_enum(code = X, desc = "描述")]` 属性:
```rust
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,
}
```
## 使用示例
```rust
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的类型并生成相应的方法签名。
## 运行示例
```bash
cargo run --bin example
```
这将运行包含的示例代码,展示不同类型code的使用方法。