Expand description
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.
Structs
Represent an error that may arise when deserializing.
Functions
Deserialize an instance of T
from the environment variables of the current process.
Deserialize an instance of T
from the environment variables of the current process with the
specified prefix.
Deserialize an instance of T
from an iterator of key-value tuple.