pub struct PermissionCache { /* private fields */ }Expand description
Compact (resource, action) lookup pre-built from a user’s grants
- PUBLIC grants. The privilege check first probes this cache before falling back to the linear scan above. Invalidated on every GRANT / REVOKE / ALTER USER.
Implementations§
Source§impl PermissionCache
impl PermissionCache
pub fn build(user_grants: &[Grant], public_grants: &[Grant]) -> PermissionCache
Sourcepub fn allows(&self, resource: &Resource, action: Action) -> bool
pub fn allows(&self, resource: &Resource, action: Action) -> bool
O(1) cache check. Returns true if the cache contains an exact
(resource, action) match. Caller must still consult check_grant
for hierarchical lookups (Schema covers Table, etc.).
pub fn is_empty(&self) -> bool
Trait Implementations§
Source§impl Clone for PermissionCache
impl Clone for PermissionCache
Source§fn clone(&self) -> PermissionCache
fn clone(&self) -> PermissionCache
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for PermissionCache
impl Debug for PermissionCache
Source§impl Default for PermissionCache
impl Default for PermissionCache
Source§fn default() -> PermissionCache
fn default() -> PermissionCache
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for PermissionCache
impl RefUnwindSafe for PermissionCache
impl Send for PermissionCache
impl Sync for PermissionCache
impl Unpin for PermissionCache
impl UnsafeUnpin for PermissionCache
impl UnwindSafe for PermissionCache
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
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: 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 moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request