domain::base::name

Enum UncertainName

source
pub enum UncertainName<Octets> {
    Absolute(Name<Octets>),
    Relative(RelativeName<Octets>),
}
Expand description

A domain name that may be absolute or relative.

This type is helpful when reading a domain name from some source where it may end up being absolute or not.

Variants§

§

Absolute(Name<Octets>)

§

Relative(RelativeName<Octets>)

Implementations§

source§

impl<Octets> UncertainName<Octets>

source

pub fn absolute(name: Name<Octets>) -> Self

Creates a new uncertain domain name from an absolute domain name.

source

pub fn relative(name: RelativeName<Octets>) -> Self

Creates a new uncertain domain name from a relative domain name.

source

pub fn root() -> Self
where Octets: From<&'static [u8]>,

Creates a new uncertain domain name containing the root label only.

source

pub fn empty() -> Self
where Octets: From<&'static [u8]>,

Creates a new uncertain yet empty domain name.

source

pub fn from_octets(octets: Octets) -> Result<Self, UncertainDnameError>
where Octets: AsRef<[u8]>,

Creates a new domain name from its wire format representation.

The returned name will correctly be identified as an absolute or relative name.

source

pub fn from_chars<C>(chars: C) -> Result<Self, FromStrError>
where Octets: FromBuilder, <Octets as FromBuilder>::Builder: FreezeBuilder<Octets = Octets> + EmptyBuilder + AsRef<[u8]> + AsMut<[u8]>, C: IntoIterator<Item = char>,

Creates a domain name from a sequence of characters.

The sequence must result in a domain name in zone file representation. That is, its labels should be separated by dots, while actual dots, white space and backslashes should be escaped by a preceeding backslash, and any byte value that is not a printable ASCII character should be encoded by a backslash followed by its three digit decimal value.

If Internationalized Domain Names are to be used, the labels already need to be in punycode-encoded form.

If the last character is a dot, the name will be absolute, otherwise it will be relative.

If you have a string, you can also use the FromStr trait, which really does the same thing.

source

pub fn scan<S: Scanner<Name = Name<Octets>>>( scanner: &mut S, ) -> Result<Self, S::Error>

source§

impl UncertainName<&'static [u8]>

source

pub fn empty_ref() -> Self

Creates an empty relative name atop a slice reference.

source

pub fn root_ref() -> Self

Creates an absolute name that is the root label atop a slice reference.

source§

impl UncertainName<Vec<u8>>

source

pub fn empty_vec() -> Self

Creates an empty relative name atop a Vec<u8>.

source

pub fn root_vec() -> Self

Creates an absolute name from the root label atop a Vec<u8>.

source§

impl UncertainName<Bytes>

source

pub fn empty_bytes() -> Self

Creates an empty relative name atop a bytes value.

source

pub fn root_bytes() -> Self

Creates an absolute name from the root label atop a bytes value.

source§

impl<Octets> UncertainName<Octets>

source

pub fn is_absolute(&self) -> bool

Returns whether the name is absolute.

source

pub fn is_relative(&self) -> bool

Returns whether the name is relative.

source

pub fn as_absolute(&self) -> Option<&Name<Octets>>

Returns a reference to an absolute name, if this name is absolute.

source

pub fn as_relative(&self) -> Option<&RelativeName<Octets>>

Returns a reference to a relative name, if the name is relative.

source

pub fn into_absolute(self) -> Result<Name<Octets>, PushError>
where Octets: AsRef<[u8]> + IntoBuilder, <Octets as IntoBuilder>::Builder: FreezeBuilder<Octets = Octets> + AsRef<[u8]> + AsMut<[u8]>,

Converts the name into an absolute name.

If the name is relative, appends the root label to it using RelativeName::into_absolute.

source

pub fn try_into_absolute(self) -> Result<Name<Octets>, Self>

Converts the name into an absolute name if it is absolute.

Otherwise, returns itself as the error.

source

pub fn try_into_relative(self) -> Result<RelativeName<Octets>, Self>

Converts the name into a relative name if it is relative.

Otherwise just returns itself as the error.

source

pub fn as_octets(&self) -> &Octets

Returns a reference to the underlying octets sequence.

source

pub fn as_slice(&self) -> &[u8]
where Octets: AsRef<[u8]>,

