az-dict-macros
自动收集自
crates/core/az-dict-macros/README.md。
数据字典枚举生成宏,从 JSON 规格文件自动生成类型安全的 Rust 枚举,消除手写枚举与字典数据不一致的风险。
功能
- 从 JSON 字典规格编译期生成完整枚举类型
- 自动提供
code()、label()、description()、raw_value()、meta_json()等方法,并把Display直接派生到字典 label - 支持开枚举(
open_enum),未知值归入Unknown(T)变体 - 支持
i64和&'static str两种原始值类型 - 生成的枚举通过
az-derive-aliases的 alias 组装Debug、Clone、Copy、PartialEq、Eq、Hash、Display
安装
在 Cargo.toml 中添加:
[dependencies]
az-dict-macros = { path = "../az-dict-macros" } # workspace 内部引用
az-dict-spec = { path = "../az-dict-spec" } # 依赖的规格解析 crate
az-derive-aliases = { path = "../az-derive-aliases" } # 生成枚举所需的 alias 组装 crate
# 或发布后:
# az-dict-macros = "0.1" # crates.io 引用
# az-dict-spec = "0.1"
# az-derive-aliases = "2026.5.10"
用法
use az_dict_macros::dict_enum;
dict_enum!(
name = Gender,
dict = "gender",
spec = include_str!("gender.json")
);
// 生成的枚举提供了类型安全的字典访问:
let g = Gender::Male;
assert_eq!(g.code(), "male");
assert_eq!(g.to_string(), "男");
assert_eq!(g.raw_value(), "male");
// 遍历所有字典项
for item in Gender::items() {
println!("{}: {}", item.code, item.label);
}
依赖的 crates
az-dict-spec- 字典 JSON 规格解析与数据模型proc-macro2- 过程宏 token 流操作quote- Rust 代码生成syn- Rust 语法解析serde_json- JSON 序列化(用于 meta 字段)