Struct melib::email::headers::names::HeaderName

source ·
pub struct HeaderName { /* private fields */ }
Expand description

Case insensitive owned wrapper for a header name. As of RFC5322 it’s guaranteed to be ASCII.

Implementations§

source§

impl HeaderName

source

pub fn as_str(&self) -> &str

Returns a str representation of the header.

The returned string will always be lower case. Use Display for a properly formatted representation.

source

pub fn as_lowercase_bytes(&self) -> &[u8]

Returns a &[u8] representation of the header.

The returned string will always be lower case. Use Display for a properly formatted representation.

source

pub fn into_bytes(self) -> Vec<u8>

Converts a header into a Vec<u8>.

The returned string will always be formatted.

source

pub fn from_bytes(src: &[u8]) -> Result<Self, InvalidHeaderName>

source

pub const fn is_standard(&self) -> bool

source§

impl HeaderName

source

pub const SUBJECT: Self = SUBJECT

source

pub const REPLY_TO: Self = REPLY_TO

source

pub const IN_REPLY_TO: Self = IN_REPLY_TO

source

pub const REFERENCES: Self = REFERENCES

source

pub const MAIL_REPLY_TO: Self = MAIL_REPLY_TO

source

pub const MAIL_FOLLOWUP_TO: Self = MAIL_FOLLOWUP_TO

source

pub const DELIVERED_TO: Self = DELIVERED_TO

source

pub const COMMENTS: Self = COMMENTS

source

pub const KEYWORDS: Self = KEYWORDS

source

pub const RECEIVED: Self = RECEIVED

source

pub const CONTENT_LANGUAGE: Self = CONTENT_LANGUAGE

source

pub const CONTENT_LENGTH: Self = CONTENT_LENGTH

source

pub const FORWARDED: Self = FORWARDED

source

pub const ACCEPT_LANGUAGE: Self = ACCEPT_LANGUAGE

source

pub const ALSO_CONTROL: Self = ALSO_CONTROL

source

pub const ALTERNATE_RECIPIENT: Self = ALTERNATE_RECIPIENT

source

pub const APPROVED: Self = APPROVED

source

pub const ARC_AUTHENTICATION_RESULTS: Self = ARC_AUTHENTICATION_RESULTS

source

pub const ARC_MESSAGE_SIGNATURE: Self = ARC_MESSAGE_SIGNATURE

source

pub const ARC_SEAL: Self = ARC_SEAL

source

pub const ARCHIVE: Self = ARCHIVE

source

pub const ARCHIVED_AT: Self = ARCHIVED_AT

source

pub const ARTICLE_NAMES: Self = ARTICLE_NAMES

source

pub const ARTICLE_UPDATES: Self = ARTICLE_UPDATES

source

pub const AUTHENTICATION_RESULTS: Self = AUTHENTICATION_RESULTS

source

pub const AUTO_SUBMITTED: Self = AUTO_SUBMITTED

source

pub const AUTOFORWARDED: Self = AUTOFORWARDED

source

pub const AUTOSUBMITTED: Self = AUTOSUBMITTED

source

pub const BASE: Self = BASE

source

pub const BCC: Self = BCC

source

pub const BODY: Self = BODY

source

pub const CANCEL_KEY: Self = CANCEL_KEY

source

pub const CANCEL_LOCK: Self = CANCEL_LOCK

source

pub const CC: Self = CC

source

pub const CONTENT_ALTERNATIVE: Self = CONTENT_ALTERNATIVE

source

pub const CONTENT_BASE: Self = CONTENT_BASE

source

pub const CONTENT_DESCRIPTION: Self = CONTENT_DESCRIPTION

source

pub const CONTENT_DISPOSITION: Self = CONTENT_DISPOSITION

source

pub const CONTENT_DURATION: Self = CONTENT_DURATION

source

pub const CONTENT_FEATURES: Self = CONTENT_FEATURES

source

pub const CONTENT_ID: Self = CONTENT_ID

source

