envcache 0.1.3

A build.rs helper crate for caching environment variables
Documentation
# 🏴‍☠️ envcache

[![Actions Status](https://github.com/sheredom/envcache/workflows/Rust/badge.svg)](https://github.com/sheredom/envcache/actions)
[![Crates.io](https://img.shields.io/crates/v/envcache.svg)](https://crates.io/crates/envcache)
[![API Docs](https://docs.rs/envcache/badge.svg)](https://docs.rs/envcache)

The envcache crate (**env**ironment **cache**) lets users cache
environmental variables in a build.rs script, so that subsequent calls to
cargo are not required to be ran with the same variable specified.

For example, let's assume you have a build.rs that **requires** `SOME_VAR`
to be specified for work. Maybe its a path to some library that lives
outside of the Rust ecosystem (like LLVM):

```sh
SOME_VAR=42 cargo test
cargo clippy # Will fail because SOME_VAR is not set
```

This would fail because the run to `cargo clippy` requires that it is run
with `SOME_VAR=42`. With the envcache, we can use a `build.rs` that ensures
this will run:

```
use envcache;
# std::env::set_var("OUT_DIR", std::env::temp_dir());
let mut envcache = envcache::EnvCache::new();
envcache.cache("SOME_VAR");
```

Now if we run this again:

```sh
SOME_VAR=42 cargo test
cargo clippy # SOME_VAR will be 42
```

You can change a previously set cached variable by simply re-specifying it
on the command line:

```sh
SOME_VAR=42 cargo test
SOME_VAR=13 cargo test
cargo test # SOME_VAR will be 13!
```

Note that running `cargo clean` will remove any previously cached variables,
so running:

```sh
SOME_VAR=42 cargo test
cargo clippy # Will work because we've cached SOME_VAR
cargo clean
cargo test # Will fail because SOME_VAR won't be set
```