Usage
Let's say you application relies on the following environment variables:
And you want to initialize Config structure like this one:
struct Config {
host: String,
port: u16,
}
You can achieve this with the following code without boilerplate:
use envconfig::Envconfig;
#[derive(Envconfig)]
pub struct Config {
#[envconfig(from = "DB_HOST")]
pub db_host: String,
#[envconfig(from = "DB_PORT", default = "5432")]
pub db_port: u16,
}
fn main() {
std::env::set_var("DB_HOST", "127.0.0.1");
let config = Config::init_from_env().unwrap();
assert_eq!(config.db_host, "127.0.0.1");
assert_eq!(config.db_port, 5432);
}
Running tests
Tests do some manipulation with environment variables, so to
prevent flaky tests they have to be executed in a single thread:
cargo test -- --test-threads=1
License
MIT © Sergey Potapov
Contributors
- greyblake Potapov Sergey - creator, maintainer.
- allevo Tommaso Allevi - support nested structures
- hobofan Maximilian Goisser - update dependencies