pub struct Senders {
pub safe: SenderList,
pub neutral: SenderList,
pub restricted: SenderList,
pub blocked: SenderList,
pub known: SenderList,
pub contacts: Arc<Book>,
}Expand description
The four lists of who may reach you: safe, neutral, restricted and
blocked, with your address books, their cards and categories, and the
senders you let in (docs/porch.md, “Who may reach you, and when”). The most
precise entry decides: the person’s own address or number; then their
card (contact:<UID>); then its categories; then patterns (a domain, a
prefix), the more precise first; then, neutral: let in through the
screener, or in your address books; else a stranger. At one level, blocked
before restricted before neutral before safe. An address marked safe stays
safe in a domain you blocked; a friend you put on neutral stays neutral in
a category you marked safe. Lists judge the sender’s address only, after
forged mail was set aside: a message whose sender is not verified never
changes them (porch.rs, trust.rs), and nobody is judged by the server or
the domain another sender shares.
Fields§
§safe: SenderList§neutral: SenderList§restricted: SenderList§blocked: SenderList§known: SenderListThe senders you let in through the screener: neutral, never strangers.
contacts: Arc<Book>Your address books: who is in them, their cards’ categories.
Implementations§
Source§impl Senders
impl Senders
Sourcepub fn load(config: &Config) -> Senders
pub fn load(config: &Config) -> Senders
The lists, the senders you let in, and every address book (kept while their files do not change).
Sourcefn lists(&self) -> [(Standing, &SenderList); 4]
fn lists(&self) -> [(Standing, &SenderList); 4]
The lists, in the order ties are decided.
Sourcepub fn region(&self) -> Option<&'static Region>
pub fn region(&self) -> Option<&'static Region>
The country numbers written without one are read as.
Sourcepub fn category_standing(&self, name: &str) -> Option<Standing>
pub fn category_standing(&self, name: &str) -> Option<Standing>
The list that names this category, if any (as compared, category_key).
Sourcepub fn card_standing(&self, uid: &str) -> Option<Standing>
pub fn card_standing(&self, uid: &str) -> Option<Standing>
The list that names this card itself (contact:<UID>), if any.
Sourcefn card_choice(&self, card: &BookCard) -> Option<Standing>
fn card_choice(&self, card: &BookCard) -> Option<Standing>
A card’s own list: its contact:<UID> line; else the one list that
holds every address of it, which is how “Their mail” chose for a
person before cards were on the lists themselves.
Sourcepub fn person_standing(&self, id: &str) -> Option<Standing>
pub fn person_standing(&self, id: &str) -> Option<Standing>
A person’s own list, by their card’s UID or file (card_choice): what their card’s chooser shows.
Sourcefn by_card(&self, cards: &[usize]) -> Option<Judged>
fn by_card(&self, cards: &[usize]) -> Option<Judged>
One of these cards on a list, the one whose list comes first in the order ties are decided.
Sourcefn by_category(&self, cards: &[usize]) -> Option<Judged>
fn by_category(&self, cards: &[usize]) -> Option<Judged>
A category of these cards on a list.
Sourcefn by_book(&self, cards: &[usize]) -> Option<Judged>
fn by_book(&self, cards: &[usize]) -> Option<Judged>
In your address books on no list: neutral, by their card’s name.
Sourcepub fn judge(&self, address: &str) -> Judged
pub fn judge(&self, address: &str) -> Judged
Who an address is, and why: its own entry; else its card’s; else the card’s categories; else the most precise pattern; else neutral when you let it in or a card holds it; else a stranger. At one level, blocked before restricted before neutral before safe.
Sourcepub fn who_of(&self, card: &Card) -> Who
pub fn who_of(&self, card: &Card) -> Who
Who a message’s sender is; one without an address is a stranger.
Sourcepub fn judge_number(&self, number: &str) -> Judged
pub fn judge_number(&self, number: &str) -> Judged
Who a phone number is, and why: its own entry; else its card’s; else
the card’s categories; else the longest prefix on a list; else neutral
when a card holds it; else a stranger. A number Sioul cannot read, or
none (a hidden number), is a stranger here: calls give hidden numbers
their own row (attention::Person::Hidden).
Sourcepub fn judge_name(&self, name: &str) -> Option<Judged>
pub fn judge_name(&self, name: &str) -> Option<Judged>
Who a name is, for messages whose sender is known by name only (a chat
app’s notification): a card with this very name (name_key), its own
entry, else its categories, else neutral; between two cards of one
name, the one whose list comes first in the order ties are decided.
None when no card has that name: the caller decides.
Sourcepub fn judge_card(&self, id: &str) -> Option<Judged>
pub fn judge_card(&self, id: &str) -> Option<Judged>
Who a card is, by its UID or its file: its own entry, else its categories, else neutral. None for a card no address book holds.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Senders
impl RefUnwindSafe for Senders
impl Send for Senders
impl Sync for Senders
impl Unpin for Senders
impl UnsafeUnpin for Senders
impl UnwindSafe for Senders
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.