Expand description
A DNS resolver for comprehensive
This crate provides a DNS resolver for including in a
comprehensive::Assembly. Other Resources that require DNS
resolution services can depend on this one to obtain a handle to
the singleton shared client.
It wraps a hickory_resolver::TokioResolver.
There are currently no configuration parameters.
use comprehensive::{NoArgs, Resource, ResourceDependencies};
use comprehensive_dns::{DNSResolver, ResolverHandle};
use std::sync::Arc;
struct SomeResource(ResolverHandle);
#[derive(ResourceDependencies)]
struct SomeResourceDependencies(Arc<DNSResolver>);
impl Resource for SomeResource {
type Args = NoArgs;
type Dependencies = SomeResourceDependencies;
const NAME: &str = "SomeResource";
fn new(
d: SomeResourceDependencies,
_: NoArgs,
) -> Result<Self, Box<dyn std::error::Error>> {
Ok(Self(d.0.resolver()))
}
async fn run(&self) -> Result<(), Box<dyn std::error::Error>> {
println!("{:?}", self.0.as_ref().lookup_ip("example.org.").await);
Ok(())
}
}Structsยง
- DNSResolver
comprehensive::Resourcefor DNS resolution. For DNS resolution services, depend on this.- Resolver
Handle - Handle to the DNS resolver. Call
.as_ref()to get &TokioResolver.