Skip to main content

TypedHeader

Trait TypedHeader 

Source
pub trait TypedHeader: Sized {
    const NAME: HeaderName;
    const VALIDATE_LIST: bool = false;

    // Required method
    fn decode(value: &[u8]) -> Result<Self, HeaderError>;

    // Provided methods
    fn decode_list(value: &[u8]) -> Result<Vec<Self>, HeaderError> { ... }
    fn validate_list(_values: &[&Self]) -> Result<(), HeaderError> { ... }
}
Expand description

A header value that parses into a typed form.

Required Associated Constants§

Source

const NAME: HeaderName

The header this type reads.

Provided Associated Constants§

Source

const VALIDATE_LIST: bool = false

Whether Headers::typed_all must collect and validate the complete field before yielding.

The default keeps ordinary headers streaming and allocation-free across rows. A field with message-wide constraints opts in and implements Self::validate_list.

Required Methods§

Source

fn decode(value: &[u8]) -> Result<Self, HeaderError>

Parse one header value. The value arrives unfolded and trimmed.

Provided Methods§

Source

fn decode_list(value: &[u8]) -> Result<Vec<Self>, HeaderError>

Parse every value in one header row.

RFC 3261 §7.3 makes a comma-joined row exactly equivalent to the same values on separate rows for headers whose grammar is a comma-separated list; those headers override this. Everything else carries exactly one value per row.

Source

fn validate_list(_values: &[&Self]) -> Result<(), HeaderError>

Validate all decoded values of this field across the complete message.

Most SIP list fields have no message-wide constraint, so the default accepts every sequence. A field whose grammar constrains the number or relationship of values can override this; Headers::typed_all calls it after expanding every comma-separated row and repeated field line into wire order.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl TypedHeader for ContactValue

Source§

const NAME: HeaderName = HeaderName::Contact

Source§

impl TypedHeader for Contact

Source§

const NAME: HeaderName = HeaderName::Contact

Source§

impl TypedHeader for From

Source§

const NAME: HeaderName = HeaderName::From

Source§

impl TypedHeader for Path

Source§

const NAME: HeaderName = HeaderName::Path

Source§

impl TypedHeader for RecordRoute

Source§

const NAME: HeaderName = HeaderName::RecordRoute

Source§

impl TypedHeader for Route

Source§

const NAME: HeaderName = HeaderName::Route

Source§

impl TypedHeader for ServiceRoute

Source§

const NAME: HeaderName = HeaderName::ServiceRoute

Source§

impl TypedHeader for To

Source§

const NAME: HeaderName = HeaderName::To

Source§

impl TypedHeader for HistoryInfo

Source§

const NAME: HeaderName = HeaderName::HistoryInfo

Source§

impl TypedHeader for Reason

Source§

const NAME: HeaderName = HeaderName::Reason

Source§

impl TypedHeader for PAssertedIdentity

Source§

const NAME: HeaderName = HeaderName::PAssertedIdentity

Source§

const VALIDATE_LIST: bool = true

Source§

impl TypedHeader for PPreferredIdentity

Source§

const NAME: HeaderName = HeaderName::PPreferredIdentity

Source§

const VALIDATE_LIST: bool = true

Source§

impl TypedHeader for Allow

Source§

const NAME: HeaderName = HeaderName::Allow

Source§

impl TypedHeader for CSeq

Source§

const NAME: HeaderName = HeaderName::CSeq

Source§

impl TypedHeader for CallId

Source§

const NAME: HeaderName = HeaderName::CallId

Source§

impl TypedHeader for ContentLength

Source§

const NAME: HeaderName = HeaderName::ContentLength

Source§

impl TypedHeader for ContentType

Source§

const NAME: HeaderName = HeaderName::ContentType

Source§

impl TypedHeader for Date

Source§

const NAME: HeaderName = HeaderName::Date

Source§

impl TypedHeader for Expires

Source§

const NAME: HeaderName = HeaderName::Expires

Source§

impl TypedHeader for MaxForwards

Source§

const NAME: HeaderName = HeaderName::MaxForwards

Source§

impl TypedHeader for ProxyRequire

Source§

const NAME: HeaderName = HeaderName::ProxyRequire

Source§

impl TypedHeader for Require

Source§

const NAME: HeaderName = HeaderName::Require

Source§

impl TypedHeader for Supported

Source§

const NAME: HeaderName = HeaderName::Supported

Source§

impl TypedHeader for Unsupported

Source§

const NAME: HeaderName = HeaderName::Unsupported

Source§

impl TypedHeader for Privacy

Source§

const NAME: HeaderName = HeaderName::Privacy

Source§

const VALIDATE_LIST: bool = true

Source§

impl TypedHeader for Via

Source§

const NAME: HeaderName = HeaderName::Via

Source§

impl TypedHeader for IdentityHeader

Source§

const NAME: HeaderName = HeaderName::Identity

Source§

impl TypedHeader for Indicators

Source§

const NAME: HeaderName = HeaderName::FeatureCaps

Source§

impl TypedHeader for RAck

Source§

const NAME: HeaderName = HeaderName::RAck

Source§

impl TypedHeader for RSeq

Source§

const NAME: HeaderName = HeaderName::RSeq

Source§

impl TypedHeader for MinSe

Source§

const NAME: HeaderName = HeaderName::MinSe

Source§

impl TypedHeader for SessionExpires

Source§

const NAME: HeaderName = HeaderName::SessionExpires