econf

Loads environment variables into your structs in one shot.

Latest version Documentation License Actions Status

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:

```rust use econf::LoadEnv;

[derive(Debug, LoadEnv)]

struct A { x: bool, y: u64, }

fn main() { let a = A { x: true, y: 42, }; println!("Before: {:?}", a);

let a = econf::load(a, "PREFIX");
println!("After:  {:?}", a);

} ```

```sh $ ./app Before: A { x: true, y: 42 } After: A { x: true, y: 42 }

$ PREFIX_X=false ./app Before: A { x: true, y: 42 } After: A { x: false, y: 42 } ```

In this example,

Why econf?

There are some existing crates that provide similar features but econf is unique in the following ways:

Supported types

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:

```rust

[derive(LoadEnv)]

struct A { x: bool, #[econf(skip)] y: u64, // will not be loaded by econf } ```

License: MIT