pub enum TaskMutationOutcome {
Committed {
fence: FenceToken,
advisory: AdvisoryOwnership,
},
StaleLocalVersion {
current: FenceToken,
},
}Expand description
Outcome of a task-list mutation (claim or complete).
Returned by TaskListHandle::claim_task_versioned and
TaskListHandle::complete_task_versioned.
Committed means the mutation was applied to the local replica and a
delta was best-effort published — it does NOT mean any peer has observed
the change, and it does NOT grant exclusive ownership. Claims and
completions are advisory: concurrent operations on other replicas
coexist in the CRDT and resolve to a single deterministic winner (earliest
timestamp, then lexicographic agent id) only after convergence.
StaleLocalVersion means the caller’s fence token did not match this
replica’s current (epoch, revision) — a LOCAL fencing signal. It is NOT
a distributed conflict: two replicas at the same token both pass, so the
fence cannot provide cross-replica exclusion. A mismatch may be a stale
revision (the local snapshot moved) OR a stale epoch (the daemon restarted
and the caller’s token predates it — the restart-ABA case).
Variants§
Committed
The mutation was committed locally; fence is the new local token.
Fields
fence: FenceTokenThe task list’s fence token after this mutation (epoch + revision).
advisory: AdvisoryOwnershipAdvisory ownership snapshot computed from the local OR-Set at
commit time. Advisory — see AdvisoryOwnership.
StaleLocalVersion
The caller’s fence token did not match this replica’s current token; nothing was mutated. Local staleness guard (stale revision) or a restart-epoch mismatch — never a distributed conflict.
Fields
current: FenceTokenThe task list’s current (unchanged) local fence token.
Trait Implementations§
Source§impl Clone for TaskMutationOutcome
impl Clone for TaskMutationOutcome
Source§fn clone(&self) -> TaskMutationOutcome
fn clone(&self) -> TaskMutationOutcome
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for TaskMutationOutcome
Source§impl Debug for TaskMutationOutcome
impl Debug for TaskMutationOutcome
impl Eq for TaskMutationOutcome
Source§impl PartialEq for TaskMutationOutcome
impl PartialEq for TaskMutationOutcome
impl StructuralPartialEq for TaskMutationOutcome
Auto Trait Implementations§
impl Freeze for TaskMutationOutcome
impl RefUnwindSafe for TaskMutationOutcome
impl Send for TaskMutationOutcome
impl Sync for TaskMutationOutcome
impl Unpin for TaskMutationOutcome
impl UnsafeUnpin for TaskMutationOutcome
impl UnwindSafe for TaskMutationOutcome
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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§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.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