ns-std-threaded 0.1.0

Name service implementation for abstract-ns that uses stdlib's implementation run in a thread pool
Documentation
extern crate argparse;
extern crate futures;
extern crate futures_cpupool;
extern crate abstract_ns;
extern crate ns_std_threaded;

use std::io::{stderr, Write};
use std::process::exit;

use futures::{Future};
use abstract_ns::Resolver;
use argparse::{ArgumentParser, Store};
use futures_cpupool::CpuPool;
use ns_std_threaded::ThreadedResolver;

fn main() {
    let mut name = String::new();
    {
        let mut ap = ArgumentParser::new();
        ap.refer(&mut name).required()
            .add_argument("hostname", Store, "Name to resolve");
        ap.parse_args_or_exit();
    }
    let resolver = ThreadedResolver::new(CpuPool::new(20));
    let res = resolver.resolve(&name).map(|x| {
        println!("Addresses: {:?}", x);
        println!("Pick one: {}", x.pick_one().unwrap());
    }).wait();
    match res {
        Ok(()) => {}
        Err(e) => {
            writeln!(&mut stderr(), "Error: {}", e).ok();
            exit(1);
        }
    }
}