pub trait Has<P: Permission> {
// Required method
fn cap_ref(&self) -> Cap<P>;
}Expand description
Proof that a capability token includes permission P.
This trait is open for implementation — custom context structs can implement
Has<P> to delegate capability access. Security is maintained because
Cap::new() is pub(crate): no external code can forge a Cap<P> in safe Rust.
Use CapRoot::grant() to obtain capability tokens,
or implement Has<P> on your own structs using the #[capsec::context] macro.
§Example
ⓘ
fn needs_fs(cap: &impl Has<FsRead>) {
let _ = cap.cap_ref(); // proof of permission
}
let root = test_root();
let cap = root.grant::<FsRead>();
needs_fs(&cap);