1 stable release
1.0.0 | May 7, 2022 |
---|---|
1.0.0-rc.2 |
|
0.1.0 |
|
#1903 in Encoding
128 downloads per month
25KB
559 lines
de_env
helps you easily deserialize environment variables into a struct.
Example
Assuming we have a TIMEOUT
, HOST
and RETRY
environment variable:
#[derive(serde::Deserialize, Debug)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
struct Config {
timeout: u16,
host: std::net::IpAddr,
retry: bool,
}
let config: Config = de_env::from_env()?;
println!("{config:#?}");
lib.rs
:
de_env
Deserialize environment variables into a struct.
You may be looking for:
Example
Assuming we have a TIMEOUT
and HOST
environment variable:
#[derive(serde::Deserialize, Debug)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
struct Config {
timeout: u16,
host: std::net::IpAddr,
}
let config: Config = de_env::from_env()?;
println!("{config:#?}");
Supported Primitives
- String slices
- Chars
- Numbers (parsed with their respective
FromStr
implementations) - Booleans (see boolean parsing)
Boolean Parsing
Boolean parsing is case-insensitive.
If the truthy-falsy
feature is enabled (default):
- Truthy values:
true
or its shorthandt
yes
or its shorthandy
on
1
- Falsy values:
false
or its shorthandf
no
or its shorthandn
off
0
If the truthy-falsy
feature is disabled, only true
and false
are
considered valid booleans.
Enums
Only unit variants can be deserialized.
Assuming we have a LOG_LEVEL
environment variable set to INFO
or WARN
:
#[derive(serde::Deserialize, Debug)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
enum Level {
Info,
Warn
}
#[derive(serde::Deserialize, Debug)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
struct Config {
log_level: Level,
}
let config: Config = de_env::from_env()?;
println!("{config:#?}");
Unsupported Types
The goal of this crate is to deserialize environment variables into a struct, no other type is supported at top level. Custom types must be able to deserialize from supported primitives.
Dependencies
~100–335KB