Skip to main content

Participant

Struct Participant 

Source
#[non_exhaustive]
pub struct Participant {
Show 28 fields pub at_type: String, pub name: Option<String>, pub email: Option<String>, pub description: Option<String>, pub send_to: Option<BTreeMap<String, String>>, pub kind: Option<String>, pub roles: BTreeMap<String, bool>, pub location_id: Option<String>, pub language: Option<String>, pub participation_status: Option<String>, pub participation_comment: Option<String>, pub expect_reply: Option<bool>, pub schedule_agent: Option<String>, pub calendar_address: Option<String>, pub invited_by: Option<String>, pub delegated_to: Option<BTreeMap<String, bool>>, pub delegated_from: Option<BTreeMap<String, bool>>, pub member_of: Option<BTreeMap<String, bool>>, pub links: Option<BTreeMap<String, Link>>, pub schedule_sequence: Option<u64>, pub schedule_updated: Option<UTCDate>, pub schedule_status: Option<Vec<String>>, pub schedule_force_send: Option<bool>, pub sent_by: Option<String>, pub progress: Option<String>, pub progress_updated: Option<UTCDate>, pub percent_complete: Option<u8>, pub extra: Map<String, Value>,
}
Expand description

A participant in an event (RFC 8984 §4.4.6).

Fields (Non-exhaustive)§

This struct is marked as non-exhaustive
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.
§at_type: String

Object type discriminator; always "Participant" on the wire.

Deserialize is liberal: if @type is absent (spec-violating vendor input), this field defaults to "Participant" rather than failing the whole parent object’s deserialize. Serialize always emits the field. See bd:JMAP-ky8g.10.

§name: Option<String>

Display name of the participant.

§email: Option<String>

Email address (addr-spec) of the participant.

§description: Option<String>

Additional description.

§send_to: Option<BTreeMap<String, String>>

Map of scheduling method → URI for sending scheduling messages.

§kind: Option<String>

Kind of participant: "individual", "group", "location", "resource".

§roles: BTreeMap<String, bool>

Map of role URIs → true (e.g. "owner", "attendee", "chair").

RFC 8984 §4.4.6: “At least one role MUST be specified for the participant”. The non-empty mandate is NOT enforced by the type system or by deserialize; consumers check it themselves (bd:JMAP-ops7.38).

§location_id: Option<String>

Id of the location this participant is associated with.

§language: Option<String>

BCP 47 language tag for this participant.

§participation_status: Option<String>

Participation status (default "needs-action").

§participation_comment: Option<String>

Free-form comment on participation.

§expect_reply: Option<bool>

Whether the participant is expected to send a reply (default false).

§schedule_agent: Option<String>

Scheduling agent: "server", "client", or "none" (default "server").

§calendar_address: Option<String>

iTIP scheduling address URI for this participant.

§invited_by: Option<String>

Id of the participant who invited this participant, if any.

§delegated_to: Option<BTreeMap<String, bool>>

Map of participant ids → true for participants this one delegated to.

§delegated_from: Option<BTreeMap<String, bool>>

Map of participant ids → true for participants who delegated to this one.

§member_of: Option<BTreeMap<String, bool>>

Map of group participant ids → true that this participant is a member of.

§links: Option<BTreeMap<String, Link>>

Links associated with this participant.

§schedule_sequence: Option<u64>

iTIP scheduling sequence number for this participant (RFC 8984 §5.2.1).

Context: Participant — this is a per-participant iTIP tracking field, not an event-level field. The server updates it when an iTIP message is processed.

§schedule_updated: Option<UTCDate>

UTC date-time of the last iTIP scheduling message processed for this participant (RFC 8984 §5.2.2).

Context: Participant — per-participant iTIP tracking, not event-level.

§schedule_status: Option<Vec<String>>

iTIP status codes from the most recent scheduling message sent to this participant (RFC 8984 §4.4.6).

An array of iTIP status code strings (e.g. "1.0", "2.0", "5.0"). Server-set and persisted; absent when no scheduling has occurred.

§schedule_force_send: Option<bool>

Client request to force a scheduling message (RFC 8984 §4.4.6, default false).

A client sets this to true to ask the server to send a scheduling message to the participant even when it would not normally do so (e.g. no significant change was made, or scheduleAgent is "client"). Per the spec this property MUST NOT be stored on the server or appear in a scheduling message — it is request-only.

§sent_by: Option<String>

Email address of the iMIP sender, if different from the participant’s imip send-to URI (RFC 8984 §4.4.6).

SHOULD only be set when the From-header address of the email that last updated this participant differs from the mailto: URI in sendTo["imip"]. If set, MUST be a valid addr-spec per RFC 5322 §3.4.1.

§progress: Option<String>

Task-only: progress of the participant for this task (RFC 8984 §4.4.6; allowed values in §5.2.5).

MUST NOT be set when participationStatus is anything other than "accepted". Only meaningful on a Task; ignored on an Event. Type-level forward-compatibility: this field is kept as Option<String> rather than a typed enum because RFC 8984 §5.2.5 defines an open value set extensible via the IANA “JSCalendar Enum Values” registry.

§progress_updated: Option<UTCDate>

Task-only: timestamp the progress property was last set (RFC 8984 §4.4.6; semantics in §5.2.6).

Only meaningful on a Task; ignored on an Event.

§percent_complete: Option<u8>

Task-only: percent completion of the participant for this task (RFC 8984 §4.4.6).

MUST be a value in the range 0..=100 per the spec. Only meaningful on a Task; ignored on an Event. The type permits the full u8 range; values outside 0..=100 are wire-invalid and the consumer is responsible for range-checking on input.

§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 Participant

Source§

fn clone(&self) -> Participant

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Participant

Source§

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

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

impl<'de> Deserialize<'de> for Participant

Source§

fn deserialize<__D>( __deserializer: __D, ) -> Result<Participant, <__D as Deserializer<'de>>::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Eq for Participant

Source§

impl PartialEq for Participant

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl Serialize for Participant

Source§

fn serialize<__S>( &self, __serializer: __S, ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for Participant

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<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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,

Source§

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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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.