pub enum CircleError {
Show 16 variants
NotConfigured,
LoopNotRunning,
BrowsableStorage,
RotationRequired {
circle_id: CircleId,
removed_members: Vec<String>,
},
Conflicted {
circle_id: CircleId,
},
Deleted {
circle_id: CircleId,
},
NotConflicted {
circle_id: CircleId,
},
ChosenBranchNotRetained {
circle_id: CircleId,
},
NoCloseToCancel {
circle_id: CircleId,
},
NoCloseToExclude {
circle_id: CircleId,
},
DeviceNotACloseParticipant {
circle_id: CircleId,
device_id: StoreDeviceId,
},
NotBlocked {
operation_id: CircleOperationId,
},
DiscardRequiresNonactivation {
operation_id: CircleOperationId,
},
Blocked {
circle_id: CircleId,
block: CircleOperationBlock,
},
Identity(String),
Protocol(String),
}Expand description
Why a Circle command or query failed. Maps the internal typed refusals 1:1 with
stable identifiers and carries the ids a caller needs to display or retry.
Write-path outcomes (a durable write’s local/published/blocked/conflicted
status) are not here — those stay on
WriteStatus/WriteBlock.
Variants§
NotConfigured
No sync provider is configured, so there is no Store to command.
LoopNotRunning
The sync loop is not running, so a Circle write cannot be dispatched.
BrowsableStorage
Circles require opaque object storage; a browsable provider cannot hold them.
RotationRequired
The Circle’s resolved roster names Store identities that are no longer active Store members. New content is refused until an Owner closes the epoch and activates a successor roster without them.
Conflicted
The Circle’s control history has forked and awaits Owner resolution.
Deleted
The Circle’s control history terminated in an Owner-signed deletion.
NotConflicted
Resolution was requested for a Circle that holds no retained control conflict.
ChosenBranchNotRetained
The resolution’s chosen branch is not among the Circle’s retained conflicting branches.
NoCloseToCancel
Cancellation was requested for a Circle with no in-flight epoch close.
NoCloseToExclude
Device exclusion was requested for a Circle with no in-flight epoch close.
DeviceNotACloseParticipant
The named device is not a participant in the Circle’s in-flight epoch close.
NotBlocked
Retry was requested for a durable operation that is not blocked.
Fields
operation_id: CircleOperationIdDiscardRequiresNonactivation
Discard was requested without proof the candidate can never activate. The operation stays durable; it never assumes an unseen candidate failed to activate.
Fields
operation_id: CircleOperationIdBlocked
A durable operation cannot publish because its author lost signed authority; the initiator may retry it once authority is restored.
Identity(String)
The local signing identity is not established.
Protocol(String)
An internal protocol or database failure with no distinct public category.
Trait Implementations§
Source§impl Debug for CircleError
impl Debug for CircleError
Source§impl Display for CircleError
impl Display for CircleError
Source§impl Error for CircleError
impl Error for CircleError
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
Source§impl From<CircleOperationError> for CircleError
impl From<CircleOperationError> for CircleError
Auto Trait Implementations§
impl Freeze for CircleError
impl RefUnwindSafe for CircleError
impl Send for CircleError
impl Sync for CircleError
impl Unpin for CircleError
impl UnsafeUnpin for CircleError
impl UnwindSafe for CircleError
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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