use std::collections::HashMap;
use std::net::IpAddr;
use std::sync::{Arc, Mutex};
use trust_dns_resolver::TokioAsyncResolver;
#[derive(Debug, Clone)]
pub enum DnsRecord {
A(String),
AAAA(String),
CNAME(String),
NS(String),
MX(u16, String),
TXT(String),
SOA(String),
PTR(String),
}
#[derive(Debug, Clone)]
pub struct DnsResolveResult {
pub domain: String,
pub records: HashMap<String, Vec<DnsRecord>>,
pub has_records: bool,
}
pub struct DnsResolver {
pub(super) resolver: TokioAsyncResolver,
pub(super) ptr_cache: Arc<Mutex<HashMap<IpAddr, Vec<String>>>>,
}