Struct domain::base::message_builder::QuestionBuilder
source · 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>
impl<Target: Composer> QuestionBuilder<Target>
sourcepub fn push(&mut self, question: impl ComposeQuestion) -> Result<(), PushError>
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>
impl<Target: Composer> QuestionBuilder<Target>
§Conversions
Additional conversion are available via the Deref
implementation.
sourcepub fn rewind(&mut self)
pub fn rewind(&mut self)
Rewinds to an empty question section.
All previously added questions will be lost.
sourcepub fn builder(self) -> MessageBuilder<Target>
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>
impl<Target: Composer> QuestionBuilder<Target>
sourcepub fn question(self) -> QuestionBuilder<Target>
pub fn question(self) -> QuestionBuilder<Target>
Converts the question builder into a question builder.
In other words, doesn’t do anything.
sourcepub fn answer(self) -> AnswerBuilder<Target>
pub fn answer(self) -> AnswerBuilder<Target>
Converts the question builder into an answer builder.
Converts the question builder into an authority builder.
This will leave the answer section empty.
sourcepub fn additional(self) -> AdditionalBuilder<Target>
pub fn additional(self) -> AdditionalBuilder<Target>
Converts the question builder into an additional builder.
This will leave the answer and authority sections empty.
sourcepub fn finish(self) -> Target
pub fn finish(self) -> Target
Converts the question builder into the underlying octets builder.
This will leave the answer, authority, and additional sections empty.
sourcepub fn into_message(self) -> Message<Target::Octets>where
Target: FreezeBuilder,
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>
impl<Target> QuestionBuilder<Target>
sourcepub fn as_builder(&self) -> &MessageBuilder<Target>
pub fn as_builder(&self) -> &MessageBuilder<Target>
Returns a reference to the underlying message builder.
sourcepub fn as_builder_mut(&mut self) -> &mut MessageBuilder<Target>
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>>§
sourcepub fn counts(&self) -> HeaderCounts
pub fn counts(&self) -> HeaderCounts
Return the current value of the message header counts.
sourcepub fn header_mut(&mut self) -> &mut Header
pub fn header_mut(&mut self) -> &mut Header
Returns a mutable reference to the message header for manipulations.
Trait Implementations§
source§impl<Target> AsMut<MessageBuilder<Target>> for QuestionBuilder<Target>
impl<Target> AsMut<MessageBuilder<Target>> for QuestionBuilder<Target>
source§fn as_mut(&mut self) -> &mut MessageBuilder<Target>
fn as_mut(&mut self) -> &mut MessageBuilder<Target>
source§impl<Target> AsRef<MessageBuilder<Target>> for QuestionBuilder<Target>
impl<Target> AsRef<MessageBuilder<Target>> for QuestionBuilder<Target>
source§fn as_ref(&self) -> &MessageBuilder<Target>
fn as_ref(&self) -> &MessageBuilder<Target>
source§impl<Target> AsRef<Target> for QuestionBuilder<Target>
impl<Target> AsRef<Target> for QuestionBuilder<Target>
source§impl<Target: Clone> Clone for QuestionBuilder<Target>
impl<Target: Clone> Clone for QuestionBuilder<Target>
source§fn clone(&self) -> QuestionBuilder<Target>
fn clone(&self) -> QuestionBuilder<Target>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl<Target: Debug> Debug for QuestionBuilder<Target>
impl<Target: Debug> Debug for QuestionBuilder<Target>
source§impl<Target> Deref for QuestionBuilder<Target>
impl<Target> Deref for QuestionBuilder<Target>
source§impl<Target> DerefMut for QuestionBuilder<Target>
impl<Target> DerefMut for QuestionBuilder<Target>
source§impl<Target> From<AdditionalBuilder<Target>> for QuestionBuilder<Target>where
Target: Composer,
impl<Target> From<AdditionalBuilder<Target>> for QuestionBuilder<Target>where
Target: Composer,
source§fn from(src: AdditionalBuilder<Target>) -> Self
fn from(src: AdditionalBuilder<Target>) -> Self
source§impl<Target> From<AnswerBuilder<Target>> for QuestionBuilder<Target>where
Target: Composer,
impl<Target> From<AnswerBuilder<Target>> for QuestionBuilder<Target>where
Target: Composer,
source§fn from(src: AnswerBuilder<Target>) -> Self
fn from(src: AnswerBuilder<Target>) -> Self
source§impl<Target> From<AuthorityBuilder<Target>> for QuestionBuilder<Target>where
Target: Composer,
impl<Target> From<AuthorityBuilder<Target>> for QuestionBuilder<Target>where
Target: Composer,
source§fn from(src: AuthorityBuilder<Target>) -> Self
fn from(src: AuthorityBuilder<Target>) -> Self
source§impl<Target> From<MessageBuilder<Target>> for QuestionBuilder<Target>where
Target: Composer,
impl<Target> From<MessageBuilder<Target>> for QuestionBuilder<Target>where
Target: Composer,
source§fn from(src: MessageBuilder<Target>) -> Self
fn from(src: MessageBuilder<Target>) -> Self
source§impl<Target> From<QuestionBuilder<Target>> for AdditionalBuilder<Target>where
Target: Composer,
impl<Target> From<QuestionBuilder<Target>> for AdditionalBuilder<Target>where
Target: Composer,
source§fn from(src: QuestionBuilder<Target>) -> Self
fn from(src: QuestionBuilder<Target>) -> Self
source§impl<Target> From<QuestionBuilder<Target>> for AnswerBuilder<Target>where
Target: Composer,
impl<Target> From<QuestionBuilder<Target>> for AnswerBuilder<Target>where
Target: Composer,
source§fn from(src: QuestionBuilder<Target>) -> Self
fn from(src: QuestionBuilder<Target>) -> Self
source§impl<Target> From<QuestionBuilder<Target>> for AuthorityBuilder<Target>where
Target: Composer,
impl<Target> From<QuestionBuilder<Target>> for AuthorityBuilder<Target>where
Target: Composer,
source§fn from(src: QuestionBuilder<Target>) -> Self
fn from(src: QuestionBuilder<Target>) -> Self
source§impl<Target> From<QuestionBuilder<Target>> for MessageBuilder<Target>where
Target: Composer,
impl<Target> From<QuestionBuilder<Target>> for MessageBuilder<Target>where
Target: Composer,
source§fn from(src: QuestionBuilder<Target>) -> Self
fn from(src: QuestionBuilder<Target>) -> Self
Auto Trait Implementations§
impl<Target> Freeze for QuestionBuilder<Target>where
Target: Freeze,
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> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)