Struct trust_dns_proto::rr::rdata::svcb::Mandatory[][src]

#[repr(transparent)]pub struct Mandatory(pub Vec<SvcParamKey>);
7.  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.  If the SVCB
   RRSet contains no compatible RRs, the client will generally act as if
   the RRSet is empty.

   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:

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

   In wire format, the keys are represented by their numeric values in
   network byte order, concatenated in ascending 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.)

Trait Implementations

impl<'r> BinDecodable<'r> for Mandatory[src]

fn read(decoder: &mut BinDecoder<'r>) -> ProtoResult<Self>[src]

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 ascending order.

impl BinEncodable for Mandatory[src]

fn emit(&self, encoder: &mut BinEncoder<'_>) -> ProtoResult<()>[src]

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 ascending order.

impl Clone for Mandatory[src]

impl Debug for Mandatory[src]

impl Display for Mandatory[src]

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

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:

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

impl Eq for Mandatory[src]

impl Hash for Mandatory[src]

impl PartialEq<Mandatory> for Mandatory[src]

impl StructuralEq for Mandatory[src]

impl StructuralPartialEq for Mandatory[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,