cdns-rs 1.2.2

A native Sync/Async Rust implementation of client DNS resolver.
Documentation
use std::time::Instant;

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

fn main()
{
    let now = Instant::now();

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

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

    // ptr
    let res_ptr = request::resolve_reverse("1.1.1.1", None).unwrap();
    
    // soa
    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: QDnsQueryResult = 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
            {
                for i in s.resp
                {
                    println!("\t{}", i)
                }
            }
        }
       
    }

    return;
}