# TXT lookup using the trust-dns-resolver Crate

This is the third article on using the trust-dns-resolver crate
Warning: This code is not intended to be used in production. You should review and adjust to your own needs.

## Getting Started

First we will need to create our development environment.

cargo new trust-dns-resolver && cd \$_


This will give us our standard rust directly structure. We need to add our crate to the Cargo.toml

-snip-
[dependencies]
trust-dns-resolver = "0.20.1"


Next edit the src/main.rs as follows.

cargo run


This outputs the following

TXT Record 1:
globalsign-smime-dv=CDYX+XFHUw2wml6/Gb8+59BsH31KzUr6c1l2BPvqKX8=

TXT Record 2:



### Explaining the code

Documentation for the TXT RData can be found here
Let’s take a look at what we are doing here.
Like the previous examples we create a resolver which will do the work of doing the DNS lookups.
Next we use the resolver to call txt_lookup() and store the result into txt_response.

txt_response will contain either a TxtLookup or an Err. For this reason we need to handle these two cases. As before I am passing a reference to the display_txt() function.
Within display_txt I use match to handle my two cases.
In the case of Err. I do nothing and just report there were no TXT records.
In the case of TxtLookup, I will need to do some more processing. I simply make an iter() out of txt_response and loop over it and call to_string() on each record in the iter().

I went down a rabbit hole for a while because I incorrectly thought I had to call txt_data() which returns a Box<[u8], a smart pointer.

I hope you find this interesting and useful.

P.S: I might revisit this when I look at using regular expressions.