dotenvs 0.1.0

A correct dotenv library
Documentation
# dotenvs

[![crates.io](https://img.shields.io/crates/v/dotenvs.svg)](https://crates.io/crates/dotenvs)
[![Released API docs](https://docs.rs/dotenvs/badge.svg)](https://docs.rs/dotenvs)
[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE.md)

A correct dotenv library, which supports:

- Multiline values
- Variable substitution

## Parsing rules

- `BASIC=basic`
- empty lines are skipped
- lines beginning with `#` are treated as comments
- `#` marks the beginning of a comment (unless when the value is wrapped in quotes)
- empty values become empty strings
- inner quotes are maintained
- whitespace is removed from both ends of unquoted values
- single and double quoted values are escaped
- single and double quoted values maintain whitespace from both ends
- double quoted values expand new lines (`MULTILINE="new\nline"` becomes
  ```
  MULTILINE: "new
  line"
  ```

## Expanding rules

- `$KEY` will expand any env with the name `KEY`
- `${KEY}` will expand any env with the name `KEY`
- `\$KEY` will escape the `$KEY` rather than expand
- `${KEY:-default}` will first attempt to expand any env with the name `KEY`. If not one, then it will return `default`

## Usage

The easiest and most common usage consists on calling `load` when the
application starts, which will load environment variables from a file named
`.env` in the current directory or any of its parents.

If you need more control about the file name or its location, you can
use the `from_filename`, `from_path` or `from_read`.

## Examples

A `.env` file looks like this:

```dotenv
# a comment, will be ignored
REDIS_ADDRESS=localhost:6379
MEANING_OF_LIFE=42
```

You can optionally prefix each line with the word `export`, which will
conveniently allow you to source the whole file on your shell.

A sample project using dotenv would look like this:

```rust
fn main() {
    for (key, value) in dotenv::vars() {
        println!("{}: {}", key, value);
    }
}
```

## LICENSE

[MIT](LICENSE.md)