Skip to main content

DnsAddressResolver

Trait DnsAddressResolver 

pub trait DnsAddressResolver:
    Sized
    + Send
    + Sync
    + 'static {
    type Error: Into<Box<dyn Error + Send + Sync>> + Send + 'static;

    // Required methods
    fn lookup_ipv4(
        &self,
        domain: Domain,
    ) -> impl Stream<Item = Result<Ipv4Addr, Self::Error>> + Send;
    fn lookup_ipv6(
        &self,
        domain: Domain,
    ) -> impl Stream<Item = Result<Ipv6Addr, Self::Error>> + Send;

    // Provided methods
    fn lookup_ipv4_first(
        &self,
        domain: Domain,
    ) -> impl Future<Output = Option<Result<Ipv4Addr, Self::Error>>> + Send { ... }
    fn lookup_ipv4_rand(
        &self,
        domain: Domain,
    ) -> impl Future<Output = Option<Result<Ipv4Addr, Self::Error>>> + Send { ... }
    fn lookup_ipv6_first(
        &self,
        domain: Domain,
    ) -> impl Future<Output = Option<Result<Ipv6Addr, Self::Error>>> + Send { ... }
    fn lookup_ipv6_rand(
        &self,
        domain: Domain,
    ) -> impl Future<Output = Option<Result<Ipv6Addr, Self::Error>>> + Send { ... }
    fn into_box_dns_address_resolver(self) -> BoxDnsAddressResolver { ... }
}
Expand description

A resolver of Domains into A or AAAA records.

Required Associated Types§

type Error: Into<Box<dyn Error + Send + Sync>> + Send + 'static

Error returned by the DnsAddressResolver

Required Methods§

fn lookup_ipv4( &self, domain: Domain, ) -> impl Stream<Item = Result<Ipv4Addr, Self::Error>> + Send

Resolve the ‘A’ records accessible by this resolver for the given Domain into Ipv4Addresses.

fn lookup_ipv6( &self, domain: Domain, ) -> impl Stream<Item = Result<Ipv6Addr, Self::Error>> + Send

Resolve the ‘AAAA’ records accessible by this resolver for the given Domain into Ipv6Addresses.

Provided Methods§

fn lookup_ipv4_first( &self, domain: Domain, ) -> impl Future<Output = Option<Result<Ipv4Addr, Self::Error>>> + Send

Resolve the first ‘A’ record found for the resolver.

fn lookup_ipv4_rand( &self, domain: Domain, ) -> impl Future<Output = Option<Result<Ipv4Addr, Self::Error>>> + Send

Resolve to a pseudo-random ‘A’ record found for the resolver.

fn lookup_ipv6_first( &self, domain: Domain, ) -> impl Future<Output = Option<Result<Ipv6Addr, Self::Error>>> + Send

Resolve the first ‘AAAA’ record found for the resolver.

fn lookup_ipv6_rand( &self, domain: Domain, ) -> impl Future<Output = Option<Result<Ipv6Addr, Self::Error>>> + Send

Resolve to a pseudo-random ‘AAAA’ record found for the resolver.

fn into_box_dns_address_resolver(self) -> BoxDnsAddressResolver

Box this resolver to allow for dynamic dispatch.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

§

impl DnsAddressResolver for IpAddr

§

type Error = Infallible

§

fn lookup_ipv4( &self, _: Domain, ) -> impl Stream<Item = Result<Ipv4Addr, <IpAddr as DnsAddressResolver>::Error>> + Send

§

fn lookup_ipv4_first( &self, _: Domain, ) -> impl Future<Output = Option<Result<Ipv4Addr, <IpAddr as DnsAddressResolver>::Error>>> + Send

§

fn lookup_ipv4_rand( &self, _: Domain, ) -> impl Future<Output = Option<Result<Ipv4Addr, <IpAddr as DnsAddressResolver>::Error>>> + Send

§

fn lookup_ipv6( &self, _: Domain, ) -> impl Stream<Item = Result<Ipv6Addr, <IpAddr as DnsAddressResolver>::Error>> + Send

§

fn lookup_ipv6_first( &self, _: Domain, ) -> impl Future<Output = Option<Result<Ipv6Addr, <IpAddr as DnsAddressResolver>::Error>>> + Send

§

fn lookup_ipv6_rand( &self, _: Domain, ) -> impl Future<Output = Option<Result<Ipv6Addr, <IpAddr as DnsAddressResolver>::Error>>> + Send

§

impl<R, const N: usize> DnsAddressResolver for [R; N]

§

type Error = OpaqueError

§

fn lookup_ipv4( &self, domain: Domain, ) -> impl Stream<Item = Result<Ipv4Addr, <[R; N] as DnsAddressResolver>::Error>> + Send

§

