9 个版本
0.2.6 | 2024 年 7 月 28 日 |
---|---|
0.2.5 | 2024 年 7 月 28 日 |
0.2.2 | 2024 年 5 月 31 日 |
0.1.1 | 2024 年 5 月 30 日 |
206 在 配置
每月 277 次下载
36KB
551 行
metre:Rust 的配置加载器
AKA: #[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
特性的结构体来实现,通常通过 #[derive(Config)]
宏。
在内部,metre 创建结构体的深部分版本来累积来自不同来源的配置。
一旦累积了所有配置,您就可以通过定义的结构体访问最终配置。如果所有来源的总和不符合所需属性,metre 将返回一个错误。
安装
cargo add metre
文档
依赖项
~0.7–13MB
~143K SLoC