3个不稳定版本

0.15.0 2019年10月21日
0.14.1 2019年5月15日
0.14.0 2019年5月8日

#dotenv中排名51

Download history 1212/week @ 2024-03-14 1210/week @ 2024-03-21 1381/week @ 2024-03-28 1358/week @ 2024-04-04 1177/week @ 2024-04-11 1103/week @ 2024-04-18 1114/week @ 2024-04-25 799/week @ 2024-05-02 858/week @ 2024-05-09 1069/week @ 2024-05-16 1096/week @ 2024-05-23 1568/week @ 2024-05-30 1018/week @ 2024-06-06 874/week @ 2024-06-13 988/week @ 2024-06-20 1022/week @ 2024-06-27

每月下载量4,161
用于28个crate(通过dotenv_codegen

MIT许可协议

38KB
873

rust-dotenv

Build Status codecov Crates.io

注意! 这是一个v0.*版本!预期会有各种bug和问题。提交pull请求和问题报告被强烈鼓励!

引用bkeepers/dotenv

配置存储在环境变量中十二要素应用的原则之一。任何可能在部署环境中改变的内容,例如数据库的资源句柄或外部服务的凭证,都应该从代码中提取到环境变量中。

这个库旨在用于开发或测试环境,在这些环境中设置环境变量不太实用。如果存在,它会从.env文件中加载环境变量,并将它们与操作系统提供的实际环境变量混合。

使用方法

最简单和最常见的用法是在应用程序启动时调用 dotenv::dotenv,这将从当前目录或其父目录中的名为 .env 的文件中加载环境变量;之后,您可以像使用 std::os 提供的环境相关方法一样调用所需的方法。

如果您需要更细粒度地控制文件名或其位置,可以使用由 crate 提供的 from_filenamefrom_path 方法。

dotenv_codegen 提供了 dotenv! 宏,其行为与 env! 宏相同,但在编译时首先尝试加载一个 .env 文件。

示例

一个 .env 文件看起来像这样

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

您可以可选地在每行前面加上单词 export,这将在您的 shell 中方便地允许您整个文件。

使用 Dotenv 的示例项目可能看起来像这样

extern crate dotenv;

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

fn main() {
    dotenv().ok();

    for (key, value) in env::vars() {
        println!("{}: {}", key, value);
    }
}

变量替换

您可以使用 $VARIABLE 语法在 .env 文件中重用变量。其语法和规则类似于 bash,以下是一个示例


VAR=one
VAR_2=two

# Non-existing values are replaced with an empty string
RESULT=$NOPE #value: '' (empty string)

# All the letters after $ symbol are treated as the variable name to replace
RESULT=$VAR #value: 'one'

# Double quotes do not affect the substitution
RESULT="$VAR" #value: 'one'

# Different syntax, same result 
RESULT=${VAR} #value: 'one'

# Curly braces are useful in cases when we need to use a variable with non-alphanumeric name
RESULT=$VAR_2 #value: 'one_2' since $ with no curly braces stops after first non-alphanumeric symbol 
RESULT=${VAR_2} #value: 'two'

# The replacement can be escaped with either single quotes or a backslash:
RESULT='$VAR' #value: '$VAR'
RESULT=\$VAR #value: '$VAR'

# Environment variables are used in the substutution and always override the local variables
RESULT=$PATH #value: the contents of the $PATH environment variable
PATH="My local variable value"
RESULT=$PATH #value: the contents of the $PATH environment variable, even though the local variable is defined

Dotenv 将解析文件,并按注释中描述的方式替换变量。

使用 dotenv!

dotenv_codegen 添加到您的依赖项中,并在您的 crate 的顶部添加以下内容

#[macro_use]
extern crate dotenv_codegen;

然后,在您的 crate 中

fn main() {
  println!("{}", dotenv!("MEANING_OF_LIFE"));
}

依赖项

~1.5MB
~36K SLoC