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 shorthand t
    • yes or its shorthand y
    • on
    • 1
  • Falsy values:
    • false or its shorthand f
    • no or its shorthand n
    • 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.

Type Definitions

Convenience alias for a Result with this crate Error type.