Skip to main content

Cap

Struct Cap 

Source
pub struct Cap(/* private fields */);
Expand description

A capability this service holds, by the slot the kernel put it in.

Thin on purpose: the value is an index into this task’s capability table, and the kernel is what gives it meaning. Wrapping it in a type stops it being confused with the resource ids, endpoint ids and file descriptors it is NOT.

Implementations§

Source§

impl Cap

Source

pub fn handle(self) -> CapHandle

The raw slot, for the rare call that still needs the SDK.

Present so that reaching the lower layer is a visible, deliberate step rather than a reason to abandon this module. If you find yourself calling this often, the missing thing belongs here.

Trait Implementations§

Source§

impl Clone for Cap

Source§

fn clone(&self) -> Cap

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Cap

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl From<CapHandle> for Cap

Adopt a handle an SDK call outside this library returned - a spawn that hands back an endpoint, a minted resource, a capability looked up by contract name - so the rest of its life is spent here.

This grants nothing and forges nothing. A handle is a slot number anyone can type; what makes a capability unforgeable is the kernel, which checks the slot, its generation and its rights on every use (CLAUDE.md 7.3). Wrapping a number that is not a capability yields a Cap every call refuses.

Source§

fn from(h: CapHandle) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for Cap

Source§

fn eq(&self, other: &Cap) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for Cap

Source§

impl Eq for Cap

Source§

impl StructuralPartialEq for Cap

Auto Trait Implementations§

§

impl Freeze for Cap

§

impl RefUnwindSafe for Cap

§

impl Send for Cap

§

impl Sync for Cap

§

impl Unpin for Cap

§

impl UnsafeUnpin for Cap

§

impl UnwindSafe for Cap

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.