econf
Loads environment variables into your structs in one shot.

econf allows to override struct fields with environment variables easily. This is useful to build up applications that optionally overrides some configuration with environment variables. Here is the basic usage:
use LoadEnv;
In this example,
PREFIX_Xis loaded toxPREFIX_Yis loaded toy
Why econf?
There are some existing crates that provide similar features but econf is unique in the following ways:
- Supports nesting: Supports nested structs in an intutive manner with a little constraint.
- Supports compound types: Supports
tuple,Vec,HashMapand various types. - Supplemental: Loads supplementally into existing variables in the code without changing the original logic.
- Contributor friendly: Simple code base. Comprehensible with a little study on basic macro usage.
Supported types
- Boolean:
bool - Integer:
isize,usize,i8,i16,i32,i64,i128,u8,u16,u32,u64,u128 - String:
char,String - Float:
f32,f64 - Network:
IpAddr,Ipv4Addr,Ipv6Addr,SocketAddr,SocketAddrV4,SocketAddrV6 - Non-zero types:
NonZeroI128,NonZeroI16,NonZeroI32,NonZeroI64,NonZeroI8,NonZeroIsize,NonZeroU128,NonZeroU16,NonZeroU32,NonZeroU64,NonZeroU8,NonZeroUsize - File system:
PathBuf - Containers:
Vec,HashSet,HashMap,Option,BTreeMap,BTreeSet,BinaryHeap,LinkedList,VecDeque- Containers are parsed as YAML format. See the tests.
Skipping fields
Fields that do not implement LoadEnv or simply should not be loaded by econf can be skipped by adding the #[econf(skip)] helper attribute:
License: MIT