Returns an octets slice with the raw content of the name.

source

pub fn chain<S: ToLabelIter>( self, suffix: S, ) -> Result<Chain<Self, S>, LongChainError>
where Octets: AsRef<[u8]>,

Makes an uncertain name absolute by chaining on a suffix if needed.

The method converts the uncertain name into a chain that will be absolute. If the name is already absolute, the chain will be the name itself. If it is relative, if will be the concatenation of the name and suffix.

Trait Implementations§

source§

impl<Octs: AsRef<[u8]>> AsRef<[u8]> for UncertainName<Octs>

source§

fn as_ref(&self) -> &[u8]

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl<Octs> AsRef<Octs> for UncertainName<Octs>

source§

fn as_ref(&self) -> &Octs

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl<Octets: Clone> Clone for UncertainName<Octets>

source§

fn clone(&self) -> UncertainName<Octets>

Returns a copy 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<Octets: AsRef<[u8]>> Debug for UncertainName<Octets>

source§

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

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

impl<Octets: AsRef<[u8]>> Display for UncertainName<Octets>

source§

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

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

impl<Octets> From<Name<Octets>> for UncertainName<Octets>

source§

fn from(src: Name<Octets>) -> Self

Converts to this type from the input type.
source§

impl<Octets> From<RelativeName<Octets>> for UncertainName<Octets>

source§

fn from(src: RelativeName<Octets>) -> Self

Converts to this type from the input type.
source§

impl<Octets> FromStr for UncertainName<Octets>
where Octets: FromBuilder, <Octets as FromBuilder>::Builder: EmptyBuilder + FreezeBuilder<Octets = Octets> + AsRef<[u8]> + AsMut<[u8]>,

source§

type Err = FromStrError

The associated error which can be returned from parsing.
source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more
source§

impl<Octets: AsRef<[u8]>> Hash for UncertainName<Octets>

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<'a, Octets: AsRef<[u8]>> IntoIterator for &'a UncertainName<Octets>

source§

type Item = &'a Label

The type of the elements being iterated over.
source§

type IntoIter = NameIter<'a>

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
source§

impl<Octets, Other> PartialEq<UncertainName<Other>> for UncertainName<Octets>
where Octets: AsRef<[u8]>, Other: AsRef<[u8]>,

source§

fn eq(&self, other: &UncertainName<Other>) -> 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<Octs: AsRef<[u8]>> ToLabelIter for UncertainName<Octs>

source§

type LabelIter<'a> = NameIter<'a> where Octs: 'a

The type of the iterator over the labels. Read more
source§

fn iter_labels(&self) -> Self::LabelIter<'_>

Returns an iterator over the labels.
source§

fn compose_len(&self) -> u16

Returns the length in octets of the encoded name.
source§

fn starts_with<N: ToLabelIter + ?Sized>(&self, base: &N) -> bool

Determines whether base is a prefix of self.
source§

fn ends_with<N: ToLabelIter + ?Sized>(&self, base: &N) -> bool

Determines whether base is a suffix of self.
source§

impl<Octets: AsRef<[u8]>> Eq for UncertainName<Octets>

Auto Trait Implementations§

§

impl<Octets> Freeze for UncertainName<Octets>
where Octets: Freeze,

§

impl<Octets> RefUnwindSafe for UncertainName<Octets>
where Octets: RefUnwindSafe,

§

impl<Octets> Send for UncertainName<Octets>
where Octets: Send,

§

impl<Octets> Sync for UncertainName<Octets>
where Octets: Sync,

§

impl<Octets> Unpin for UncertainName<Octets>
where Octets: Unpin,

§

impl<Octets> UnwindSafe for UncertainName<Octets>
where Octets: UnwindSafe,

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, dst: *mut T)

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

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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<Source, Target> OctetsInto<Target> for Source
where Target: OctetsFrom<Source>,

source§

type Error = <Target as OctetsFrom<Source>>::Error

source§

fn try_octets_into( self, ) -> Result<Target, <Source as OctetsInto<Target>>::Error>

Performs the conversion.
source§

fn octets_into(self) -> Target
where Self::Error: Into<Infallible>,

Performs an infallible conversion.
source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
source§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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§

default 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

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more