pub struct SubjectAttributes<'a> {
pub kind: SubjectKind<'a>,
pub handle: Option<&'a str>,
pub depth: Option<u32>,
}Expand description
Attributes about the writing account a policy may need beyond its DID, explicit and extensible rather than a bag.
This is the contract between this crate, the write path that populates
it, and the evaluators that read it: an evaluator names the attribute it
needs from here, and the write path knows, from this same type, what it
is obliged to fill in. Every attribute past kind is kind-dependent —
a host has no model to report, the way it has no harness and no parent —
so None here means “this kind does not have one, or the write path
could not resolve it for this write”, never an error an evaluator needs
to handle specially; it is a normal, expected value to see.
Adding an allowlist-shaped policy — “displayName may be set only to the
account’s handle or a small fixed list of values” — does not reintroduce
an allow: it is expressed as deny if the new value matches none of
them, read off Change::after and
this handle, which subtracts from what is permitted exactly like every
other policy. Monotonicity does not distinguish an allowlist from a
blocklist; both are deny rules, just aimed at different values.
Fields§
§kind: SubjectKind<'a>What kind of account this subject is — one of the four this build
recognizes, or a kind it does not. See SubjectKind.
handle: Option<&'a str>This account’s current handle, if the write path resolved one for this write and this kind has one.
depth: Option<u32>How many edges lie between this account and the deployment’s
operator: 1 for an account the operator runs directly, 2 for one
such an account created, and so on. None when the write path did
not resolve it.
Trait Implementations§
Source§impl<'a> Clone for SubjectAttributes<'a>
impl<'a> Clone for SubjectAttributes<'a>
Source§fn clone(&self) -> SubjectAttributes<'a>
fn clone(&self) -> SubjectAttributes<'a>
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<'a> Debug for SubjectAttributes<'a>
impl<'a> Debug for SubjectAttributes<'a>
Source§impl<'a> PartialEq for SubjectAttributes<'a>
impl<'a> PartialEq for SubjectAttributes<'a>
Source§fn eq(&self, other: &SubjectAttributes<'a>) -> bool
fn eq(&self, other: &SubjectAttributes<'a>) -> bool
self and other values to be equal, and is used by ==.impl<'a> Copy for SubjectAttributes<'a>
impl<'a> Eq for SubjectAttributes<'a>
impl<'a> StructuralPartialEq for SubjectAttributes<'a>
Auto Trait Implementations§
impl<'a> Freeze for SubjectAttributes<'a>
impl<'a> RefUnwindSafe for SubjectAttributes<'a>
impl<'a> Send for SubjectAttributes<'a>
impl<'a> Sync for SubjectAttributes<'a>
impl<'a> Unpin for SubjectAttributes<'a>
impl<'a> UnsafeUnpin for SubjectAttributes<'a>
impl<'a> UnwindSafe for SubjectAttributes<'a>
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.