#macro-derive #expose #values #compile-time #defined #named #static

derive-enum-all-values

一个过程宏,它公开了一个名为 all_values 的方法,该方法返回所有定义的值作为编译时静态值

1 个不稳定版本

0.1.0 2023年9月25日

#1878过程宏

自定义许可

6KB

derive-enum-all-values

Crates.io Docs.rs CI

关于

一个过程宏,它公开了一个名为 all_values 的方法,该方法返回所有定义的值作为编译时静态。

用法

derive_enum_all_values 添加到您的 Cargo.toml

[dependencies]
derive_enum_all_values = "0.1.0"

然后为您的枚举推导 AllValues

use derive_enum_all_values::AllValues;

#[derive(AllValues)]
enum MyEnum {
    Variant1,
    Variant2,
    // ... other variants ...
}

fn main() {
    for variant in MyEnum::all_values() {
        println!("{:?}", variant);
    }
}

此宏生成以下代码

impl MyEnum {
    pub fn all_values() -> &'static [MyEnum] {
        &[MyEnum::Variant1, MyEnum::Variant2]
    }
}

一个静态、编译时已知的数组,包含每个枚举值。

开发

如何开发此项目。

克隆此仓库

# When cloning, make sure symlinks are enabled
git clone -c core.symlinks=true https://github.com/Sewer56/derive-enum-all-values.git

安装Rust

Visual Studio Code集成

Code/VSCode 是事实上的Rust开发环境。

以下扩展是必需的

Reloaded项目中(.vscode)的VSCode配置包含以下内容

  • 保存时运行Rust代码检查器 clippy
  • 保存时运行代码格式化工具 rustfmt
  • 常见操作的任务(生成文档、主动CI/CD等)。

这些配置在 .vscode 文件夹中;可以通过 Ctrl+Shift+P -> 运行任务 运行任务。

文件布局

以下是你项目的预期文件布局

.vscode/
src/
Cargo.toml

src 文件夹应包含你项目的所有源代码。
Cargo.toml 应该位于项目的根目录中。

贡献

请参阅CONTRIBUTING以获取如何为该项目做出贡献的指导。

许可协议

根据MIT协议授权。

依赖关系

~295–750KB
~18K SLoC