38 stable releases (10 major)
10.1.0 | Oct 10, 2024 |
---|---|
9.0.0 | Jun 7, 2024 |
8.5.1 | May 26, 2024 |
8.3.0 | Feb 23, 2024 |
0.2.0 | Nov 20, 2016 |
#74 in Asynchronous
3,590 downloads per month
Used in 9 crates
(3 directly)
70KB
1K
SLoC
c-ares-resolver
DNS resolvers built on c-ares
, for
asynchronous DNS requests.
This crate provides three resolver types - the Resolver
, the FutureResolver
,
and the BlockingResolver
:
- The
Resolver
is the thinnest wrapper around the underlyingc-ares
library. It returns answers via callbacks. The other resolvers are built on top of this. - The
FutureResolver
returns answers asstd::future::Future
s. - The
BlockingResolver
isn't asynchronous at all - as the name suggests, it blocks until the lookup completes.
Documentation
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.
Examples
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.
Contributing
Contributions are welcome. Please send pull requests!
Dependencies
~4–13MB
~195K SLoC