use crate::base::message::Message;
use crate::base::name::ToName;
use crate::base::question::Question;
use std::future::Future;
use std::io;
pub trait Resolver {
type Octets: AsRef<[u8]>;
type Answer: AsRef<Message<Self::Octets>>;
type Query<'a>: Future<Output = Result<Self::Answer, io::Error>> + Send
where
Self: 'a;
fn query<'a, N, Q>(&'a self, question: Q) -> Self::Query<'a>
where
N: ToName,
Q: Into<Question<N>>;
}
pub trait SearchNames {
type Name: ToName;
type Iter<'a>: Iterator<Item = Self::Name>
where
Self: 'a;
fn search_iter<'a>(&'a self) -> Self::Iter<'a>;
}