Skip to main content

DnsName

Struct DnsName 

Source
pub struct DnsName {
    pub labels: Vec<String>,
}
Expand description

A DNS domain name consisting of labels.

Supports encoding/decoding with RFC 1035 compression pointers.

Fields§

§labels: Vec<String>

The labels making up the domain name (e.g., [“www”, “example”, “com”]).

Implementations§

Source§

impl DnsName

Source

pub fn new(labels: Vec<String>) -> Self

Create a new DnsName from labels.

Source

pub fn root() -> Self

Create a root name (empty labels).

Source

pub fn from_str_dotted(s: &str) -> Result<Self, FieldError>

Parse a DNS name from a dot-separated string. “www.example.com” → labels: [“www”, “example”, “com”] “www.example.com.” → same (trailing dot is ignored)

Source

pub fn is_root(&self) -> bool

Check if this is the root name.

Source

pub fn to_fqdn(&self) -> String

Get the fully qualified domain name string. Returns “www.example.com.” with trailing dot.

Source

pub fn encode(&self) -> Vec<u8>

Encode to wire format without compression. Each label is preceded by its length byte, terminated by a zero byte.

Source

pub fn encode_compressed( &self, current_offset: usize, compression_map: &mut HashMap<String, u16>, ) -> Vec<u8>

Encode to wire format with compression. Uses compression_map to track previously written name positions. current_offset is where this name will be written in the packet.

Source

pub fn decode(packet: &[u8], offset: usize) -> Result<(Self, usize), FieldError>

Decode a DNS name from wire format with pointer decompression.

packet is the full packet buffer (needed for pointer resolution). offset is the starting position of the name.

Returns the decoded name and the number of bytes consumed from offset (not counting bytes reached via pointers).

Source

pub fn wire_len(&self) -> usize

Wire-format length of this name without compression.

Trait Implementations§

Source§

impl Clone for DnsName

Source§

fn clone(&self) -> DnsName

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for DnsName

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for DnsName

Source§

fn default() -> DnsName

Returns the “default value” for a type. Read more
Source§

impl Display for DnsName

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<&str> for DnsName

Source§

fn from(s: &str) -> Self

Converts to this type from the input type.
Source§

impl Hash for DnsName

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for DnsName

Source§

fn eq(&self, other: &DnsName) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for DnsName

Source§

impl StructuralPartialEq for DnsName

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V