ax-config-gen 技术文档
路径:
components/axconfig-gen/axconfig-gen类型:库 + 二进制混合 crate 分层:组件层 / 宿主侧配置生成工具 版本:0.2.1文档依据:Cargo.toml、src/lib.rs、src/main.rs、src/config.rs、src/output.rs、src/ty.rs、src/value.rs、src/tests.rs、README.md
ax-config-gen 是 ArceOS 配置链路里的“配置编译器”。它运行在宿主机上,负责把一组带类型注释的 TOML 规格文件解析成统一配置,再输出成新的 TOML 文件或 Rust 常量代码;ax-config-macros 直接复用它的库接口,而 axbuild 则直接调用其可执行文件生成 .axconfig.toml。
1. 架构设计分析
1.1 设计定位
ax-config-gen 同时提供库接口和命令行入口,但两者都围绕同一个核心模型工作:
Config:整个配置集合,包含全局表和多个具名表。ConfigItem:单个配置项,保留表名、键名、值和注释。ConfigType:类型系统,只支持bool、int、uint、str、元组、数组以及推导中的Unknown。ConfigValue:配置值与类型校验/推导逻辑。Output:把Config重新输出为 TOML 或 Rust 常量代码。
这说明它不是一般意义上的“键值编辑器”,而是带类型和注释语义的配置转换器。
1.2 库侧分层
源码中的模块职责比较清晰:
config.rs:负责 TOML 到Config/ConfigItem的解析、合并和更新。value.rs:负责值的合法性检查、类型匹配、类型推导,以及 TOML/Rust 文本化。ty.rs:定义配置类型语法与 Rust 类型映射。output.rs:把配置对象写回 TOML 或 Rust 代码,并保留注释。main.rs:命令行壳层,负责把多份规格文件、旧配置、读写指令串起来。