pub enum NoteWriteConflict {
Version {
expected: i64,
current: i64,
},
Fence {
key: String,
expected: Option<i64>,
current: Option<i64>,
index: Option<usize>,
},
Key {
key: String,
existing_id: String,
equal: Option<bool>,
},
FenceDeadline(Box<FenceDeadline>),
FenceIdentity(Box<FenceIdentity>),
}Variants§
Version
Fence
Key
Fields
equal: Option<bool>Whether the live holder’s validated content and properties equal
the candidate’s (ADR-172 Amendment 6). None unless the write
that produced this conflict asked for the comparison
(CreateKeyClaim::replay_signal, set only by the singleton
create route): every other keyed route never carries this
signal, so it can never reach their callers. Internal signal
only even when present: it never reaches a client verbatim. The
create handler turns an equal, disclosed conflict into a
successful replay result, and rebuilds Details without this
field on every other outcome.
FenceDeadline(Box<FenceDeadline>)
A fence whose live_until path did not admit the write. Separate from
Fence because the version matched: what failed is the deadline. Boxed
so this variant does not set the size of every conflict result.
FenceIdentity(Box<FenceIdentity>)
A fence whose id did not hold the key. Separate from Fence because
the version is not what disagreed, and it may well agree: a recreated
note starts at version 1. Boxed for the same reason as FenceDeadline.
Implementations§
Source§impl NoteWriteConflict
impl NoteWriteConflict
pub fn into_error(self) -> KhiveError
Trait Implementations§
Source§impl Clone for NoteWriteConflict
impl Clone for NoteWriteConflict
Source§impl Debug for NoteWriteConflict
impl Debug for NoteWriteConflict
impl Eq for NoteWriteConflict
Source§impl PartialEq for NoteWriteConflict
impl PartialEq for NoteWriteConflict
impl StructuralPartialEq for NoteWriteConflict
Auto Trait Implementations§
impl Freeze for NoteWriteConflict
impl RefUnwindSafe for NoteWriteConflict
impl Send for NoteWriteConflict
impl Sync for NoteWriteConflict
impl Unpin for NoteWriteConflict
impl UnsafeUnpin for NoteWriteConflict
impl UnwindSafe for NoteWriteConflict
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§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