pub const CONTENT_IDENTIFIER: Self = CONTENT_IDENTIFIER

source

pub const CONTENT_LOCATION: Self = CONTENT_LOCATION

source

pub const CONTENT_MD5: Self = CONTENT_MD5

source

pub const CONTENT_RETURN: Self = CONTENT_RETURN

source

pub const CONTENT_TRANSFER_ENCODING: Self = CONTENT_TRANSFER_ENCODING

source

pub const CONTENT_TRANSLATION_TYPE: Self = CONTENT_TRANSLATION_TYPE

source

pub const CONTENT_TYPE: Self = CONTENT_TYPE

source

pub const CONTROL: Self = CONTROL

source

pub const CONVERSION: Self = CONVERSION

source

pub const CONVERSION_WITH_LOSS: Self = CONVERSION_WITH_LOSS

source

pub const DL_EXPANSION_HISTORY: Self = DL_EXPANSION_HISTORY

source

pub const DATE: Self = DATE

source

pub const DATE_RECEIVED: Self = DATE_RECEIVED

source

pub const DEFERRED_DELIVERY: Self = DEFERRED_DELIVERY

source

pub const DELIVERY_DATE: Self = DELIVERY_DATE

source

pub const DISCARDED_X400_IPMS_EXTENSIONS: Self = DISCARDED_X400_IPMS_EXTENSIONS

source

pub const DISCARDED_X400_MTS_EXTENSIONS: Self = DISCARDED_X400_MTS_EXTENSIONS

source

pub const DISCLOSE_RECIPIENTS: Self = DISCLOSE_RECIPIENTS

source

pub const DISPOSITION_NOTIFICATION_OPTIONS: Self = DISPOSITION_NOTIFICATION_OPTIONS

source

pub const DISPOSITION_NOTIFICATION_TO: Self = DISPOSITION_NOTIFICATION_TO

source

pub const DISTRIBUTION: Self = DISTRIBUTION

source

pub const DKIM_SIGNATURE: Self = DKIM_SIGNATURE

source

pub const DOWNGRADED_BCC: Self = DOWNGRADED_BCC

source

pub const DOWNGRADED_CC: Self = DOWNGRADED_CC

source

pub const DOWNGRADED_DISPOSITION_NOTIFICATION_TO: Self = DOWNGRADED_DISPOSITION_NOTIFICATION_TO

source

pub const DOWNGRADED_FINAL_RECIPIENT: Self = DOWNGRADED_FINAL_RECIPIENT

source

pub const DOWNGRADED_FROM: Self = DOWNGRADED_FROM

source

pub const DOWNGRADED_IN_REPLY_TO: Self = DOWNGRADED_IN_REPLY_TO

source

pub const DOWNGRADED_MAIL_FROM: Self = DOWNGRADED_MAIL_FROM

source

pub const DOWNGRADED_MESSAGE_ID: Self = DOWNGRADED_MESSAGE_ID

source

pub const DOWNGRADED_ORIGINAL_RECIPIENT: Self = DOWNGRADED_ORIGINAL_RECIPIENT

source

pub const DOWNGRADED_RCPT_TO: Self = DOWNGRADED_RCPT_TO

source

pub const DOWNGRADED_REFERENCES: Self = DOWNGRADED_REFERENCES

source

pub const DOWNGRADED_REPLY_TO: Self = DOWNGRADED_REPLY_TO

source

pub const DOWNGRADED_RESENT_BCC: Self = DOWNGRADED_RESENT_BCC

source

pub const DOWNGRADED_RESENT_CC: Self = DOWNGRADED_RESENT_CC

source

pub const DOWNGRADED_RESENT_FROM: Self = DOWNGRADED_RESENT_FROM

source

pub const DOWNGRADED_RESENT_REPLY_TO: Self = DOWNGRADED_RESENT_REPLY_TO

source

pub const DOWNGRADED_RESENT_SENDER: Self = DOWNGRADED_RESENT_SENDER

source

