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配置

Download history 381/week @ 2024-05-30 3/week @ 2024-06-06 1/week @ 2024-06-13 3/week @ 2024-06-27 217/week @ 2024-07-04 17/week @ 2024-07-11 245/week @ 2024-07-25 32/week @ 2024-08-01

每月 277 次下载

Apache-2.0

36KB
551

metre:Rust 的配置加载器

AKA: #[derive(Config)]

crates.io build unit-tests integration-tests docs

是什么?

metre 是一个 Rust 配置加载器,允许您从多种格式(如 tomljsonjsoncyaml)加载配置。

它还支持多种来源,例如 程序默认值环境变量文件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

文档

https://docs.rs/metre

依赖项

~0.7–13MB
~143K SLoC