pub struct Proof<C: Capability> { /* private fields */ }Expand description
A zero-sized, compile-time proof that a capability was verified.
Proof<C> cannot be constructed outside this crate — the only way to
obtain one is through AuthContext::check or AuthContext::require.
This means any function that demands Proof<C> in its signature is
statically guaranteed to have been preceded by an authorization check.
ⓘ
use mcp_authorization::{Capability, Proof};
struct Admin;
impl Capability for Admin { const NAME: &'static str = "admin"; }
// This will not compile — Proof's fields are private:
let fake = Proof::<Admin>::new();At runtime, Proof<C> compiles away entirely:
use mcp_authorization::{Capability, Proof};
assert_eq!(std::mem::size_of::<Proof<Admin>>(), 0);
struct Admin;
impl Capability for Admin { const NAME: &'static str = "admin"; }Trait Implementations§
Source§impl<C: Capability> Clone for Proof<C>
impl<C: Capability> Clone for Proof<C>
Source§impl<C: Capability> Debug for Proof<C>
impl<C: Capability> Debug for Proof<C>
impl<C: Capability> Copy for Proof<C>
Auto Trait Implementations§
impl<C> Freeze for Proof<C>
impl<C> RefUnwindSafe for Proof<C>where
C: RefUnwindSafe,
impl<C> Send for Proof<C>
impl<C> Sync for Proof<C>
impl<C> Unpin for Proof<C>where
C: Unpin,
impl<C> UnsafeUnpin for Proof<C>
impl<C> UnwindSafe for Proof<C>where
C: UnwindSafe,
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