4个版本
0.2.1 | 2023年10月20日 |
---|---|
0.2.0 | 2023年9月24日 |
0.1.1 | 2023年9月24日 |
0.1.0 | 2023年9月24日 |
#257 in 配置
每月 28 次下载
15KB
274 行
这是一个辅助库,旨在使从环境变量中提取值变得简单。
如何导入
将以下行添加到您的项目中的cargo.toml文件
nb-from-env = "*"
用法
use nb_from_env::{FromEnv, FromEnvDerive}
#[derive(FromEnvDerive)]
struct MyServerConfig {
log_level: Option<String>,
listen_address: String,
max_conns: i32,
is_debug: bool,
}
fn main() {
dotenv::dotenv().ok();
let config = MyServerConfig::from_env();
...
}
支持数据类型
几乎支持Rust中的所有原始类型,包括
- String
- i8
- i16
- i32
- i64
- i128
- u8
- u16
- u32
- u64
- u128
- usize
- isize
- bool
- f32
- f64
- Option<T: FromEnv>
您也可以为您的类型实现FromEnv
环境变量名称
如果未指定,则所有环境变量名称为字段名的首字母大写
#[derive(FromEnvDerive)]
struct MyConfig {
my_var: String // this will search for MY_VAR in environment varialbes
}
但是,您可以使用#[env_var]
标签来指定与字段相关的环境变量
#[derive(FromEnvDerive)]
struct MyConfig {
#[env_var(THE_REAL_NAME)] // this will search for THE_REAL_NAME in environment variables
my_var: String
}
默认值
您可以通过#[env_default]
标签为不存在的环境变量指定默认值
struct MyConfig {
#[env_default("my default value")] // if MY_VAR not exists, "my default value" will assign to my_var
my_var: String
}
请注意,默认值的类型必须是字符串,值将在from_env
函数中转换为相应的类型
可选类型字段
当您期望的环境变量不存在时,如果相应的字段不是可选的(即Option<T>
),则from_env
会panic。如果环境变量不存在,可选字段将为None
依赖关系
~265–710KB
~17K SLoC