DNS resolvers built on c-ares, for
asynchronous DNS requests.
This crate provides three resolver types - the Resolver, the FutureResolver,
and the BlockingResolver:
- The
Resolveris the thinnest wrapper around the underlyingc-areslibrary. It returns answers via callbacks. The other resolvers are built on top of this. - The
FutureResolverreturns answers asstd::future::Futures. - The
BlockingResolverisn't asynchronous at all - as the name suggests, it blocks until the lookup completes.
API documentation is here.
Setting the feature build-cmake will cause the c-ares library to be built
using cmake.
This is significantly faster than the default autotools build on unix
platforms: so if it works for you, you should probably prefer it.
extern crate c_ares_resolver;
extern crate futures_executor;
use futures_executor::block_on;
fn main() {
let resolver = c_ares_resolver::FutureResolver::new().unwrap();
let query = resolver.query_a("google.com");
let response = block_on(query);
match response {
Ok(result) => println!("{}", result),
Err(e) => println!("Lookup failed with error '{}'", e)
}
}Further example programs can be found here.
Contributions are welcome. Please send pull requests!