跳过正文

目录

dotenvy
#

dotenv crate 不再维护,建议使用 dotenvy crate

dotenvy 从 .env 文件加载环境变量。

.env 文件举例:

# a comment, will be ignored
REDIS_ADDRESS=localhost:6379

# 可选的添加 export 前缀,这样该文件也可以被 shell 使用。
export MEANING_OF_LIFE=42

dotenv::dotenv() 从当前目录加载 .env 文件中的环境变量:

  • 如果环境变量中已经有同名变量,则不覆盖原始值。
  • 如果文件中有多个同名变量,以第一个为准;

如果要以 .env 中变量为准且重复时以最后的一个为准,则可以使用 dotenvy::dotenv_overrite() 函数。

use dotenv::dotenv;
use std::env;

fn main() {
    // dotenv::dotenv() 从当前目录加载 .env 文件中的环境变量。
    // 如果环境变量中已经有同名变量,则不覆盖原始值。
    dotenv().ok();
    for (key, value) in env::vars() {
        println!("{}: {}", key, value);
    }
}

use std::io;
dotenvy::from_filename("custom.env")?;
let result: Vec<(String, String)> = dotenvy::vars().collect();
let value = dotenvy::var("HOME")?;
println!("{}", value);  // prints `/home/foo`