3 releases

Uses new Rust 2024

new 0.1.2 May 16, 2025
0.1.1 May 3, 2025
0.1.0 Jan 16, 2025

#1316 in Rust patterns

Download history 13/week @ 2025-02-02 6/week @ 2025-02-09 2/week @ 2025-02-16 5/week @ 2025-02-23 5/week @ 2025-03-02 1/week @ 2025-03-23 4/week @ 2025-04-13 8/week @ 2025-04-20 69/week @ 2025-04-27 68/week @ 2025-05-04 74/week @ 2025-05-11

219 downloads per month
Used in 2 crates (via comprehensive_grpc)

MIT license

155KB
3K SLoC

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 trust_dns_resolver::TokioAsyncResolver.

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(())
   }
}

Dependencies

~13–24MB
~335K SLoC