pub struct LwwMap<K: Ord, V: Ord> { /* private fields */ }Expand description
Last-writer-wins map.
This is a flat tested-not-proven type. Each key has an optional max-dot value entry and an optional max-dot remove tombstone. A key is visible when its value dot is greater than its remove dot.
Implementations§
Source§impl<K: Ord, V: Ord> LwwMap<K, V>
impl<K: Ord, V: Ord> LwwMap<K, V>
pub fn new() -> Self
pub fn set(&mut self, key: K, timestamp: u64, replica: u64, value: V)
pub fn remove(&mut self, key: K, timestamp: u64, replica: u64)
pub fn get(&self, key: &K) -> Option<&V>
pub fn visible_entry(&self, key: &K) -> Option<&LwwEntry<V>>
pub fn entries(&self) -> &BTreeMap<K, LwwEntry<V>>
pub fn removals(&self) -> &BTreeMap<K, LwwDot>
Trait Implementations§
Source§impl<K: Ord + Clone, V: Ord + Clone> Crdt for LwwMap<K, V>
impl<K: Ord + Clone, V: Ord + Clone> Crdt for LwwMap<K, V>
type Delta = LwwMapDelta<K, 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.impl<K: Eq + Ord, V: Eq + Ord> Eq for LwwMap<K, V>
Source§impl<K: PartialEq + Ord, V: PartialEq + Ord> PartialEq for LwwMap<K, V>
impl<K: PartialEq + Ord, V: PartialEq + Ord> PartialEq for LwwMap<K, V>
Source§fn eq(&self, other: &LwwMap<K, V>) -> bool
fn eq(&self, other: &LwwMap<K, V>) -> bool
Tests for
self and other values to be equal, and is used by ==.1.0.0 (const: unstable) · 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.impl<K: PartialEq + Ord, V: PartialEq + Ord> StructuralPartialEq for LwwMap<K, V>
Source§impl WireDecode for LwwMap<u64, u64>
impl WireDecode for LwwMap<u64, u64>
fn decode_wire(cursor: &mut WireCursor<'_>) -> Result<Self, WireError>
fn from_wire_bytes(bytes: &[u8]) -> Result<Self, WireError>
Source§impl WireEncode for LwwMap<u64, u64>
impl WireEncode for LwwMap<u64, u64>
fn encode_wire(&self, out: &mut Vec<u8>) -> Result<(), WireError>
fn to_wire_bytes(&self) -> Result<Vec<u8>, WireError>
Source§impl WireSchema for LwwMap<u64, u64>
impl WireSchema for LwwMap<u64, u64>
const REQUIRES_ARITY: bool = false
fn wire_schema() -> Vec<u8> ⓘ
Auto Trait Implementations§
impl<K, V> Freeze for LwwMap<K, V>
impl<K, V> RefUnwindSafe for LwwMap<K, V>where
K: RefUnwindSafe,
V: RefUnwindSafe,
impl<K, V> Send for LwwMap<K, V>where
K: Send,
V: Send,
impl<K, V> Sync for LwwMap<K, V>where
K: Sync,
V: Sync,
impl<K, V> Unpin for LwwMap<K, V>
impl<K, V> UnsafeUnpin for LwwMap<K, V>
impl<K, V> UnwindSafe for LwwMap<K, V>where
K: RefUnwindSafe,
V: RefUnwindSafe,
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.