comprehensive_dns

Crates.iocomprehensive_dns
lib.rscomprehensive_dns
version0.2.0
created_at2025-01-16 20:49:15.95057+00
updated_at2025-05-26 11:12:07.646187+00
descriptionA DNS resolver for https://crates.io/crates/comprehensive
homepagehttps://github.com/vandry/comprehensive
repositoryhttps://github.com/vandry/comprehensive.git
max_upload_size
id1519915
size53,019
Kim Vandry (vandry)

documentation

README

A DNS resolver for [comprehensive]

This crate provides a DNS resolver for including in a [comprehensive::Assembly]. Other [Resource]s 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(())
   }
}
Commit count: 0

cargo fmt