#环境 #环境变量 #生成器 #字段名 #默认 #公开

envconfgen

配置结构生成器

3个稳定版本

1.0.2 2024年7月2日

#442配置

Download history 445/week @ 2024-07-02

每月下载量 445

MIT 许可证

7KB
63

EnvConf

用于配置结构的简单小巧的crate。

crate生成具有

  1. new 公共方法从环境获取值的
  2. #field_name 公共获取器

为什么是这个而不是 X-config?

如果找不到变量或未指定默认值,我的crate会panic... 它只包含76行代码。

无论如何,没有大的理由说明为什么使用我的crate而不是酷炫的大 X-config

安装

  1. 使用cli cargo add envconfgen
  2. 手动添加到Cargo.toml
# Cargo.toml

[dependencies]
envconfgen = "1.0.2"

示例

#[derive(envconfgen::EnvConfig)]
struct Config {
  // `var` specifies the environment variable name to fetch the value from.
  // If not provided, the uppercase field name (`TEST_VAR`) will be used.
  #[var("MY_TEST_VAR")]
  test_var: String,

  // `default` provides a fallback value if the environment variable is not set.
  // If not provided and the variable is missing, it will panic.
  //
  // This field does not use `var`, so it defaults to searching for `DATABASE_URL`.
  #[default("nothing")]
  database_url: String,
}

fn main() {
  let config = Config::new(); // Generated factory method

  // Crate also generates a public getters for fields
  // I don't think it's a good idea to use public fields for config struct
  println!("test_var: {}", config.test_var());
  println!("database_url: {}", config.database_url());
}

许可证 - MIT

贡献

请随意打开问题或发送PR。

依赖关系

~270–720KB
~17K SLoC