#dotenv #env #environment #settings

dotenv_config

将环境变量解析为Rust配置结构体

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配置

Download history 666/week @ 2024-03-15 196/week @ 2024-03-22 343/week @ 2024-03-29 248/week @ 2024-04-05 332/week @ 2024-04-12 318/week @ 2024-04-19 331/week @ 2024-04-26 594/week @ 2024-05-03 1057/week @ 2024-05-10 864/week @ 2024-05-17 1173/week @ 2024-05-24 902/week @ 2024-05-31 725/week @ 2024-06-07 707/week @ 2024-06-14 724/week @ 2024-06-21 550/week @ 2024-06-28

每月2,807次下载
mailinator-rs 中使用

MIT 许可证

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