pub struct Consent {
pub outside: bool,
projects: BTreeMap<String, bool>,
listed: Vec<Project>,
tied: HashMap<String, BTreeSet<String>>,
gate: Option<Arc<Gate>>,
}Expand description
Which projects are open to agents, and which project each thing is in.
Fields§
§outside: boolThings in no project: open to agents ([mcp] outside_projects).
projects: BTreeMap<String, bool>Every project, by id: open or not.
listed: Vec<Project>The projects themselves, for their routes and budgets.
tied: HashMap<String, BTreeSet<String>>What each thing is tied to, by its address: its projects’ ids.
gate: Option<Arc<Gate>>The Porch’s checks, for mail (porch::Gate); none, every message as it stands.
Implementations§
Source§impl Consent
impl Consent
Sourcepub fn new(projects: &[Project], outside: bool) -> Consent
pub fn new(projects: &[Project], outside: bool) -> Consent
Every project closed, things outside projects as outside says; nothing tied.
Sourcepub fn of(loaded: &Loaded, outside: bool, gate: Option<Arc<Gate>>) -> Consent
pub fn of(loaded: &Loaded, outside: bool, gate: Option<Arc<Gate>>) -> Consent
What everything Sioul reads belongs to, from the files read once
(Loaded::read) and the configuration’s [mcp] outside_projects;
mail as the Porch’s checks take it (gate; none: as it stands).
fn tie(&mut self, uri: &str, project: &str)
Sourcefn gather_mail(
&mut self,
loaded: &Loaded,
ties: &HashMap<String, (BTreeSet<String>, BTreeSet<String>)>,
)
fn gather_mail( &mut self, loaded: &Loaded, ties: &HashMap<String, (BTreeSet<String>, BTreeSet<String>)>, )
Mail’s projects, as a project’s page finds them (projectview::mail_of):
a route on the sender and the subject, or a tie (ties: each
project’s, all of them, then yours), then the rest of each
conversation; each message as the gate takes it, read once for every
project.
Sourcepub fn is_open(&self, project: &str) -> bool
pub fn is_open(&self, project: &str) -> bool
Whether this project is open to agents; an unknown one is not.
Sourcepub fn open_projects(&self) -> Vec<String>
pub fn open_projects(&self) -> Vec<String>
The projects open to agents, by id.
Sourcepub fn closed_projects(&self) -> usize
pub fn closed_projects(&self) -> usize
How many projects are closed.
Sourcepub fn allows_projects<'a>(
&self,
projects: impl IntoIterator<Item = &'a str>,
) -> bool
pub fn allows_projects<'a>( &self, projects: impl IntoIterator<Item = &'a str>, ) -> bool
Whether a thing in these projects reaches an agent: every project it is in open; in none (or only in projects the manifest no longer names), as things outside projects are.
Sourcepub fn projects_of(&self, uri: &str) -> BTreeSet<String>
pub fn projects_of(&self, uri: &str) -> BTreeSet<String>
The projects a thing is in, by its address (mid:…, sioul:task/…,
sioul:note/…, sioul:project/……): a project is in itself.
Sourcepub fn note_projects(&self, path: &str) -> BTreeSet<String>
pub fn note_projects(&self, path: &str) -> BTreeSet<String>
The projects whose files name this note: the file itself, or a folder holding it.
Sourcepub fn allows_note(&self, path: &str) -> bool
pub fn allows_note(&self, path: &str) -> bool
Whether a note reaches an agent, by its path in the notes.
Sourcepub fn budget_projects(&self, budget: &str) -> BTreeSet<String>
pub fn budget_projects(&self, budget: &str) -> BTreeSet<String>
The projects whose invoices go to this budget, by its id.
Sourcepub fn mail_projects(
&self,
message_id: Option<&str>,
card: Option<&Card>,
) -> BTreeSet<String>
pub fn mail_projects( &self, message_id: Option<&str>, card: Option<&Card>, ) -> BTreeSet<String>
The projects a message is in: by its address as above, and, read whole, by every route of a project (its text, its attachments), as the Porch takes it (the gate’s: never set aside, never by its sender when nothing authenticates it).
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Consent
impl RefUnwindSafe for Consent
impl Send for Consent
impl Sync for Consent
impl Unpin for Consent
impl UnsafeUnpin for Consent
impl UnwindSafe for Consent
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.