pub struct Capability(/* private fields */);Expand description
A validated capability identifier.
Capabilities are the atomic unit of authorization in Auths. They follow a namespace convention:
- Well-known capabilities:
sign_commit,sign_release,manage_members,rotate_keys - Custom capabilities: any valid string (alphanumeric +
:+-+_, max 64 chars)
The auths: prefix is reserved for future well-known capabilities and cannot be
used in custom capabilities created via parse().
§Examples
use auths_keri::Capability;
// Well-known capabilities
let cap = Capability::sign_commit();
assert_eq!(cap.as_str(), "sign_commit");
// Custom capabilities
let custom = Capability::parse("acme:deploy").unwrap();
assert_eq!(custom.as_str(), "acme:deploy");
// Reserved namespace is rejected
assert!(Capability::parse("auths:custom").is_err());Implementations§
Source§impl Capability
impl Capability
Sourcepub fn sign_commit() -> Capability
pub fn sign_commit() -> Capability
Creates the sign_commit capability.
Grants permission to sign commits.
Sourcepub fn sign_release() -> Capability
pub fn sign_release() -> Capability
Creates the sign_release capability.
Grants permission to sign releases.
Sourcepub fn manage_members() -> Capability
pub fn manage_members() -> Capability
Creates the manage_members capability.
Grants permission to add/remove members in an organization.
Sourcepub fn rotate_keys() -> Capability
pub fn rotate_keys() -> Capability
Creates the rotate_keys capability.
Grants permission to rotate keys for an identity.
Sourcepub fn parse(raw: &str) -> Result<Capability, CapabilityError>
pub fn parse(raw: &str) -> Result<Capability, CapabilityError>
Parses and validates a capability string.
This is the primary way to create custom capabilities. The input is trimmed and lowercased to produce a canonical form.
§Validation Rules
- Non-empty
- Maximum 64 characters
- Only alphanumeric characters, colons (
:), hyphens (-), and underscores (_) - Cannot start with
auths:(reserved namespace)
§Examples
use auths_keri::Capability;
// Valid custom capabilities
assert!(Capability::parse("deploy").is_ok());
assert!(Capability::parse("acme:deploy").is_ok());
assert!(Capability::parse("org:team:action").is_ok());
// Invalid capabilities
assert!(Capability::parse("").is_err()); // empty
assert!(Capability::parse("has space").is_err()); // invalid char
assert!(Capability::parse("auths:custom").is_err()); // reserved namespaceSourcepub fn as_str(&self) -> &str
pub fn as_str(&self) -> &str
Returns the canonical string representation of this capability.
This is the authoritative string form used for comparison, display, and serialization.
Sourcepub fn is_well_known(&self) -> bool
pub fn is_well_known(&self) -> bool
Returns true if this is a well-known Auths capability.
Trait Implementations§
Source§impl Clone for Capability
impl Clone for Capability
Source§fn clone(&self) -> Capability
fn clone(&self) -> Capability
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for Capability
impl Debug for Capability
Source§impl<'de> Deserialize<'de> for Capability
impl<'de> Deserialize<'de> for Capability
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<Capability, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Capability, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl Display for Capability
impl Display for Capability
impl Eq for Capability
Source§impl FromStr for Capability
impl FromStr for Capability
Source§fn from_str(s: &str) -> Result<Capability, <Capability as FromStr>::Err>
fn from_str(s: &str) -> Result<Capability, <Capability as FromStr>::Err>
Parses a capability string with CLI-friendly alias resolution.
Normalizes the input (trim, lowercase, replace hyphens with underscores)
and matches well-known capabilities before falling through to
Capability::parse() for custom capability validation.
Args:
s: The capability string (e.g., “sign_commit”, “Sign-Commit”).
Usage:
use auths_keri::Capability;
let cap: Capability = "sign_commit".parse().unwrap();
assert_eq!(cap.as_str(), "sign_commit");Source§type Err = CapabilityError
type Err = CapabilityError
Source§impl Hash for Capability
impl Hash for Capability
Source§impl PartialEq for Capability
impl PartialEq for Capability
Source§fn eq(&self, other: &Capability) -> bool
fn eq(&self, other: &Capability) -> bool
self and other values to be equal, and is used by ==.Source§impl Serialize for Capability
impl Serialize for Capability
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl StructuralPartialEq for Capability
Source§impl TryFrom<String> for Capability
impl TryFrom<String> for Capability
Source§type Error = CapabilityError
type Error = CapabilityError
Source§fn try_from(
s: String,
) -> Result<Capability, <Capability as TryFrom<String>>::Error>
fn try_from( s: String, ) -> Result<Capability, <Capability as TryFrom<String>>::Error>
Auto Trait Implementations§
impl Freeze for Capability
impl RefUnwindSafe for Capability
impl Send for Capability
impl Sync for Capability
impl Unpin for Capability
impl UnsafeUnpin for Capability
impl UnwindSafe for Capability
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.