pub trait Resolver {
    type Octets: AsRef<[u8]>;
    type Answer: AsRef<Message<Self::Octets>>;
    type Query: Future<Output = Result<Self::Answer, Error>> + Send;

    // Required method
    fn query<N, Q>(&self, question: Q) -> Self::Query
       where N: ToDname,
             Q: Into<Question<N>>;
}
Available on crate feature resolv only.
Expand description

A type that acts as a DNS resolver.

A resolver is anything that tries to answer questions using the DNS. The query method takes a single question and returns a future that will eventually resolve into either an answer or an IO error.

Required Associated Types§

source

type Octets: AsRef<[u8]>

source

type Answer: AsRef<Message<Self::Octets>>

The answer returned by a query.

This isn’t Message directly as it may be useful for the resolver to provide additional information. For instance, a validating resolver (a resolver that checks whether DNSSEC signatures are correct) can supply more information as to why validation failed.

source

type Query: Future<Output = Result<Self::Answer, Error>> + Send

The future resolving into an answer.

Required Methods§

source

fn query<N, Q>(&self, question: Q) -> Self::Query
where N: ToDname, Q: Into<Question<N>>,

Returns a future answering a question.

The method takes anything that can be converted into a question and produces a future trying to answer the question.

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<'a> Resolver for &'a StubResolver

§

type Octets = Bytes

§

type Answer = Answer

§

type Query = Pin<Box<dyn Future<Output = Result<Answer, Error>> + Send + 'a>>