pub const DOWNGRADED_RESENT_TO: Self = DOWNGRADED_RESENT_TO

source

pub const DOWNGRADED_RETURN_PATH: Self = DOWNGRADED_RETURN_PATH

source

pub const DOWNGRADED_SENDER: Self = DOWNGRADED_SENDER

source

pub const DOWNGRADED_TO: Self = DOWNGRADED_TO

source

pub const ENCODING: Self = ENCODING

source

pub const ENCRYPTED: Self = ENCRYPTED

source

pub const EXPIRES: Self = EXPIRES

source

pub const EXPIRY_DATE: Self = EXPIRY_DATE

source

pub const FOLLOWUP_TO: Self = FOLLOWUP_TO

source

pub const FROM: Self = FROM

source

pub const GENERATE_DELIVERY_REPORT: Self = GENERATE_DELIVERY_REPORT

source

pub const IMPORTANCE: Self = IMPORTANCE

source

pub const INCOMPLETE_COPY: Self = INCOMPLETE_COPY

source

pub const INJECTION_DATE: Self = INJECTION_DATE

source

pub const INJECTION_INFO: Self = INJECTION_INFO

source

pub const LANGUAGE: Self = LANGUAGE

source

pub const LATEST_DELIVERY_TIME: Self = LATEST_DELIVERY_TIME

source

pub const LINES: Self = LINES

source

pub const LIST_ARCHIVE: Self = LIST_ARCHIVE

source

pub const LIST_HELP: Self = LIST_HELP

source

pub const LIST_ID: Self = LIST_ID

source

pub const LIST_OWNER: Self = LIST_OWNER

source

pub const LIST_POST: Self = LIST_POST

source

pub const LIST_SUBSCRIBE: Self = LIST_SUBSCRIBE

source

pub const LIST_UNSUBSCRIBE: Self = LIST_UNSUBSCRIBE

source

pub const LIST_UNSUBSCRIBE_POST: Self = LIST_UNSUBSCRIBE_POST

source

pub const MESSAGE_CONTEXT: Self = MESSAGE_CONTEXT

source

pub const MESSAGE_ID: Self = MESSAGE_ID

source

pub const MESSAGE_TYPE: Self = MESSAGE_TYPE

source

pub const MIME_VERSION: Self = MIME_VERSION

source

pub const MT_PRIORITY: Self = MT_PRIORITY

source

pub const NEWSGROUPS: Self = NEWSGROUPS

source

pub const NNTP_POSTING_DATE: Self = NNTP_POSTING_DATE

source

pub const NNTP_POSTING_HOST: Self = NNTP_POSTING_HOST

source

pub const OBSOLETES: Self = OBSOLETES

source

pub const ORGANIZATION: Self = ORGANIZATION

source

pub const ORIGINAL_ENCODED_INFORMATION_TYPES: Self = ORIGINAL_ENCODED_INFORMATION_TYPES

source

pub const ORIGINAL_FROM: Self = ORIGINAL_FROM

source

pub const ORIGINAL_MESSAGE_ID: Self = ORIGINAL_MESSAGE_ID

source

pub const ORIGINAL_RECIPIENT: Self = ORIGINAL_RECIPIENT

source

pub const ORIGINAL_SENDER: Self = ORIGINAL_SENDER

source

pub const ORIGINATOR_RETURN_ADDRESS: Self = ORIGINATOR_RETURN_ADDRESS

source

pub const ORIGINAL_SUBJECT: Self = ORIGINAL_SUBJECT

source

pub const PATH: Self = PATH

source

pub const PICS_LABEL: Self = PICS_LABEL

source

pub const POSTING_VERSION: Self = POSTING_VERSION

source

pub const PREVENT_NONDELIVERY_REPORT: Self = PREVENT_NONDELIVERY_REPORT

source

pub const PRIORITY: Self = PRIORITY

source

pub const RECEIVED_SPF: Self = RECEIVED_SPF

source

pub const RELAY_VERSION: Self = RELAY_VERSION

