pub struct ScopeGuard { /* private fields */ }Available on crate feature
auth only.Expand description
Declarative scope enforcement for tools.
Wraps tools and automatically checks that the user has all scopes
declared by Tool::required_scopes() before allowing execution.
§Example
ⓘ
use adk_auth::{ScopeGuard, ContextScopeResolver};
let guard = ScopeGuard::new(ContextScopeResolver);
// Wrap a single tool
let protected = guard.protect(my_tool);
// Wrap all tools in a vec
let protected_tools = guard.protect_all(tools);Implementations§
Source§impl ScopeGuard
impl ScopeGuard
Sourcepub fn new(resolver: impl ScopeResolver + 'static) -> ScopeGuard
pub fn new(resolver: impl ScopeResolver + 'static) -> ScopeGuard
Create a scope guard with the given resolver.
Sourcepub fn with_audit(
resolver: impl ScopeResolver + 'static,
audit_sink: impl AuditSink + 'static,
) -> ScopeGuard
pub fn with_audit( resolver: impl ScopeResolver + 'static, audit_sink: impl AuditSink + 'static, ) -> ScopeGuard
Create a scope guard with audit logging.
Sourcepub fn protect<T>(&self, tool: T) -> ScopedTool<T>where
T: Tool + 'static,
pub fn protect<T>(&self, tool: T) -> ScopedTool<T>where
T: Tool + 'static,
Wrap a tool with scope enforcement.
If the tool declares no required scopes, the wrapper is a no-op passthrough.
Auto Trait Implementations§
impl Freeze for ScopeGuard
impl !RefUnwindSafe for ScopeGuard
impl Send for ScopeGuard
impl Sync for ScopeGuard
impl Unpin for ScopeGuard
impl UnsafeUnpin for ScopeGuard
impl !UnwindSafe for ScopeGuard
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> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
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::RequestCreates a shared type from an unshared type.