3 个不稳定版本
0.2.0 | 2024 年 6 月 24 日 |
---|---|
0.1.1 | 2024 年 6 月 19 日 |
0.1.0 | 2024 年 6 月 11 日 |
#1033 在 Rust 模式
14KB
347 行
Ground Env
ground-env
是一个 Rust 包,提供了一种方便的方式将环境变量加载到你的结构体中。它使用自定义 derive 宏自动将环境变量映射到结构体字段,支持各种功能,如重命名字段、默认值、扁平化嵌套结构体和不同分隔符的处理。
功能
- 简单映射:直接将环境变量映射到结构体字段。
- 可选字段:无缝处理可选环境变量。
- 重命名:将结构体字段名称重命名为所需的环境变量。
- 默认值:如果环境变量缺失,为字段定义默认值。
- 扁平化:扁平化嵌套结构体。
- 向量:使用自定义分隔符解析环境变量到向量中。
- 错误处理:优雅地处理缺失的必需字段和无效数据类型。
用法
将 ground-env
添加到你的 Cargo.toml
[dependencies]
ground-env = "0.1.0"
使用宏 #[derive(FromEnv)]
注释你的结构体,并使用属性配置映射
#[derive(FromEnv)]
struct Config {
text: String,
optional_text: Option<String>,
// The default delimiter is set to ","
list: Vec<String>,
#[env(delimiter = " ")] // But you can customise it.
names: Vec<String>,
number: i64,
// Supports renaming.
#[env(rename = "EMAIL_ADDRESS")]
email: String,
#[env(default)] // Defaults to 0 when no explicit value is provided.
count: i64,
#[env(default = "64")] // Defaults to 64 when not provided.
background_tasks: i64,
#[env(flatten)] // You can flatten other structs
admin_credentials: Credentials,
#[env(flatten = "DB_")] // You can also provide a prefix.
db_args: Credentials,
}
#[derive(FromEnv)]
struct Credentials {
username: String,
password: String,
}
fn main() -> anyhow::Result<()> {
let t = Config::from_env()?;
Ok(())
}
许可证
本项目采用 MIT 许可证。有关详细信息,请参阅 LICENSE 文件。
依赖
~0.6–1MB
~23K SLoC