pub struct QuestionBuilder<Target> { /* private fields */ }
Expand description

Builds the question section of a DNS message.

A value of this type can be acquired by calling the question method on any other builder type. See the module documentation for an overview of how to build a message.

You can push questions to the end of the question section via the push method. It accepts various things that represent a question: question values and references; tuples of a domain name, record type, and class; and, using the regular class of IN, a pair of just a domain name and record type.

Once you are finished building the question section, you can progress to the answer section via the answer method or finish the message via finish. Additionally, conversions to all other builder types are available as well.

Implementations§

source§

impl<Target: Composer> QuestionBuilder<Target>

source

pub fn push(&mut self, question: impl ComposeQuestion) -> Result<(), PushError>

Appends a question to the question section.

This method accepts anything that implements the ComposeQuestion trait. Apart from an actual Question or a reference to it, this can also be a tuple of a domain name, record type, and class or, if the class is the usual IN, a pair of just the name and type.

In other words, the options are:

use domain::base::{Dname, MessageBuilder, Question, Rtype};
use domain::base::iana::Class;

let mut msg = MessageBuilder::new_vec().question();
msg.push(Question::new_in(Dname::root_ref(), Rtype::A)).unwrap();
msg.push(&Question::new_in(Dname::root_ref(), Rtype::A)).unwrap();
msg.push((Dname::root_ref(), Rtype::A, Class::In)).unwrap();
msg.push((Dname::root_ref(), Rtype::A)).unwrap();
source§

impl<Target: Composer> QuestionBuilder<Target>

Conversions

Additional conversion are available via the Deref implementation.

source

pub fn rewind(&mut self)

Rewinds to an empty question section.

All previously added questions will be lost.

source

pub fn builder(self) -> MessageBuilder<Target>

Converts the question builder into a message builder.

All questions will be dropped and the question section will be empty.

source§

impl<Target: Composer> QuestionBuilder<Target>

source

pub fn question(self) -> QuestionBuilder<Target>

Converts the question builder into a question builder.

In other words, doesn’t do anything.

source

pub fn answer(self) -> AnswerBuilder<Target>

Converts the question builder into an answer builder.

source

pub fn authority(self) -> AuthorityBuilder<Target>

Converts the question builder into an authority builder.

This will leave the answer section empty.

source

pub fn additional(self) -> AdditionalBuilder<Target>

Converts the question builder into an additional builder.

This will leave the answer and authority sections empty.

source

pub fn finish(self) -> Target

Converts the question builder into the underlying octets builder.

This will leave the answer, authority, and additional sections empty.

source

pub fn into_message(self) -> Message<Target::Octets>where Target: FreezeBuilder,

Converts the question builder into the final message.

The method will return a message atop whatever octets sequence the builder’s octets builder converts into.

source§

impl<Target> QuestionBuilder<Target>

source

pub fn as_builder(&self) -> &MessageBuilder<Target>

Returns a reference to the underlying message builder.

source

pub fn as_builder_mut(&mut self) -> &mut MessageBuilder<Target>

Returns a mutable reference to the underlying message builder.

Methods from Deref<Target = MessageBuilder<Target>>§

source

pub fn header(&self) -> Header

Return the current value of the message header.

source

pub fn counts(&self) -> HeaderCounts

Return the current value of the message header counts.

source

pub fn header_mut(&mut self) -> &mut Header

Returns a mutable reference to the message header for manipulations.

source

pub fn as_target(&self) -> &Target

Returns a reference to the underlying octets builder.

source

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

Returns an octets slice of the octets assembled so far.

source

pub fn as_message(&self) -> Message<&[u8]>where Target: AsRef<[u8]>,

Returns a message atop for the octets assembled so far.

This message is atop the octets slices derived from the builder, so it can be created cheaply.

Trait Implementations§

source§

impl<Target> AsMut<MessageBuilder<Target>> for QuestionBuilder<Target>

source§

fn as_mut(&mut self) -> &mut MessageBuilder<Target>

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

impl<Target: AsRef<[u8]>> AsRef<[u8]> for QuestionBuilder<Target>

source§

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

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

impl<Target> AsRef<MessageBuilder<Target>> for QuestionBuilder<Target>

source§

fn as_ref(&self) -> &MessageBuilder<Target>

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

impl<Target> AsRef<Target> for QuestionBuilder<Target>

source§

fn as_ref(&self) -> &Target

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

impl<Target: Clone> Clone for QuestionBuilder<Target>

source§

fn clone(&self) -> QuestionBuilder<Target>

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<Target: Debug> Debug for QuestionBuilder<Target>

source§

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

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

impl<Target> Deref for QuestionBuilder<Target>

§

type Target = MessageBuilder<Target>

The resulting type after dereferencing.
source§

fn deref(&self) -> &Self::Target

Dereferences the value.
source§

impl<Target> DerefMut for QuestionBuilder<Target>

source§

fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
source§

impl<Target> From<AdditionalBuilder<Target>> for QuestionBuilder<Target>where Target: Composer,

source§

fn from(src: AdditionalBuilder<Target>) -> Self

Converts to this type from the input type.
source§

impl<Target> From<AnswerBuilder<Target>> for QuestionBuilder<Target>where Target: Composer,

source§

fn from(src: AnswerBuilder<Target>) -> Self

Converts to this type from the input type.
source§

impl<Target> From<AuthorityBuilder<Target>> for QuestionBuilder<Target>where Target: Composer,

source§

fn from(src: AuthorityBuilder<Target>) -> Self

Converts to this type from the input type.
source§

impl<Target> From<MessageBuilder<Target>> for QuestionBuilder<Target>where Target: Composer,

source§

fn from(src: MessageBuilder<Target>) -> Self

Converts to this type from the input type.
source§

impl<Target> From<QuestionBuilder<Target>> for AdditionalBuilder<Target>where Target: Composer,

source§

fn from(src: QuestionBuilder<Target>) -> Self

Converts to this type from the input type.
source§

impl<Target> From<QuestionBuilder<Target>> for AnswerBuilder<Target>where Target: Composer,

source§

fn from(src: QuestionBuilder<Target>) -> Self

Converts to this type from the input type.
source§

impl<Target> From<QuestionBuilder<Target>> for AuthorityBuilder<Target>where Target: Composer,

source§

fn from(src: QuestionBuilder<Target>) -> Self

Converts to this type from the input type.
source§

impl<Target> From<QuestionBuilder<Target>> for MessageBuilder<Target>where Target: Composer,

source§

fn from(src: QuestionBuilder<Target>) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl<Target> RefUnwindSafe for QuestionBuilder<Target>where Target: RefUnwindSafe,

§

impl<Target> Send for QuestionBuilder<Target>where Target: Send,

§

impl<Target> Sync for QuestionBuilder<Target>where Target: Sync,

§

impl<Target> Unpin for QuestionBuilder<Target>where Target: Unpin,

§

impl<Target> UnwindSafe for QuestionBuilder<Target>where Target: UnwindSafe,

Blanket Implementations§

source§

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

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. 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 Twhere 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 Sourcewhere Target: OctetsFrom<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) -> Targetwhere Self::Error: Into<Infallible>,

Performs an infallible conversion.
source§

impl<T> ToOwned for Twhere T: Clone,

§

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, U> TryFrom<U> for Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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 Twhere V: MultiLane<T>,

source§

fn vzip(self) -> V