Skip to main content

ReplyContext

Struct ReplyContext 

Source
pub struct ReplyContext {
    pub thread_id: String,
    pub message_id: Option<String>,
    pub references: Vec<String>,
    pub in_reply_to: Vec<String>,
    pub subject: String,
    pub from: Vec<Mailbox>,
    pub reply_to: Vec<Mailbox>,
    pub to: Vec<Mailbox>,
    pub cc: Vec<Mailbox>,
    pub sent_by_me: bool,
    pub skipped: Vec<(&'static str, String)>,
}
Expand description

What a reply needs from the message it replies to.

Fields§

§thread_id: String

Gmail thread id of the original. Goes on the draft’s message, not in a header.

§message_id: Option<String>

The original’s Message-ID, without angle brackets.

§references: Vec<String>

The original’s References, without angle brackets, in order.

§in_reply_to: Vec<String>

The original’s In-Reply-To, without angle brackets.

§subject: String

The original’s Subject, or empty.

§from: Vec<Mailbox>

The original’s From.

§reply_to: Vec<Mailbox>

The original’s Reply-To.

§to: Vec<Mailbox>

The original’s To.

§cc: Vec<Mailbox>

The original’s Cc.

§sent_by_me: bool

Whether the account sent the original (Gmail’s SENT label, which also covers send-as aliases).

§skipped: Vec<(&'static str, String)>

Addresses in the original’s address headers that could not be used, as (header, address), for the caller to warn about.

Implementations§

Source§

impl ReplyContext

Source

pub fn from_message(message: &Message) -> Result<Self>

Reads the reply context from a message fetched with format=metadata and REPLY_HEADERS.

Source

pub fn default_recipients( &self, reply_all: bool, exclude: &[String], ) -> (Vec<Mailbox>, Vec<Mailbox>)

The reply’s To and Cc when the caller names nobody (#1954).

A plain reply goes to the original’s Reply-To, else its From; a reply to a message the account sent goes to that message’s To instead, as in Gmail’s UI. reply_all adds the original’s To to the reply’s To and its Cc to the reply’s Cc, keeping each recipient in the header they were in. The addresses in exclude (the account’s own, and any the caller has already placed) are left out, as are repeats, both compared case-insensitively and keeping the first occurrence (To before Cc).

Either list can come back empty, To included: deciding what that means is the caller’s job.

Source

pub fn reply_references(&self) -> Vec<String>

The reply’s References: the original’s References (or, lacking those, its In-Reply-To) followed by the original’s Message-ID, per RFC 5322 §3.6.4. Duplicates are dropped, keeping the first.

Source

pub fn reply_subject(&self) -> String

Re: <original subject>, unless the original already starts with a Re: (any case, Re : too), so replies don’t stack Re: Re:.

Trait Implementations§

Source§

impl Clone for ReplyContext

Source§

fn clone(&self) -> Self

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 ReplyContext

Source§

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

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

impl Default for ReplyContext

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Eq for ReplyContext

Source§

impl PartialEq for ReplyContext

Source§

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

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

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for ReplyContext

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

Source§

fn __clone_box(&self, _: Private) -> *mut ()

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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
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