hickory_proto::rr::rdata::svcb

Struct Mandatory

Source
#[repr(transparent)]
pub struct Mandatory(pub Vec<SvcParamKey>);
Expand description

RFC 9460 SVCB and HTTPS Resource Records, Nov 2023

8.  ServiceMode RR compatibility and mandatory keys

   In a ServiceMode RR, a SvcParamKey is considered "mandatory" if the
   RR will not function correctly for clients that ignore this
   SvcParamKey.  Each SVCB protocol mapping SHOULD specify a set of keys
   that are "automatically mandatory", i.e. mandatory if they are
   present in an RR.  The SvcParamKey "mandatory" is used to indicate
   any mandatory keys for this RR, in addition to any automatically
   mandatory keys that are present.

   A ServiceMode RR is considered "compatible" with a client if the
   client recognizes all the mandatory keys, and their values indicate
   that successful connection establishment is possible. Incompatible RRs
   are ignored (see step 5 of the procedure defined in Section 3)

   The presentation value SHALL be a comma-separated list
   (Appendix A.1) of one or more valid SvcParamKeys, either by their
   registered name or in the unknown-key format (Section 2.1).  Keys MAY
   appear in any order, but MUST NOT appear more than once.  For self-
   consistency (Section 2.4.3), listed keys MUST also appear in the
   SvcParams.

   To enable simpler parsing, this SvcParamValue MUST NOT contain escape
   sequences.

   For example, the following is a valid list of SvcParams:

   ipv6hint=... key65333=ex1 key65444=ex2 mandatory=key65444,ipv6hint

   In wire format, the keys are represented by their numeric values in
   network byte order, concatenated in strictly increasing numeric order.

   This SvcParamKey is always automatically mandatory, and MUST NOT
   appear in its own value-list.  Other automatically mandatory keys
   SHOULD NOT appear in the list either.  (Including them wastes space
   and otherwise has no effect.)

Tuple Fields§

§0: Vec<SvcParamKey>

Trait Implementations§

Source§

impl<'r> BinDecodable<'r> for Mandatory

Source§

fn read(decoder: &mut BinDecoder<'r>) -> Result<Self, ProtoError>

This expects the decoder to be limited to only this field, i.e. the end of input for the decoder is the end of input for the fields

   In wire format, the keys are represented by their numeric values in
   network byte order, concatenated in strictly increasing numeric order.
Source§

fn from_bytes(bytes: &'r [u8]) -> Result<Self, ProtoError>

Returns the object in binary form
Source§

impl BinEncodable for Mandatory

Source§

fn emit(&self, encoder: &mut BinEncoder<'_>) -> Result<(), ProtoError>

This expects the decoder to be limited to only this field, i.e. the end of input for the decoder is the end of input for the fields

   In wire format, the keys are represented by their numeric values in
   network byte order, concatenated in strictly increasing numeric order.
Source§

fn to_bytes(&self) -> Result<Vec<u8>, ProtoError>

Returns the object in binary form
Source§

impl Clone for Mandatory

Source§

fn clone(&self) -> Mandatory

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 Debug for Mandatory

Source§

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

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

impl<'de> Deserialize<'de> for Mandatory

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Display for Mandatory

Source§

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

RFC 9460 SVCB and HTTPS Resource Records, Nov 2023

The presentation value SHALL be a comma-separated list (Appendix A.1) of one or more valid SvcParamKeys, either by their registered name or in the unknown-key format (Section 2.1). Keys MAY appear in any order, but MUST NOT appear more than once. For self- consistency (Section 2.4.3), listed keys MUST also appear in the SvcParams.

To enable simpler parsing, this SvcParamValue MUST NOT contain escape sequences.

For example, the following is a valid list of SvcParams:

ipv6hint=… key65333=ex1 key65444=ex2 mandatory=key65444,ipv6hint

Source§

impl Hash for Mandatory

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 Mandatory

Source§

fn eq(&self, other: &Mandatory) -> 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 Serialize for Mandatory

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Eq for Mandatory

Source§

impl StructuralPartialEq for Mandatory

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

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

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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<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
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSendSync for T