simple-enum

Crates.iosimple-enum
lib.rssimple-enum
version0.1.0
created_at2025-09-02 04:12:20.714609+00
updated_at2025-09-02 04:12:20.714609+00
descriptioneasier to use rust enum
homepage
repositoryhttps://github.com/hitolz/simple-enum/
max_upload_size
id1820597
size16,901
Hitol (hitolz)

documentation

README

Simple Enum

一个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的使用方法。

Commit count: 1

cargo fmt