#configuration #loader #env

metre-macros

metre crate 的宏

9 个版本

0.2.6 2024年7月28日
0.2.5 2024年7月23日
0.2.2 2024年5月31日
0.1.1 2024年5月30日

#849配置

Download history 398/week @ 2024-05-27 4/week @ 2024-06-03 186/week @ 2024-07-01 49/week @ 2024-07-08 227/week @ 2024-07-22 61/week @ 2024-07-29

每月 466 次下载
用于 2 crates

Apache-2.0

22KB
516

metre:Rust 配置加载器

又名:#[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 特质的 struct 来工作,通常通过 #[derive(Config)] 宏。

metre 在内部创建 struct 的深部分版本以从不同来源累积配置。

一旦所有配置都累积完成,您就可以通过定义的 struct 访问最终配置。如果所有来源的总和不符合所需属性,metre 将返回错误。

安装

cargo add metre

文档

https://docs.rs/metre

依赖项

~3–4.5MB
~81K SLoC