Expand description
Envy is a library for deserializing environment variables into typesafe structs
§Examples
A typical usecase for envy is deserializing configuration store in an process’ environment into a struct whose fields map to the names of env vars.
Serde makes it easy to provide a deserializable struct with its deriveable Deserialize procedural macro.
Simply ask for an instance of that struct from envy’s from_env
function.
use serde::Deserialize;
#[derive(Deserialize, Debug)]
struct Config {
foo: u16,
bar: bool,
baz: String,
boom: Option<u64>,
}
match envy::from_env::<Config>() {
Ok(config) => println!("{:#?}", config),
Err(error) => eprintln!("{:#?}", error),
}
Special treatment is given to collections. For config fields that store a Vec
of values,
use an env var that uses a comma separated value.
All serde modifiers should work as is.
Enums with unit variants can be used as values:
#[derive(Deserialize, Debug, PartialEq)]
#[serde(rename_all = "lowercase")]
pub enum Size {
Small,
Medium,
Large,
}
#[derive(Deserialize, Debug)]
struct Config {
size: Size,
}
// set env var for size as `SIZE=medium`
match envy::from_env::<Config>() {
Ok(config) => println!("{:#?}", config),
Err(error) => eprintln!("{:#?}", error),
}
Structs§
- A type which filters env vars with a prefix for use as serde field inputs
Enums§
- Types of errors that may result from failed attempts to deserialize a type from env vars
Functions§
- Deserializes a type based on information stored in env variables
- Deserializes a type based on an iterable of
(String, String)
representing keys and values - Produces a instance of
Prefixed
for prefixing env variable names
Type Aliases§
- A type result type specific to
envy::Errors