pub struct DnsResolver { /* private fields */ }Expand description
DNS resolver for querying various record types.
Uses Google DNS (8.8.8.8) by default, but supports custom nameservers. The default resolver is cached and reused across queries to avoid repeated initialization overhead.
Implementations§
Source§impl DnsResolver
impl DnsResolver
Sourcepub fn with_timeout(self, timeout: Duration) -> Self
pub fn with_timeout(self, timeout: Duration) -> Self
Sets the timeout for DNS queries.
The default is 5 seconds, which is sufficient for most DNS queries.
Sourcepub async fn resolve(
&self,
domain: &str,
record_type: RecordType,
nameserver: Option<&str>,
) -> Result<Vec<DnsRecord>>
pub async fn resolve( &self, domain: &str, record_type: RecordType, nameserver: Option<&str>, ) -> Result<Vec<DnsRecord>>
Resolves DNS records for a domain.
§Arguments
domain- The domain name to queryrecord_type- The type of DNS record to look up (A, AAAA, MX, etc.)nameserver- Optional custom nameserver IP; uses Google DNS if None
Sourcepub async fn resolve_srv(
&self,
service: &str,
protocol: &str,
domain: &str,
nameserver: Option<&str>,
) -> Result<Vec<DnsRecord>>
pub async fn resolve_srv( &self, service: &str, protocol: &str, domain: &str, nameserver: Option<&str>, ) -> Result<Vec<DnsRecord>>
Resolves SRV records for a service.
§Arguments
service- The service name (e.g., “http”, “ldap”)protocol- The protocol (e.g., “tcp”, “udp”)domain- The domain namenameserver- Optional custom nameserver IP
Source§impl DnsResolver
impl DnsResolver
Sourcepub async fn presence(&self, domain: &str) -> DnsPresence
pub async fn presence(&self, domain: &str) -> DnsPresence
Probes whether a domain has any DNS presence by querying its apex NS records. A registered, delegated domain returns NS records; an unregistered domain returns NXDOMAIN (an empty record set).
This is a heuristic, not proof: a registered-but-undelegated domain
also has no NS records, so callers should treat
DnsPresence::Absent as “likely available” (medium confidence).
Trait Implementations§
Source§impl Clone for DnsResolver
impl Clone for DnsResolver
Source§fn clone(&self) -> DnsResolver
fn clone(&self) -> DnsResolver
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for DnsResolver
impl Debug for DnsResolver
Auto Trait Implementations§
impl !RefUnwindSafe for DnsResolver
impl !UnwindSafe for DnsResolver
impl Freeze for DnsResolver
impl Send for DnsResolver
impl Sync for DnsResolver
impl Unpin for DnsResolver
impl UnsafeUnpin for DnsResolver
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more