pub struct PolicySnapshot { /* private fields */ }Expand description
Precomputed per-extension capability decision table for O(1) hostcall authorization.
Built once from an ExtensionPolicy at dispatcher creation time; all
subsequent lookups are constant-time array reads. For unknown capabilities
not in ALL_CAPABILITIES, falls back to the original evaluate_for()
path.
Implementations§
Source§impl PolicySnapshot
impl PolicySnapshot
Sourcepub fn compile(policy: &ExtensionPolicy) -> Self
pub fn compile(policy: &ExtensionPolicy) -> Self
Compile a snapshot from the given policy.
Precomputes decisions for every known capability in both the global context and each per-extension override.
Sourcepub fn lookup(
&self,
capability: &str,
extension_id: Option<&str>,
) -> PolicyCheck
pub fn lookup( &self, capability: &str, extension_id: Option<&str>, ) -> PolicyCheck
O(1) capability lookup. Returns a PolicyCheck for the given
capability and optional extension context.
Known capabilities (read, write, http, etc.) are resolved from the
precomputed table. Unknown capabilities fall back to evaluate_for().
Trait Implementations§
Source§impl Clone for PolicySnapshot
impl Clone for PolicySnapshot
Source§fn clone(&self) -> PolicySnapshot
fn clone(&self) -> PolicySnapshot
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for PolicySnapshot
impl RefUnwindSafe for PolicySnapshot
impl Send for PolicySnapshot
impl Sync for PolicySnapshot
impl Unpin for PolicySnapshot
impl UnsafeUnpin for PolicySnapshot
impl UnwindSafe for PolicySnapshot
Blanket Implementations§
Source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
Source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, _span: NoopSpan) -> Self
fn instrument(self, _span: NoopSpan) -> Self
Instruments this future with a span (no-op when disabled).
Source§fn in_current_span(self) -> Self
fn in_current_span(self) -> Self
Instruments this future with the current span (no-op when disabled).
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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