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: Future<Output = Result<Self::Answer, io::Error>> + Send;
fn query<N, Q>(&self, question: Q) -> Self::Query
where
N: ToName,
Q: Into<Question<N>>;
}
pub trait SearchNames {
type Name: ToName;
type Iter: Iterator<Item = Self::Name>;
fn search_iter(&self) -> Self::Iter;
}