ns-env-config 0.1.0

An env_logger-inspired one-stop configuration for name resolution based on abstract-ns. Reduces boilerplate and provides standard way to configure DNS for applications via `RUST_NS` environment variable.
Documentation
NS Env Config
=============

[API Docs](https://docs.rs/ns-env-config) |
[Usage](https://github.com/tailhook/ns-env-config#usage) |
[Github](https://github.com/tailhook/ns-env-config) |
[Crate](https://crates.io/crates/ns-env-config)

An env_logger-inspired one-stop configuration for name resolution based
on abstract-ns.

**Goals:**

1. Make bootstrapping of small to medium size apps easier
2. Provide a standard way for configuring name resolution in rust ecosystem

**Features:**

1. Standard libc-based name resolution by default (using threads)
2. [TODO] Feature-gated other resolvers (async, consul,...)
3. If compiled in, resolvers are enabled by `RUST_NS=resolver_name`
4. Sane defaults for resolvers
5. Subscriptions are enabled by default (using polling if not available)
6. Some options configured from env (`RUST_NS=resolver_name:option=value`)
7. [TODO] Suffix-based resolution (`RUST_NS=std,consul=consul-resolver`)

**Non-goals:**

1. Covering every other way to resolve names
2. Covering all the settings of every resolvers


Usage
=====

Standard Resolver
-----------------

```shell
$ RUST_NS=std ./your-app
```

Since standard library resolver is not asynchronous we run resolver
in a thread pool.

Parameters:

* `poll_ivl` -- polling interval for subscriptions in seconds, default `1`
* `threads` -- number of threads for name resolution, default `4`

Biggest declaration is something like this:

```shell
$ RUST_NS=std:poll_ivl=10:threads=16 ./your-app
```


License
=======

Licensed under either of

* Apache License, Version 2.0,
  (./LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
* MIT license (./LICENSE-MIT or http://opensource.org/licenses/MIT)
  at your option.

Contribution
------------

Unless you explicitly state otherwise, any contribution intentionally
submitted for inclusion in the work by you, as defined in the Apache-2.0
license, shall be dual licensed as above, without any additional terms or
conditions.