Crates.io | loadenv |
lib.rs | loadenv |
version | 0.1.4 |
source | src |
created_at | 2020-08-19 21:19:23.799958 |
updated_at | 2020-12-28 04:08:31.132687 |
description | A small, zero-dependency dotenv implementation |
homepage | |
repository | https://gitlab.com/ben-galusha/loadenv |
max_upload_size | |
id | 278405 |
size | 59,292 |
A simple, zero-dependency dotenv implementation for Rust.
This library exposes two similar functions. The first is loadenv::load()
, which looks for a file named .env
in the current directory and loads its contents into the environment. The second is loadenv::load_buf()
, which takes a BufRead and loads its contents into the environment. This function can be used to load .env files from custom locations or from other data structures like &[u8]
.
Most of the time, load()
should be enough for your program.
Variables that are already defined in the environment will not be replaced as per this section on the dotenv project page.
# 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
A .env
file consists of zero or more key-value pairs in the form KEY = value
. Whitespace before and after the =
is ignored (including whitespace at the beginning and end of the line).
In addition, the following rules apply to all lines:
#
are comments and are ignored. Note that comments must be on their own line.KEY
may only contain 0-9
, A-Z
and _
.value
may be any value.A more detailed example can be found in .env
in the root of this project.
Load the example .env file and print out the new environment.
fn main() {
loadenv::load().ok();
for (k, v) in std::env::vars() {
println!("{} = '{}'", k, v);
}
}
Load a .env from a string.
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);
}
}
Tests must be run in single-threaded mode using cargo test -- --test-threads=1
. Otherwise, testing will be unreliable because many std::env
methods are not thread-safe. See this page for more info.