rsnds is a Rust lib crate implementing a DNS Stub Resolver (RFC 1034).
rsdns strives to be simple and fast. To be simple rsdns keeps a minimal API. To be fast rsdns aims to allow DNS message parsing with zero memory allocations at runtime.
There are DNS crates which implement asynchronous resolvers, but are built for a single async runtime. This somewhat blocks usage of such resolver in an application built around another runtime. rsdns closes this gap and genuinely supports three different async runtimes. Moreover, for completeness, rsdns has an independent synchronous resolver as well.
tokio
, async-std
and smol
std::net
SO_BINDTODEVICE
support)rsdns comes with a small command-line tool ch4. ch4 uses rsdns to query the Domain Name System, and shows the results in a zone-file format. It can be used as a simple substitute for dig, especially on platforms where dig is not originally supported.
rsdns focuses on querying the Domain Name System and strives to support all essential data-type records.
A
, NS
, TXT
, CNAME
, SOA
, MX
, PTR
, ANY
etc.AAAA
The following is a short list of features planned for the near future.
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.