#env-var #env-file #dotenv #env #variables #environment

loadenv

一个小型、无依赖的dotenv实现

5个版本

0.1.4 2020年12月28日
0.1.3 2020年8月21日
0.1.2 2020年8月20日
0.1.1 2020年8月19日
0.1.0 2020年8月19日

#793 in 配置

GPL-3.0-only

20KB
416

loadenv

一个简单的、无依赖的Rustdotenv实现。

用法

此库公开了两个类似的功能。第一个是 loadenv::load(),它会在当前目录中查找名为 .env 的文件并将其内容加载到环境变量中。第二个是 loadenv::load_buf(),它接收一个 BufRead 并将其内容加载到环境变量中。此函数可以用来从自定义位置或从其他数据结构(如 &[u8])加载.env文件。

大多数情况下, load() 应该足以满足你的程序。

按照 dotenv项目页面上的这一部分,已经定义的环境变量 不会被替换

文件格式

# Example .env file
# Comments begin with `#` and must be on their own line
# Pairs are in the form `KEY = value`
USERNAME = ben
PASSWORD = k4+5F_Sa9x%LA&Zy

# `=` is optional for empty values
DEBUG

# whitespace around `=` is optional
FOO=bar
BOP = baz

一个 .env 文件包含零个或多个键值对,形式为 KEY = value。等于号前后(包括行首和行尾)的空白被忽略。

此外,以下规则适用于所有行

  • 空行被忽略。
  • # 开头的行是注释并会被忽略。请注意,注释必须单独占一行。
  • KEY 只能包含 0-9A-Z_
  • value 可以是任何值。

更详细的示例可以在本项目的根目录下的 .env 文件中找到。

示例

加载示例.env文件并打印出新的环境变量。

fn main() {
    loadenv::load().ok();

    for (k, v) in std::env::vars() {
        println!("{} = '{}'", k, v);
    }
}

从字符串中加载.env文件。

fn main() {
    let dotenv = "FOO=bar\nBOP = baz \n# Comment\n";
    loadenv::load_buf(dotenv.as_bytes()).ok();

    for (k, v) in std::env::vars() {
        println!("{} = '{}'", k, v);
    }
}

运行测试

测试必须在单线程模式下运行,使用 cargo test -- --test-threads=1。否则,测试将不可靠,因为许多 std::env 方法不是线程安全的。更多信息请参阅 此页面

无运行时依赖