envir 0.4.0

Deserialize/serialize struct from/to env
Documentation
# envir

[![Github actions](https://github.com/sanpii/envir/workflows/.github/workflows/ci.yml/badge.svg)](https://github.com/sanpii/envir/actions?query=workflow%3A.github%2Fworkflows%2Fci.yml)
[![Gitlab CI](https://gitlab.com/sanpi/envir/badges/main/pipeline.svg)](https://gitlab.com/sanpi/envir/commits/main)

A toolbox to deal with your environment.

## Basics

Without feature, this crate provides simple functions to retreive the value of
an environment variable:

- `get` to retreive as string;
- `parse` to directly parse the value as a desired type.

The `try_` version of these functions return `None` if the variable doens’t
exist when `get` and `parse` return the `Error::Missing` error.

In addition this crate provide a `set` function, like `std::env::set_var` but
works for all types implement `ToString`.

Finally, a `collect` function to retreive all environment variables in a easy to
print collection.

## dotenv

The `dotenv` feature adds an eponyme function to load `.env` file.

## logger

The `logger` feature adds logger configured via environment variables.

## serde

The `serde` feature adds macro to deserialize struct from env:

```
use envir::Deserialize;

#[derive(envir::Deserialize)]
struct Config {
}

fn main() -> envir::Result {
    let config: Config = envir::from_env()?;
    // or
    let config = Config::from_env()?;

    Ok(())
}
```

And serialize to env:

```
use envir::Serialize;

#[derive(envir::Serialize, Default)]
struct Config {
}

let config = Config::default();
config.export();
```

The `extrapolation` feature allows environment variables replacement in the
default macro attribute:

```
#[derive(envir::Deserialize)]
struct Config {
    #[envir(default = "/home/${USER}")]
    home: String,
}
```

You can read the [envir_derive crate
documentation](https://docs.rs/envir_derive/) for more informations.