pub enum ExoError {
Identity(String),
Consent(String),
Governance(String),
Authority(String),
KernelDenied(String),
KernelEscalated(String),
Crypto(String),
InvalidDid(String),
Serialization(String),
}Expand description
Errors that can be produced by the SDK.
Each variant corresponds to a subsystem of the SDK. Callers should prefer matching on the variant over parsing the display string, which is intended for human consumption only.
Variants§
Identity(String)
An identity-related operation failed.
Returned when DID derivation, key handling, or identity reconstruction encounters an unexpected condition. In practice the SDK derives DIDs deterministically, so this variant is rarely observed — it is reserved for future identity flows that could validate or reject caller-supplied material.
Consent(String)
A consent/bailment-related operation failed.
Returned by crate::consent::BailmentBuilder::build when required
fields are missing (no scope, no duration) or invalid (empty scope,
zero-hour duration).
Governance(String)
A governance-related operation failed.
Returned by crate::governance::DecisionBuilder::build for an
empty title, and by crate::governance::Decision::cast_vote when
the same voter tries to cast a second vote.
Authority(String)
An authority-chain operation failed.
Returned by crate::authority::AuthorityChainBuilder::build for any
topology violation: an empty chain, a break in the grantor/grantee
sequence between consecutive links, or a terminal mismatch.
KernelDenied(String)
The kernel denied an action.
Reserved for flows that want to surface a kernel denial as a Result
error rather than a KernelVerdict::Denied value. The SDK’s
crate::kernel::ConstitutionalKernel::adjudicate returns a verdict
directly; this variant exists so higher-level wrappers can lift it
into the error channel if they prefer.
KernelEscalated(String)
The kernel escalated an action for review.
Counterpart to ExoError::KernelDenied for the escalation outcome.
Crypto(String)
A cryptographic operation failed.
Reserved for future crypto flows that could fail (e.g. signature
parsing of untrusted input). The current BLAKE3 and Ed25519 wrappers
in crate::crypto are infallible.
InvalidDid(String)
A provided DID string is not valid.
Returned when the SDK derives a DID whose method-specific string
fails exo_core::Did validation. In practice BLAKE3-derived hex
always satisfies the rules, so this variant is effectively
unreachable; it is retained for completeness.
Serialization(String)
Serialization or deserialization failed.
Reserved for higher-level SDK flows that marshal wire payloads. The
primitive Serialize/Deserialize implementations on SDK types use
serde_json::Error directly; this variant lets downstream wrappers
homogenise their error channel.
Trait Implementations§
Source§impl Error for ExoError
impl Error for ExoError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Auto Trait Implementations§
impl Freeze for ExoError
impl RefUnwindSafe for ExoError
impl Send for ExoError
impl Sync for ExoError
impl Unpin for ExoError
impl UnsafeUnpin for ExoError
impl UnwindSafe for ExoError
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> 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>
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>
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 more