4 个版本
0.1.3 | 2024 年 8 月 12 日 |
---|---|
0.1.2 | 2024 年 8 月 12 日 |
0.1.1 | 2024 年 8 月 11 日 |
0.1.0 | 2024 年 8 月 11 日 |
138 在 配置
每月 286 次下载
10KB
56 行
confine-rs
这个包提供了加载配置文件的宏和构建器 API。我建议在大多数情况下使用宏,因为它提供了一种更简洁的加载配置文件的方式。使用任何一个,你都将获得一个用于你的配置结构的 try_load
函数。这将按优先级顺序从以下来源实例化你的结构体
config/application.toml
config/application-{environment}.toml
- 环境变量
环境由环境变量 CONFINE_ENV
确定,该变量必须设置才能加载特定环境的配置文件。
你可以配置这些设置中的大多数,但结构始终得到强制执行。你可以配置的内容包括
- 配置文件的路径(默认:
config
) - 配置文件的名称前缀(默认:
application
) - 确定环境的环境变量(默认:
CONFINE_ENV
)
用法
默认配置
宏
use confine::confine;
fn main() {
let config = MyConfig::try_load().unwrap();
}
#[derive(Deserialize)]
#[confine]
struct MyConfig {
pub my_int: i64,
pub my_string: String,
pub my_bool: bool,
}
构建器
use confine::ConfineConfigBuilder;
use serde::Deserialize;
fn main() {
let config = ConfineConfigBuilder::default()
.try_load::<MyConfig>()
.unwrap();
}
#[derive(Deserialize)]
struct MyConfig {
pub my_int: i64,
pub my_string: String,
pub my_bool: bool,
}
自定义配置
宏
use confine::confine;
fn main() {
let config = MyConfig::try_load().unwrap();
}
#[derive(Deserialize)]
#[confine(
path = "my_config",
prefix = "my_prefix",
env_var = "MY_ENV"
)]
struct MyConfig {
pub my_int: i64,
pub my_string: String,
pub my_bool: bool,
}
构建器
use confine::ConfineConfigBuilder;
use serde::Deserialize;
fn main() {
let config = ConfineConfigBuilder::default()
.path("my_config")
.prefix("my_prefix")
.env_var("MY_ENV")
.try_load::<MyConfig>()
.unwrap();
}
#[derive(Deserialize)]
struct MyConfig {
pub my_int: i64,
pub my_string: String,
pub my_bool: bool,
}
动机
我发现自己在 Rust 中反复编写相同的加载配置文件的样板代码。此外,虽然 config-rs
是一个很棒的库,但它允许你在处理配置时有很大的灵活性。特别是当在多个项目中工作时,我更喜欢有一个一致的方式来存储和加载配置文件。这个包旨在提供一个易于使用的宏,用于以合理的默认值加载配置文件。
依赖项
~2.4–3.5MB
~70K SLoC