pub struct LwwRegister<V: Ord> { /* private fields */ }Expand description
Last-writer-wins register.
This is a flat tested-not-proven type. It is a max register over the total
order (timestamp, replica, value), which gives deterministic merge and
tie-breaking. It is not currently part of the Lean-proven product surface.
Implementations§
Source§impl<V: Ord> LwwRegister<V>
impl<V: Ord> LwwRegister<V>
Source§impl<V: Ord + Clone> LwwRegister<V>
impl<V: Ord + Clone> LwwRegister<V>
Trait Implementations§
Source§impl<V: Clone + Ord> Clone for LwwRegister<V>
impl<V: Clone + Ord> Clone for LwwRegister<V>
Source§fn clone(&self) -> LwwRegister<V>
fn clone(&self) -> LwwRegister<V>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<V: Ord + Clone> Crdt for LwwRegister<V>
impl<V: Ord + Clone> Crdt for LwwRegister<V>
Source§fn validate_record(
&self,
id: RecordId,
delta: &Self::Delta,
) -> Result<(), WireError>
fn validate_record( &self, id: RecordId, delta: &Self::Delta, ) -> Result<(), WireError>
A record may only assign its author’s dot. Losing assignments with a matching author remain valid and are subsumed by the total-order rule.
type Delta = LwwRegisterDelta<V>
fn apply_delta(&mut self, delta: Self::Delta)
Source§fn replica_count(&self) -> Option<usize>
fn replica_count(&self) -> Option<usize>
Fixed replica domain, or
None for CRDTs without a fixed arity.Source§impl<V: Debug + Ord> Debug for LwwRegister<V>
impl<V: Debug + Ord> Debug for LwwRegister<V>
Source§impl<V: Ord> Default for LwwRegister<V>
impl<V: Ord> Default for LwwRegister<V>
Source§impl<V: Ord + Clone> Mergeable for LwwRegister<V>
impl<V: Ord + Clone> Mergeable for LwwRegister<V>
Source§fn merge(&mut self, other: &Self) -> Result<(), MergeError>
fn merge(&mut self, other: &Self) -> Result<(), MergeError>
Join compatible states, returning an error if their replica domains differ.
Source§impl<V: PartialEq + Ord> PartialEq for LwwRegister<V>
impl<V: PartialEq + Ord> PartialEq for LwwRegister<V>
Source§fn eq(&self, other: &LwwRegister<V>) -> bool
fn eq(&self, other: &LwwRegister<V>) -> bool
Tests for
self and other values to be equal, and is used by ==.1.0.0 · Source§fn ne(&self, other: &Rhs) -> bool
fn ne(&self, other: &Rhs) -> bool
Tests for
!=. The default implementation is almost always sufficient,
and should not be overridden without very good reason.Source§impl WireDecode for LwwRegister<u64>
impl WireDecode for LwwRegister<u64>
fn decode_wire(cursor: &mut WireCursor<'_>) -> Result<Self, WireError>
Source§fn decode_wire_with_collection_limits(
cursor: &mut WireCursor<'_>,
_limits: CollectionLimits,
) -> Result<Self, WireError>
fn decode_wire_with_collection_limits( cursor: &mut WireCursor<'_>, _limits: CollectionLimits, ) -> Result<Self, WireError>
Decode a nested payload with a collection budget. Other payload types
retain their ordinary decoder unless they implement this method.
Source§fn decode_wire_with_limits(
cursor: &mut WireCursor<'_>,
collections: CollectionLimits,
_max_records: Option<usize>,
) -> Result<Self, WireError>
fn decode_wire_with_limits( cursor: &mut WireCursor<'_>, collections: CollectionLimits, _max_records: Option<usize>, ) -> Result<Self, WireError>
Decode a payload nested in an EventLog with its record budget.
Source§fn from_wire_bytes_with_collection_limits(
bytes: &[u8],
limits: CollectionLimits,
) -> Result<Self, WireError>
fn from_wire_bytes_with_collection_limits( bytes: &[u8], limits: CollectionLimits, ) -> Result<Self, WireError>
Decode a complete wire value with an explicit collection ceiling.
fn from_wire_bytes(bytes: &[u8]) -> Result<Self, WireError>
Source§impl WireEncode for LwwRegister<u64>
impl WireEncode for LwwRegister<u64>
fn encode_wire(&self, out: &mut Vec<u8>) -> Result<(), WireError>
fn to_wire_bytes(&self) -> Result<Vec<u8>, WireError>
Source§impl WireSchema for LwwRegister<u64>
impl WireSchema for LwwRegister<u64>
const REQUIRES_ARITY: bool = false
Source§fn wire_schema() -> Cow<'static, [u8]>
fn wire_schema() -> Cow<'static, [u8]>
Borrow fixed identities; return owned bytes for composed schemas.
impl<V: Eq + Ord> Eq for LwwRegister<V>
impl<V: Ord> StructuralPartialEq for LwwRegister<V>
Auto Trait Implementations§
impl<V> Freeze for LwwRegister<V>where
V: Freeze,
impl<V> RefUnwindSafe for LwwRegister<V>where
V: RefUnwindSafe,
impl<V> Send for LwwRegister<V>where
V: Send,
impl<V> Sync for LwwRegister<V>where
V: Sync,
impl<V> Unpin for LwwRegister<V>where
V: Unpin,
impl<V> UnsafeUnpin for LwwRegister<V>where
V: UnsafeUnpin,
impl<V> UnwindSafe for LwwRegister<V>where
V: UnwindSafe,
Blanket Implementations§
Source§impl<T> Any for Twhere
T: 'static + ?Sized,
impl<T> Any for Twhere
T: 'static + ?Sized,
Source§fn type_id(&self) -> TypeId
fn type_id(&self) -> TypeId
Gets the
TypeId of self. Read moreSource§impl<T> Borrow<T> for Twhere
T: ?Sized,
impl<T> Borrow<T> for Twhere
T: ?Sized,
Source§fn borrow(&self) -> &T
fn borrow(&self) -> &T
Immutably borrows from an owned value. Read more
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
🔬This is a nightly-only experimental API. (
clone_to_uninit)Performs copy-assignment from
self to dest. Read moreSource§impl<T, U> Into<U> for Twhere
U: From<T>,
impl<T, U> Into<U> for Twhere
U: From<T>,
Source§fn into(self) -> U
fn into(self) -> U
Calls U::from(self).
That is, this conversion is whatever the implementation of
From<T> for U chooses to do.