#[non_exhaustive]pub struct ImapMetadata {
pub id: Option<Id>,
pub related_type: String,
pub related_id: Id,
pub is_private: Option<bool>,
pub metadata: BTreeMap<String, String>,
pub extra: Map<String, Value>,
}Expand description
IMAP-METADATA-extension mapping (draft-ietf-jmap-metadata-01 §2.1.2).
The @type wire value is "ImapMetadata"; it is supplied by the enclosing
Metadata tag and does NOT appear as a field on this struct.
§relatedType constraint
Per §2.1.2 relatedType MUST be "Mailbox". Servers MUST reject other
values with an invalidProperties SetError. This crate does not enforce
the constraint at the type level — that is the server’s responsibility.
§metadata key semantics
Per §2.2.2.1 the keys are IMAP metadata entry names with the
"/private/" or "/shared/" prefix stripped. The interpretation
depends on is_private: keys map under /private/
when true, under /shared/ otherwise.
An empty-string value is permitted and represents an IMAP entry that exists with no value (§2.2.2.1).
Fields (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.id: Option<Id>Server-assigned identifier. Absent on create requests.
JMAP type name of the related object. MUST be "Mailbox" per §2.1.2.
Identifier of the related JMAP Mailbox object.
is_private: Option<bool>Whether this metadata is private to the authenticated user. Selects
the /private/ (true) vs /shared/ (false or absent) IMAP
namespace prefix per §2.1.2 and §2.2.2.1.
metadata: BTreeMap<String, String>IMAP metadata entries. Keys are entry names with the
/private/ or /shared/ prefix stripped (§2.2.2.1). Empty-string
values represent entries that exist but have no value.
Uses BTreeMap for deterministic key ordering on serialise. The
spec does not require a specific ordering; deterministic output is
preferred for round-trip preservation tests and reproducible
builds. The wire format is Map<String, String> either way.
extra: Map<String, Value>Catch-all for vendor / site / private extension fields not covered by the typed fields above. Preserves unknown fields across deserialize/serialize round-trip per workspace extras-preservation policy (see workspace AGENTS.md).
Trait Implementations§
Source§impl Clone for ImapMetadata
impl Clone for ImapMetadata
Source§fn clone(&self) -> ImapMetadata
fn clone(&self) -> ImapMetadata
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 ImapMetadata
impl Debug for ImapMetadata
Source§impl<'de> Deserialize<'de> for ImapMetadata
impl<'de> Deserialize<'de> for ImapMetadata
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>,
Source§impl PartialEq for ImapMetadata
impl PartialEq for ImapMetadata
Source§fn eq(&self, other: &ImapMetadata) -> bool
fn eq(&self, other: &ImapMetadata) -> bool
self and other values to be equal, and is used by ==.