9个版本
0.2.3 | 2022年1月22日 |
---|---|
0.2.2 | 2022年1月22日 |
0.2.1 | 2021年12月8日 |
0.1.4 | 2021年12月7日 |
1498 在 编码 中排名
每月下载量 67
23KB
436 行
LayeredConf
又一个配置包
未来
希望这个包对某些人有用。即将到来的功能
- 更多文档
- 功能
功能
- 从多个来源生成配置层:文件、字符串、命令行参数...
- 使用Clap自动生成命令行帮助和用法信息
- Clap的大部分 derive 功能都可以使用
- 可以在配置文件中定义要加载的进一步配置文件,或在命令行选项中定义
快速示例
将 layeredconf
、clap
和 serde
添加到您的 Cargo.toml
[dependencies]
layeredconf = "0.2.0"
clap = "3.0.0-beta.5"
serde = { version = "1.0", features = ["derive"] }
定义您的配置
use layeredconf::{Builder, Format, LayeredConf, Source};
use serde::Deserialize;
#[derive(LayeredConf, Deserialize)]
struct Config {
/// Will also load this config file
#[layered(load_config)]
#[clap(long)]
config: Option<std::path::PathBuf>,
/// Required to be set in at least one Layer (config file, command line, etc.)
#[clap(long)]
name: String,
/// Optional field
#[clap(long)]
input: Option<String>,
/// Defaulted field
#[layered(default)]
#[clap(long)]
number: u32,
}
fn main() -> anyhow::Result<()> {
let config: Config = Builder)::new()
.new_layer(Source::OptionalFile {
path: "/etc/my_app/config.yaml",
format: Format::Auto,
})
.new_layer(Source::File {
path: "relative/config.yaml",
format: Format::Auto,
})
.new_layer(Source::Arguments)
.solidify()?;
// Use config in your application
}
依赖项
~5MB
~103K SLoC