diff options
Diffstat (limited to 'src/table/crdt/lww_map.rs')
-rw-r--r-- | src/table/crdt/lww_map.rs | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/table/crdt/lww_map.rs b/src/table/crdt/lww_map.rs index 7b372191..4ed26809 100644 --- a/src/table/crdt/lww_map.rs +++ b/src/table/crdt/lww_map.rs @@ -94,7 +94,7 @@ where /// put_my_crdt_value(a); /// ``` pub fn take_and_clear(&mut self) -> Self { - let vals = std::mem::replace(&mut self.vals, vec![]); + let vals = std::mem::take(&mut self.vals); Self { vals } } /// Removes all values from the map @@ -113,10 +113,16 @@ where pub fn items(&self) -> &[(K, u64, V)] { &self.vals[..] } + /// Returns the number of items in the map pub fn len(&self) -> usize { self.vals.len() } + + /// Returns true if the map is empty + pub fn is_empty(&self) -> bool { + self.len() == 0 + } } impl<K, V> CRDT for LWWMap<K, V> @@ -143,3 +149,13 @@ where } } } + +impl<K, V> Default for LWWMap<K, V> +where + K: Ord, + V: CRDT, +{ + fn default() -> Self { + Self::new() + } +} |