use anyhow::Result; use std::{error::Error, net::IpAddr}; use trust_dns_resolver::Resolver; pub(crate) struct DnsResolver { resolver: Resolver, } impl DnsResolver { pub(crate) fn new() -> Result { let resolver = Resolver::from_system_conf()?; Ok(Self { resolver }) } pub(crate) fn resolve(&self, host: &str) -> Result, Box> { log::info!("resolving {host} ..."); let response = self.resolver.lookup_ip(host)?; Ok(response.iter().collect()) } }