#configuration #loader #env #env-var #format-json

已删除 me0e

Metre,Rust的配置加载器

1 个不稳定版本

0.2.5 2024年7月23日

#38#format-json

Download history 100/week @ 2024-07-21 16/week @ 2024-07-28

每月116次下载

Apache-2.0

36KB
551

metre:Rust配置加载器

别名:#[derive(Config)]

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

依赖

~0.7–12MB
~145K SLoC