cdns-rs 1.2.2

A native Sync/Async Rust implementation of client DNS resolver.
Documentation
use std::{time::Instant, sync::Arc};

use cdns_rs::sync::{request, QDns, QType, QuerySetup, ResolveConfig};

fn main()
{
    let cfg = "nameserver 1.1.1.1";

    let cust = Arc::new(ResolveConfig::custom_config(cfg).unwrap());

    let now = Instant::now();

    // a, aaaa
    let res_a = request::resolve_fqdn("protonmail.com", Some(cust.clone())).unwrap();
    
    // mx
    let res_mx = request::resolve_mx("protonmail.com", Some(cust.clone())).unwrap();

    // ptr
    let res_ptr_local = request::resolve_reverse("::1", Some(cust.clone())).unwrap();

    // ptr
    let res_ptr = request::resolve_reverse("8.8.8.8", Some(cust.clone())).unwrap();

    let mut dns_req = 
        QDns::make_empty(None, QuerySetup::default()).unwrap();

    dns_req.add_request(QType::SOA, "protonmail.com");

    // sending request and receiving results
    let res = dns_req.query();

    let elapsed = now.elapsed();
    println!("Elapsed: {:.2?}", elapsed);

    println!("A/AAAA:");
    for a in res_a
    {
        println!("\t{}", a);
    }

    println!("MX:");
    for mx in res_mx
    {
        println!("\t{}", mx);
    }

    println!("PTR local:");
    for ptr in res_ptr_local
    {
        println!("\t{}", ptr);
    }

    println!("PTR:");
    for ptr in res_ptr
    {
        println!("\t{}", ptr);
    }

    println!("SOA:");
    let soa_res = res.get_result();

    if soa_res.is_err() == true
    {
        println!("{}", soa_res.err().unwrap());
    }
    else
    {
        let soa = soa_res.unwrap();

        if soa.is_empty() == true
        {
            println!("\tNo SOA found!")
        }
        else
        {
            for s in soa
            {
                println!("\t{}", s)
            }
        }
       
    }

    return;
}