resolver/
resolver.rs

1//! Example demonstrating a resolver using custom DNS servers
2
3use std::env::args;
4
5use sync_resolve::{DnsConfig, DnsResolver};
6
7fn main() {
8    let config = DnsConfig::with_name_servers(vec![
9        // Use Google's public DNS servers instead of the system default.
10        "8.8.8.8:53".parse().unwrap(),
11        "8.8.4.4:53".parse().unwrap(),
12    ]);
13
14    let resolver = match DnsResolver::new(config) {
15        Ok(r) => r,
16        Err(e) => {
17            println!("failed to create DNS resolver: {}", e);
18            return;
19        }
20    };
21
22    let args = args().collect::<Vec<_>>();
23
24    if args.len() == 1 {
25        println!("Usage: {} <host name> [...]", args[0]);
26        return;
27    }
28
29    for arg in &args[1..] {
30        match resolver.resolve_host(&arg) {
31            Ok(mut addrs) => {
32                let addr = addrs.next().expect("empty ResolveHost");
33                let n = addrs.count();
34
35                if n == 0 {
36                    println!("\"{}\" resolved to {}", arg, addr);
37                } else {
38                    println!("\"{}\" resolved to {} ({} more)", arg, addr, n);
39                }
40            }
41            Err(e) => println!("failed to resolve \"{}\": {}", arg, e),
42        }
43    }
44}