2个版本
0.1.1 | 2023年11月6日 |
---|---|
0.1.0 | 2023年10月26日 |
#641 in 进程宏
7KB
76 行
merge-cfg
根据优先级合并或覆盖配置。
用法
首先,您可以通过任何方式从配置文件中获取配置。然后从命令行参数中派生MergeCfg
来合并您的配置。
use merge_cfg::MergeCfg;
#[derive(Debug, MergeCfg)]
struct Config {
id: u64,
name: String,
scores: Vec<i32>,
}
fn main() {
let mut cfg = Config {
id: 1,
name: "abc".to_string(),
scores: vec![-1],
};
cfg.merge_cfg();
println!("{:?}", cfg);
}
命令行参数格式:{field}={value}
,字段名称应与您在结构中定义的名称相同
$ cargo run
Config { id: 1, name: "abc", scores: [-1] }
$ cargo run id=2
Config { id: 2, name: "abc", scores: [-1] }
$ cargo run name=xyz
Config { id: 1, name: "xyz", scores: [-1] }
$ cargo run scores=100 scores=-1000
Config { id: 1, name: "abc", scores: [100, -1000] }
$ cargo run id=2 name=xyz scores=100
Config { id: 2, name: "xyz", scores: [100] }
路线图
- 支持环境变量
- 合并优先级
- 合并选项(选择要合并的项)
- 更多命令行参数格式
- 简单等式格式:
{field}={value}
- getopt格式:
-h --{field} {value}
- 简单等式格式:
- 各种用例
- 非panic函数
- 不可变函数
- 字段别名
- 支持复杂字段类型
- 文档
- README
- ...
依赖关系
~240–680KB
~16K SLoC