source

pub const REPLY_BY: Self = REPLY_BY

source

pub const REQUIRE_RECIPIENT_VALID_SINCE: Self = REQUIRE_RECIPIENT_VALID_SINCE

source

pub const RESENT_BCC: Self = RESENT_BCC

source

pub const RESENT_CC: Self = RESENT_CC

source

pub const RESENT_DATE: Self = RESENT_DATE

source

pub const RESENT_FROM: Self = RESENT_FROM

source

pub const RESENT_MESSAGE_ID: Self = RESENT_MESSAGE_ID

source

pub const RESENT_REPLY_TO: Self = RESENT_REPLY_TO

source

pub const RESENT_SENDER: Self = RESENT_SENDER

source

pub const RESENT_TO: Self = RESENT_TO

source

pub const RETURN_PATH: Self = RETURN_PATH

source

pub const SEE_ALSO: Self = SEE_ALSO

source

pub const SENDER: Self = SENDER

source

pub const SENSITIVITY: Self = SENSITIVITY

source

pub const SOLICITATION: Self = SOLICITATION

source

pub const STATUS: Self = STATUS

source

pub const SUMMARY: Self = SUMMARY

source

pub const SUPERSEDES: Self = SUPERSEDES

source

pub const TLS_REPORT_DOMAIN: Self = TLS_REPORT_DOMAIN

source

pub const TLS_REPORT_SUBMITTER: Self = TLS_REPORT_SUBMITTER

source

pub const TLS_REQUIRED: Self = TLS_REQUIRED

source

pub const TO: Self = TO

source

pub const USER_AGENT: Self = USER_AGENT

source

pub const VBR_INFO: Self = VBR_INFO

source

pub const X400_CONTENT_IDENTIFIER: Self = X400_CONTENT_IDENTIFIER

source

pub const X400_CONTENT_RETURN: Self = X400_CONTENT_RETURN

source

pub const X400_CONTENT_TYPE: Self = X400_CONTENT_TYPE

source

pub const X400_MTS_IDENTIFIER: Self = X400_MTS_IDENTIFIER

source

pub const X400_ORIGINATOR: Self = X400_ORIGINATOR

source

pub const X400_RECEIVED: Self = X400_RECEIVED

source

pub const X400_RECIPIENTS: Self = X400_RECIPIENTS

source

pub const X400_TRACE: Self = X400_TRACE

source

pub const XREF: Self = XREF

source

pub const APPARENTLY_TO: Self = APPARENTLY_TO

source

pub const AUTHOR: Self = AUTHOR

source

pub const EDIINT_FEATURES: Self = EDIINT_FEATURES

source

pub const EESST_VERSION: Self = EESST_VERSION

source

pub const ERRORS_TO: Self = ERRORS_TO

source

pub const JABBER_ID: Self = JABBER_ID

source

pub const SIO_LABEL: Self = SIO_LABEL

source

pub const SIO_LABEL_HISTORY: Self = SIO_LABEL_HISTORY

source

pub const X_ARCHIVED_AT: Self = X_ARCHIVED_AT

source

pub const X_KEYWORDS: Self = X_KEYWORDS

source

pub const X_MITTENTE: Self = X_MITTENTE

source

pub const X_RICEVUTA: Self = X_RICEVUTA

source

pub const X_RIFERIMENTO_MESSAGE_ID: Self = X_RIFERIMENTO_MESSAGE_ID

source

pub const X_STATUS: Self = X_STATUS

source

pub const X_TIPORICEVUTA: Self = X_TIPORICEVUTA

source

pub const X_TRASPORTO: Self = X_TRASPORTO

source

pub const X_VERIFICASICUREZZA: Self = X_VERIFICASICUREZZA

Trait Implementations§

source§

impl AsRef<[u8]> for HeaderName

source§

fn as_ref(&self) -> &[u8]

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl AsRef<str> for HeaderName

source§

fn as_ref(&self) -> &str

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl Borrow<str> for HeaderName

