pub trait JmapMetadataExt: Sealed {
// Required method
fn with_metadata_session(&self, session: Session) -> SessionClient;
}Expand description
Extension trait adding JMAP Object Metadata (draft-ietf-jmap-metadata-01)
methods to jmap_base_client::JmapClient.
Import this trait to use: use jmap_metadata_client::JmapMetadataExt;
All JMAP Metadata method calls are made through the SessionClient
returned by with_metadata_session.
This trait is sealed: implementations outside this crate are not
permitted. The crate adds an impl only for
jmap_base_client::JmapClient. Sealing prevents downstream
divergence (e.g. impl JmapMetadataExt for MySimulator) and keeps
adding methods to the trait a non-breaking change.
Required Methods§
Sourcefn with_metadata_session(&self, session: Session) -> SessionClient
fn with_metadata_session(&self, session: Session) -> SessionClient
Create a SessionClient bound to this client and session.
All JMAP Metadata method calls are made through the returned
SessionClient.
§Deferred session-capability validation
This constructor accepts ANY jmap_base_client::Session,
including one whose advertised capabilities do not include
urn:ietf:params:jmap:metadata or whose primaryAccounts map
has no entry for the metadata capability. The constructor
performs no up-front validation and never fails — its return
type is the infallible methods::SessionClient, not a
Result.
Capability and primary-account validation is deferred to every
individual method call on the returned SessionClient. If
the session is unsuitable, those per-method calls return
ClientError::InvalidSession with a description like
"no primary account for urn:ietf:params:jmap:metadata".
Callers that want to guard at the binding site can pre-check
the session before calling this method via
session.primary_account_id("urn:ietf:params:jmap:metadata").
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".