Struct DomainBuilder
pub struct DomainBuilder { /* private fields */ }Available on crate feature
net only.Expand description
Builder for a Domain.
Labels are pushed in DNS-natural order: leftmost (most specific) first,
rightmost (TLD) last. The builder maintains the Domain invariant
after every successful push.
Backed by SmolStrBuilder, so domains up to the inline cap stay on the
stack — no heap allocation in the common case.
§Example
use rama_net::address::domain::DomainBuilder;
let mut b = DomainBuilder::new();
b.push_label("www").unwrap();
b.push_label("example").unwrap();
b.push_label("com").unwrap();
let d = b.finish().unwrap();
assert_eq!(d.as_str(), "www.example.com");Implementations§
§impl DomainBuilder
impl DomainBuilder
pub fn new() -> DomainBuilder
pub fn new() -> DomainBuilder
Creates an empty builder.
pub fn label_count(&self) -> usize
pub fn label_count(&self) -> usize
Returns the number of labels currently in the builder.
pub fn push_label(
&mut self,
label: &str,
) -> Result<&mut DomainBuilder, PushError>
pub fn push_label( &mut self, label: &str, ) -> Result<&mut DomainBuilder, PushError>
pub fn push(&mut self, label: &Label) -> Result<&mut DomainBuilder, PushError>
pub fn push(&mut self, label: &Label) -> Result<&mut DomainBuilder, PushError>
pub fn push_labels<'a, I>(
&mut self,
it: I,
) -> Result<&mut DomainBuilder, PushError>where
I: IntoIterator<Item = &'a Label>,
pub fn push_labels<'a, I>(
&mut self,
it: I,
) -> Result<&mut DomainBuilder, PushError>where
I: IntoIterator<Item = &'a Label>,
pub fn append<D>(&mut self, other: &D) -> Result<&mut DomainBuilder, PushError>where
D: DomainLabels + ?Sized,
pub fn append<D>(&mut self, other: &D) -> Result<&mut DomainBuilder, PushError>where
D: DomainLabels + ?Sized,
pub fn push_label_segments(
&mut self,
dotted: &str,
) -> Result<&mut DomainBuilder, PushError>
pub fn push_label_segments( &mut self, dotted: &str, ) -> Result<&mut DomainBuilder, PushError>
Trait Implementations§
§impl Debug for DomainBuilder
impl Debug for DomainBuilder
§impl Default for DomainBuilder
impl Default for DomainBuilder
§fn default() -> DomainBuilder
fn default() -> DomainBuilder
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for DomainBuilder
impl RefUnwindSafe for DomainBuilder
impl Send for DomainBuilder
impl Sync for DomainBuilder
impl Unpin for DomainBuilder
impl UnsafeUnpin for DomainBuilder
impl UnwindSafe for DomainBuilder
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Mutably borrows from an owned value. Read more
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a rama_grpc::Request§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Create a new
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more§impl<T, U> RamaTryFrom<T> for Uwhere
U: TryFrom<T>,
impl<T, U> RamaTryFrom<T> for Uwhere
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
fn rama_try_from(value: T) -> Result<U, <U as RamaTryFrom<T>>::Error>
§impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for Twhere
U: RamaTryFrom<T, CrateMarker>,
impl<T, U, CrateMarker> RamaTryInto<U, CrateMarker> for Twhere
U: RamaTryFrom<T, CrateMarker>,
type Error = <U as RamaTryFrom<T, CrateMarker>>::Error
fn rama_try_into(self) -> Result<U, <U as RamaTryFrom<T, CrateMarker>>::Error>
§impl<V, F> ValueFormatter<&V> for F
impl<V, F> ValueFormatter<&V> for F
§fn format_value(writer: impl ValueWriter, value: &&V)
fn format_value(writer: impl ValueWriter, value: &&V)
Write
value to writer§impl<V, F> ValueFormatter<Arc<V>> for F
impl<V, F> ValueFormatter<Arc<V>> for F
§fn format_value(writer: impl ValueWriter, value: &Arc<V>)
fn format_value(writer: impl ValueWriter, value: &Arc<V>)
Write
value to writer§impl<V, F> ValueFormatter<Box<V>> for F
impl<V, F> ValueFormatter<Box<V>> for F
§fn format_value(writer: impl ValueWriter, value: &Box<V>)
fn format_value(writer: impl ValueWriter, value: &Box<V>)
Write
value to writer§impl<V, F> ValueFormatter<Cow<'_, V>> for F
impl<V, F> ValueFormatter<Cow<'_, V>> for F
§fn format_value(writer: impl ValueWriter, value: &Cow<'_, V>)
fn format_value(writer: impl ValueWriter, value: &Cow<'_, V>)
Write
value to writer§impl<V, F> ValueFormatter<Option<V>> for Fwhere
F: ValueFormatter<V> + ?Sized,
impl<V, F> ValueFormatter<Option<V>> for Fwhere
F: ValueFormatter<V> + ?Sized,
§fn format_value(writer: impl ValueWriter, value: &Option<V>)
fn format_value(writer: impl ValueWriter, value: &Option<V>)
Write
value to writer