source§

fn borrow(&self) -> &str

Immutably borrows from an owned value. Read more
source§

impl Clone for HeaderName

source§

fn clone(&self) -> HeaderName

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 HeaderName

source§

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

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

impl<'de> Deserialize<'de> for HeaderName

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 HeaderName

source§

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

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

impl From<&HeaderName> for Cow<'static, str>

source§

fn from(src: &HeaderName) -> Self

Converts to this type from the input type.
source§

impl<'a> From<&'a HeaderName> for HeaderName

source§

fn from(src: &'a Self) -> Self

Converts to this type from the input type.
source§

impl FromStr for HeaderName

§

type Err = InvalidHeaderName

The associated error which can be returned from parsing.
source§

fn from_str(s: &str) -> Result<Self, InvalidHeaderName>

Parses a string s to return a value of this type. Read more
source§

impl Hash for HeaderName

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 Index<&HeaderName> for HeaderMap

§

type Output = str

The returned type after indexing.
source§

fn index(&self, k: &HeaderName) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
source§

impl Index<HeaderName> for HeaderMap

§

type Output = str

The returned type after indexing.
source§

fn index(&self, k: HeaderName) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
source§

impl<'a> PartialEq<&'a HeaderName> for HeaderName

source§

fn eq(&self, other: &&'a Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<'a> PartialEq<&'a str> for HeaderName

source§

fn eq(&self, other: &&'a str) -> bool

Performs a case-insensitive comparison of the string against the header name

1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<'a> PartialEq<HeaderName> for &'a HeaderName

source§

fn eq(&self, other: &HeaderName) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<'a> PartialEq<HeaderName> for &'a str

source§

fn eq(&self, other: &HeaderName) -> bool

Performs a case-insensitive comparison of the string against the header name

1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PartialEq<HeaderName> for str

source§

fn eq(&self, other: &HeaderName) -> bool

Performs a case-insensitive comparison of the string against the header name

§Examples
use std::convert::TryFrom;

use melib::email::headers::HeaderName;

assert_eq!(HeaderName::CONTENT_LENGTH, "content-length");
assert_eq!(HeaderName::CONTENT_LENGTH, "Content-Length");
assert_ne!(HeaderName::CONTENT_LENGTH, "content length");
assert_eq!(
    HeaderName::CONTENT_LENGTH,
    HeaderName::try_from("content-length").unwrap()
);
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PartialEq<str> for HeaderName

source§

fn eq(&self, other: &str) -> bool

Performs a case-insensitive comparison of the string against the header name

§Examples
use melib::email::headers::HeaderName;

assert_eq!(HeaderName::CONTENT_LENGTH, "content-length");
assert_eq!(HeaderName::CONTENT_LENGTH, "Content-Length");
assert_ne!(HeaderName::CONTENT_LENGTH, "content length");
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PartialEq for HeaderName

source§

fn eq(&self, other: &HeaderName) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Serialize for HeaderName

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<'a> TryFrom<&'a [u8]> for HeaderName

§

type Error = InvalidHeaderName

The type returned in the event of a conversion error.
source§

fn try_from(s: &'a [u8]) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl<'a> TryFrom<&'a String> for HeaderName

§

type Error = InvalidHeaderName

The type returned in the event of a conversion error.
source§

fn try_from(s: &'a String) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl<'a> TryFrom<&'a str> for HeaderName

§

type Error = InvalidHeaderName

The type returned in the event of a conversion error.
source§

fn try_from(s: &'a str) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<String> for HeaderName

§

type Error = InvalidHeaderName

The type returned in the event of a conversion error.
source§

fn try_from(s: String) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl TryFrom<Vec<u8>> for HeaderName

§

type Error = InvalidHeaderName

The type returned in the event of a conversion error.
source§

fn try_from(vec: Vec<u8>) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl Eq for HeaderName

source§

impl StructuralPartialEq for HeaderName

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<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,

§

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>,

§

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>,

§

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<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>,