10个版本
0.1.9 | 2024年2月7日 |
---|---|
0.1.8 | 2023年12月26日 |
0.1.6 | 2023年5月9日 |
0.1.5 | 2023年2月16日 |
0.1.3 | 2022年9月11日 |
#799 在 配置 中
每月2,807次下载
在 mailinator-rs 中使用
18KB
280 行
Dot Env Config
使用.env
作为配置文件并将环境变量解析为配置结构体。
用法
derive EnvConfig
use dotenv_config::EnvConfig;
use dotenvy::dotenv;
#[derive(Debug, PartialEq)]
enum Color {
Red,
Green,
Blue,
}
impl std::str::FromStr for Color {
type Err = &'static str;
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s {
"red" => Ok(Color::Red),
"green" => Ok(Color::Green),
"blue" => Ok(Color::Blue),
_ => Err("no match color"),
}
}
}
#[derive(Debug, EnvConfig)]
struct Config {
#[env_config(default = "192.168.2.1")]
server_addr: String,
server_mode: bool,
#[env_config(name = "ZINC_ENABLE", default = true)]
enable: bool,
#[env_config(name = "ZINC_NUMBER", default = 123456, help = "this is for demo")]
num: Option<i64>,
#[env_config(parse, default = "green")] // or parse=true
color: Color,
}
fn main() {
dotenv().ok();
let cfg = Config::init().unwrap();
println!("{:#?}", cfg);
// print config help
let help = Config::get_help();
println!("{:#?}", help);
}
属性 env_config
您可以使用宏属性设置字段属性
- name: 更改默认环境键
- default: 如果未设置,则用作默认值
您可以通过系统环境或.env
文件配置它。
ZINC_ENABLE=false
ZINC_NUMBER=8787878
默认加载环境键为:structName_fieldName
使用大写蛇形命名,如上面的结构体,默认配置键是
CONFIG_SERVER_ADDR
CONFIG_SERVER_MODE
ZINC_ENABLE
ZINC_NUMBER
依赖关系
~2.2–3MB
~57K SLoC