Expand description
A Rust library for modifying structs via environment variables.
Unlike envy, this does not create a new object. It is used to reconfigure an existing structure (after having parsed it from a config file, for example).
§Ignored fields
If a certain field should not be configurable via environment variables, mark it with #[env(ignore)]
.
§Examples
Creating a config structure:
use derive_environment::FromEnv;
#[derive(Default, FromEnv)]
pub struct Config {
// ...
}
// Creates a base configuration struct to add on to.
// Normally this would be created using `serde` from a config file.
let mut config = Config::default();
// Names the struct "MY_CONFIG", which acts as a prefix.
config.with_env("MY_CONFIG").unwrap();
Nesting fields:
use derive_environment::FromEnv;
#[derive(FromEnv)]
struct ServerConfig {
port: u16,
}
#[derive(FromEnv)]
pub struct Config {
server: ServerConfig,
}
Generates:
- MY_CONFIG_SERVER_PORT
Vector of Nested fields:
use derive_environment::FromEnv;
// `Vec`'s `FromEnv` implementation requires `Default`.
#[derive(Default, FromEnv)]
struct ServerConfig {
port: u16,
}
#[derive(FromEnv)]
pub struct Config {
servers: Vec<ServerConfig>,
}
Generates:
- MY_CONFIG_SERVER_0_PORT
Macros§
- impl_
using_ from_ str - Automatically implements
FromEnv
using the type’sFromStr
implementation.
Enums§
- From
EnvError - Errors generated when populating a structure from the environment.
Traits§
- FromEnv
- Denotes a type that may be read from an environment variable.
Type Aliases§
- Result
- The result of
FromEnv::with_env
.
Derive Macros§
- FromEnv
- Generates a
load_environment()
function that will populate each field from environment variables.