#[non_exhaustive]pub struct EmailComparator {
pub property: ComparatorProperty,
pub is_ascending: bool,
pub collation: Option<String>,
pub keyword: Option<Keyword>,
}Expand description
Sort comparator for Email/query (RFC 8621 §4.4.2).
When property is one of the keyword-based variants
(ComparatorProperty::HasKeyword, ComparatorProperty::AllInThreadHaveKeyword,
ComparatorProperty::SomeInThreadHaveKeyword), the keyword field
MUST also be set. is_ascending defaults to true per RFC 8620 §5.5.
§Excluded from extras preservation
This type is out of scope for the workspace extras-preservation
policy: it carries no flatten-extras extra field, and its
ComparatorProperty field is a closed control enum that backends
must dispatch on. See ComparatorProperty and
EmailFilterCondition for the rationale and for the two recommended
paths (draft-ietf-jmap-metadata, bd JMAP-06zp; or the pre-IETF
sloppy-value escape).
Cross-reference: bd JMAP-lbdy “Decision: filter algebra excluded”.
§Construction
Use EmailComparator::new to construct from outside this crate.
The struct is #[non_exhaustive]; struct literal syntax is not available
to external callers.
use jmap_mail_types::query::{EmailComparator, ComparatorProperty};
let mut cmp = EmailComparator::new(ComparatorProperty::ReceivedAt);
cmp.is_ascending = false; // sort descendingFields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.property: ComparatorPropertyThe property to sort by.
is_ascending: boolIf true, sort ascending; if false, sort descending.
Defaults to true per RFC 8620 §5.5.
collation: Option<String>Collation algorithm (e.g. "i;ascii-casemap").
keyword: Option<Keyword>Required when property is one of the keyword-based variants
(RFC 8621 §4.4.2).
Implementations§
Source§impl EmailComparator
impl EmailComparator
Sourcepub fn new(property: ComparatorProperty) -> Self
pub fn new(property: ComparatorProperty) -> Self
Construct an EmailComparator for the given property.
is_ascending defaults to true (RFC 8620 §5.5 default).
collation and keyword default to None.
Set fields directly after construction:
use jmap_mail_types::query::{EmailComparator, ComparatorProperty};
use jmap_mail_types::Keyword;
let mut cmp = EmailComparator::new(ComparatorProperty::HasKeyword);
cmp.keyword = Some(Keyword::from("$flagged"));
cmp.is_ascending = false;Trait Implementations§
Source§impl Clone for EmailComparator
impl Clone for EmailComparator
Source§fn clone(&self) -> EmailComparator
fn clone(&self) -> EmailComparator
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for EmailComparator
impl Debug for EmailComparator
Source§impl<'de> Deserialize<'de> for EmailComparator
impl<'de> Deserialize<'de> for EmailComparator
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for EmailComparator
Source§impl PartialEq for EmailComparator
impl PartialEq for EmailComparator
Source§fn eq(&self, other: &EmailComparator) -> bool
fn eq(&self, other: &EmailComparator) -> bool
self and other values to be equal, and is used by ==.