6 个版本
0.4.0 | 2024年2月22日 |
---|---|
0.3.0 | 2023年5月4日 |
0.2.8 | 2022年7月1日 |
0.2.7 | 2022年2月24日 |
0.1.0 |
|
#90 在 配置
80 每月下载量
120KB
3K SLoC
cfg-rs: Rust 应用配置库
主要功能
- 一种获取所有配置对象的方法,见 get。
- 自动派生配置对象,见 FromConfig。
- 通过自动派生支持配置对象的默认值,见 派生属性。
- 配置值占位符解析,例如
${config.key}
,见 占位符。 - 随机配置值,例如
configuration.get::<u8>("random.u8")
将获取随机的u8
值。 - 支持可刷新的值类型 RefValue,它可以在刷新时更新。
- 支持刷新 Configuration。
- 易于使用,易于添加新配置源,易于组织配置,见 register_source。[^priority]
- 不依赖于 serde。
请参阅 示例 了解通用使用信息。
[^priority]: 配置顺序由注册源的顺序确定,注册较早的具有更高的优先级。
支持的文件格式
- Toml: toml, tml
- Yaml: yaml, yml
- Json: json
- Ini: ini
如何初始化配置
- 使用一行预定义源配置
use cfg_rs::*;
let configuration = Configuration::with_predefined().unwrap();
// use configuration.
详见 init。
- 自定义预定义源配置构建器
use cfg_rs::*;
init_cargo_env!();
let configuration = Configuration::with_predefined_builder()
.set_cargo_env(init_cargo_env())
.init()
.unwrap();
// use configuration.
详见 init。
- 组织您自己的源
use cfg_rs::*;
init_cargo_env!();
let mut configuration = Configuration::new()
// Layer 0: Register cargo env config source.
.register_source(init_cargo_env()).unwrap()
// Layer 1: Register customized config.
.register_kv("customized_config")
.set("hello", "world")
.finish()
.unwrap();
// Layer 2: Register random value config.
#[cfg(feature = "rand")]
{
configuration = configuration.register_random().unwrap();
}
// Layer 3: Register all env variables `CFG_*`.
configuration = configuration.register_prefix_env("CFG").unwrap()
// Layer 4: Register yaml file(Need feature yaml).
.register_file("/conf/app.yaml", true).unwrap();
#[cfg(feature = "toml")]
{
let toml = inline_source!("../app.toml").unwrap();
configuration = configuration.register_source(toml).unwrap();
}
// use configuration.
请参阅register_kv、register_file、register_random、register_prefix_env以获取详细信息。
依赖关系
约0.3–1.3MB
约28K SLoC