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.