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 2021年8月21日

#90配置

Download history 8/week @ 2024-04-26 4/week @ 2024-05-24 6/week @ 2024-05-31 5/week @ 2024-06-07 23/week @ 2024-06-14 13/week @ 2024-06-21 23/week @ 2024-06-28 8/week @ 2024-07-05 1/week @ 2024-07-12 45/week @ 2024-07-26 14/week @ 2024-08-02 21/week @ 2024-08-09

80 每月下载量

MIT 许可证

120KB
3K SLoC

cfg-rs: Rust 应用配置库

Crates.io Crates.io Documentation dependency status License Actions Status Minimum supported Rust version

主要功能

  • 一种获取所有配置对象的方法,见 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_kvregister_fileregister_randomregister_prefix_env以获取详细信息。

依赖关系

约0.3–1.3MB
约28K SLoC