现状
nodelite-proto/src/config/ 约 2,000 行样板代码:
raw.rs (644 行) = 10 个配置节 × (Raw struct + 手写 Default + validate)
defaults.rs (210 行) - 默认值转发函数
helpers.rs (259 行) - 验证辅助
raw/alerts.rs (389 行) - alerts 配置
每个配置节都是重复模式:Raw struct + Default impl + validate → Final struct。
影响
- 新增配置项需手写大量样板
- Default impl 与 validate 逻辑分散,易不一致
- 代码量大,维护成本高
建议
-
使用 serde 默认值:
#[derive(Deserialize)]
struct ServerConfigRaw {
#[serde(default = "default_port")]
port: u16,
}
fn default_port() -> u16 { 8080 }
-
宏生成样板(可选):
config_section! {
ServerSection {
port: u16 = 8080,
host: String = "0.0.0.0",
}
}
-
合并 validate:
- 在 deserialize 时用
#[serde(validate)] 钩子
- 或统一的
validated() builder
验收
来源
report/project-report-2026-06-11.md 可维护性
现状
nodelite-proto/src/config/约 2,000 行样板代码:raw.rs(644 行) = 10 个配置节 × (Raw struct + 手写 Default + validate)defaults.rs(210 行) - 默认值转发函数helpers.rs(259 行) - 验证辅助raw/alerts.rs(389 行) - alerts 配置每个配置节都是重复模式:Raw struct + Default impl + validate → Final struct。
影响
建议
使用 serde 默认值:
宏生成样板(可选):
合并 validate:
#[serde(validate)]钩子validated()builder验收
cargo test -p nodelite-proto通过来源
report/project-report-2026-06-11.md可维护性