pub struct CapabilitySet {
pub allow: BTreeSet<Capability>,
pub deny: BTreeSet<Capability>,
pub allow_restricted: bool,
}Expand description
Aggregates allow and deny capability sets for a given policy scope.
Fields§
§allow: BTreeSet<Capability>Capabilities explicitly allowed.
deny: BTreeSet<Capability>Capabilities explicitly denied.
allow_restricted: boolWhether an allow-list restriction is in force, independent of whether
allow currently lists anything.
Set once any cascade tier contributes a non-empty allow-list. It exists
to disambiguate the two meanings an empty allow would otherwise
conflate: “no allow-list was ever declared” (unrestricted — only deny
governs) versus “an allow-list was declared but a disjoint multi-tier
intersection collapsed it to empty” (deny-all). Without this flag,
merging two disjoint restrictive whitelists produces an empty allow
that the guard reads as “no restriction”, failing open to allow-all —
the inverse of most-restrictive-wins (AAASM-4154). serde(default) keeps
older serialized sets (which lack the field) deserializing unchanged.
Implementations§
Source§impl CapabilitySet
impl CapabilitySet
Sourcepub fn allow_is_restricted(&self) -> bool
pub fn allow_is_restricted(&self) -> bool
Whether an allow-list restriction governs this set.
True when the set whitelists at least one capability, or when a prior
cascade tier declared a non-empty allow that a disjoint merge collapsed
to empty (allow_restricted). When this is true, the capability guard
must deny any capability absent from allow; an empty allow therefore
means deny-all, never “no restriction” (AAASM-4154).
Trait Implementations§
Source§impl Clone for CapabilitySet
impl Clone for CapabilitySet
Source§fn clone(&self) -> CapabilitySet
fn clone(&self) -> CapabilitySet
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more