#variables #env #env-var #own #loader #highly #customized

env_plus

一个用于在程序中加载环境变量非常简单的crate,也可以自定义来加载自己的文件

3个版本

0.1.2 2021年1月27日
0.1.1 2021年1月25日
0.1.0 2021年1月25日

#12 in #customized

MIT许可证

12KB
97 代码行

env_plus

Crates.io

一个非常简单且高度可定制的环境变量加载器。您可以指定自己想使用的文件,或者使用其默认设置。


用法

将此添加到您的Cargo.toml

[dependenices]
env_plus = "0.1.2"

.env_plus

// This is a comment!
SECRET=YOUR_SECRET

main.rs

use env_plus::EnvLoader;

fn main() {
    EnvLoader::new()
    .activate();

    let secret = std::env::var("SECRET").unwrap();
    assert_eq!(secret, String::from("YOUR_SECRET"));
}

env_plus的默认设置是

  • 文件:.env_plus
  • 注释://
  • 值分隔符:=
  • 覆盖同名现有变量:false

然而,您有权完全自定义要使用的文件及其解析方式。


高级用法

special_file.extension

## I want to use this style as a comment!
## == will be the new value delimiter

SECRET==YOUR_SECRET

main.rs

use env_plus::EnvLoader;

fn main() {
    std::env::set_var("SECRET", "MY_SECRET");

    EnvLoader::new()
    .change_file(String::from("./special_file.extension"))
    .change_delimiter(String::from("=="))
    .change_comment(String::from("##"))
    .overwrite_envs(true)
    .activate();


    let secret = std::env::var("SECRET").unwrap();

    // SECRET has been overwritten from MY_SECRET to YOUR_SECRET
    assert_eq!(secret, String::from("YOUR_SECRET"));
}

无运行时依赖