async fn lookup_ipv4_first( &self, domain: Domain, ) -> Option<Result<Ipv4Addr, <[R; N] as DnsAddressResolver>::Error>>

§

async fn lookup_ipv4_rand( &self, domain: Domain, ) -> Option<Result<Ipv4Addr, <[R; N] as DnsAddressResolver>::Error>>

§

fn lookup_ipv6( &self, domain: Domain, ) -> impl Stream<Item = Result<Ipv6Addr, <[R; N] as DnsAddressResolver>::Error>> + Send

§

async fn lookup_ipv6_first( &self, domain: Domain, ) -> Option<Result<Ipv6Addr, <[R; N] as DnsAddressResolver>::Error>>

§

async fn lookup_ipv6_rand( &self, domain: Domain, ) -> Option<Result<Ipv6Addr, <[R; N] as DnsAddressResolver>::Error>>

§

impl<T1> DnsAddressResolver for (T1,)

§

type Error = OpaqueError

§

fn lookup_ipv4( &self, domain: Domain, ) -> impl Stream<Item = Result<Ipv4Addr, <(T1,) as DnsAddressResolver>::Error>> + Send

§

async fn lookup_ipv4_first( &self, domain: Domain, ) -> Option<Result<Ipv4Addr, <(T1,) as DnsAddressResolver>::Error>>

§

async fn lookup_ipv4_rand( &self, domain: Domain, ) -> Option<Result<Ipv4Addr, <(T1,) as DnsAddressResolver>::Error>>

§

fn lookup_ipv6( &self, domain: Domain, ) -> impl Stream<Item = Result<Ipv6Addr, <(T1,) as DnsAddressResolver>::Error>> + Send

§

async fn lookup_ipv6_first( &self, domain: Domain, ) -> Option<Result<Ipv6Addr, <(T1,) as DnsAddressResolver>::Error>>

§

async fn lookup_ipv6_rand( &self, domain: Domain, ) -> Option<Result<Ipv6Addr, <(T1,) as DnsAddressResolver>::Error>>

§

impl<T1, T2> DnsAddressResolver for (T1, T2)

§

impl<T1, T2, T3> DnsAddressResolver for (T1, T2, T3)

§

impl<T1, T2, T3, T4> DnsAddressResolver for (T1, T2, T3, T4)

§

impl<T1, T2, T3, T4, T5> DnsAddressResolver for (T1, T2, T3, T4, T5)

§

impl<T1, T2, T3, T4, T5, T6> DnsAddressResolver for (T1, T2, T3, T4, T5, T6)

§

impl<T1, T2, T3, T4, T5, T6, T7> DnsAddressResolver for (T1, T2, T3, T4, T5, T6, T7)

§

impl<T1, T2, T3, T4, T5, T6, T7, T8> DnsAddressResolver for (T1, T2, T3, T4, T5, T6, T7, T8)

§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9> DnsAddressResolver for (T1, T2, T3, T4, T5, T6, T7, T8, T9)

§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> DnsAddressResolver for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)

§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> DnsAddressResolver for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)

§

impl<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> DnsAddressResolver for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)

Implementors§

§

impl DnsAddressResolver for Ipv4Addr

§

impl DnsAddressResolver for Ipv6Addr

§

impl DnsAddressResolver for DenyAllDnsResolver

§

impl DnsAddressResolver for EmptyDnsResolver

§

impl DnsAddressResolver for GlobalDnsResolver

§

impl DnsAddressResolver for HickoryDnsResolver

§

type Error = Box<dyn Error + Send + Sync>

§

impl DnsAddressResolver for BoxDnsAddressResolver

§

impl DnsAddressResolver for BoxDnsResolver

§

impl DnsAddressResolver for DnsAddresssResolverOverwrite

§

impl<A, B> DnsAddressResolver for Either<A, B>

§

impl<A, B, C> DnsAddressResolver for Either3<A, B, C>

§

impl<A, B, C, D> DnsAddressResolver for Either4<A, B, C, D>

§

impl<A, B, C, D, E> DnsAddressResolver for Either5<A, B, C, D, E>

§

impl<A, B, C, D, E, F> DnsAddressResolver for Either6<A, B, C, D, E, F>

§

impl<A, B, C, D, E, F, G> DnsAddressResolver for Either7<A, B, C, D, E, F, G>

§

impl<A, B, C, D, E, F, G, H> DnsAddressResolver for Either8<A, B, C, D, E, F, G, H>

§

impl<A, B, C, D, E, F, G, H, I> DnsAddressResolver for Either9<A, B, C, D, E, F, G, H, I>

§

impl<R> DnsAddressResolver for Option<R>

§

impl<R> DnsAddressResolver for Vec<R>

§

impl<R> DnsAddressResolver for DomainTrie<R>

§

impl<R> DnsAddressResolver for Arc<R>

§

impl<R> DnsAddressResolver for NonEmptyVec<R>