4个版本
0.1.3 | 2021年5月20日 |
---|---|
0.1.2 | 2021年5月17日 |
0.1.1 | 2021年5月16日 |
0.1.0 | 2021年5月15日 |
在配置分类中排名455
每月下载42次
9KB
Confu
为Rust编写的软件提供通过环境或命令行参数进行无装饰的应用配置。
为什么选择Confu?面向微服务,直接依赖项列表最少: syn
、quote
、proc-macro2
、proc-macro-error
。
如果希望有更友好的命令行解析,有许多优秀且经过验证的crate替代品。例如,Clap 👏。
特性
- 在编译时(当为您的应用生成二进制文件时),捕获
- 构建类型,例如
debug
或release
- 构建版本,如果通过环境变量
PREFIX]VERSION
提供,否则设置为<未指定>
- 构建类型,例如
- 从以下之一读取配置
- 环境
- 命令行参数
- 默认值
- 配置项可以有可选的前缀,如
APP_
- 每个配置项可以是
- 必需的 - 如果未提供,将引发
panic
- 受保护的 - 将显示 "
xxxxxxx
" 而不是敏感信息 - 隐藏的 - 完全不显示
- 必需的 - 如果未提供,将引发
- 具体性:默认值 -> 环境 -> 参数。参数是最具体的,如果也定义了相应的环境值,则将优先于该环境值
用法/示例
在仓库中提供了一个示例。以下也是快速使用摘要
在Cargo.toml
中
[dependencies]
confu = "*"
然后,以下代码
use confu::Confu;
#[derive(Confu)]
#[confu_prefix = "APP_"]
struct Config {
#[default = "postgres"]
db_user: String,
#[protect]
#[default = "postgres"]
db_password: String,
#[default = "127.0.0.1"]
api_host: String,
#[require]
telemetry: String,
#[hide]
super_secret_stuff: String,
}
fn main() {
let config = Config::confu();
config.show();
}
应该产生类似的结果,前提是设置了环境变量APP_VERSION="0.1.0"
$ cargo run --quiet -- --app_telemetry=yes
build: debug
version: 0.1.0
APP_DB_USER/--app_db_user=postgres (default: "postgres")
APP_DB_PASSWORD/--app_db_password=xxxxxxx (default: "xxxxxxx")
APP_API_HOST/--app_api_host=127.0.0.1 (default: "127.0.0.1")
APP_TELEMETRY/--app_telemetry=yes (required)
如果省略了必需的参数,将引发panic
$ cargo run --quiet
thread 'main' panicked at 'required argument APP_TELEMETRY/--app_telemetry was not provided.', examples\basic\src\config.rs:4:17
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
通往v0.2.0的道路
- 编写文档
- 编写测试
- 在宏中提供更好的错误报告
- 解析为数值和
bool
类型
依赖项
~1.5MB
~36K SLoC