1 个不稳定版本
0.2.5 | 2024年7月23日 |
---|
#38 在 #format-json
每月116次下载
36KB
551 行
metre:Rust配置加载器
别名:#[derive(Config)]
是什么?
metre 是一个Rust配置加载器,允许您从多种格式(如 toml,json,jsonc 和 yaml)加载配置。
它还支持多种来源,例如 程序默认值,环境变量,文件 和 URL。
用法
use metre::{Config, ConfigLoader, Format};
#[derive(Config)]
struct MyConfig {
#[config(default = 8000)]
port: u16,
foo: String
}
let mut loader = ConfigLoader::<MyConfig>::new();
loader.defaults()?;
loader.file("config.json", Format::Json)?;
loader.env()?;
// config have the type MyConfig here
let config = loader.finish()?;
重点
metre 的重点是提供一种 声明式 和 类型安全 的方法来在Rust中加载配置。
如何实现?
metre 通过定义一个实现了 Config
特质的 struct 来工作,通常通过 #[derive(Config)]
宏。
metre 在内部创建 struct 的深度部分版本来累积来自不同来源的配置。
一旦所有配置都已累积,您就可以通过定义的 struct 访问最终配置。如果所有来源的总和不符合所需的属性,metre 将返回错误。
安装
cargo add metre
文档
依赖
~0.7–12MB
~145K SLoC