aboutsummaryrefslogtreecommitdiff
path: root/src/table/crdt
diff options
context:
space:
mode:
Diffstat (limited to 'src/table/crdt')
-rw-r--r--src/table/crdt/crdt.rs6
-rw-r--r--src/table/crdt/lww_map.rs18
-rw-r--r--src/table/crdt/map.rs15
-rw-r--r--src/table/crdt/mod.rs1
4 files changed, 35 insertions, 5 deletions
diff --git a/src/table/crdt/crdt.rs b/src/table/crdt/crdt.rs
index 636b6df6..7abe8ba9 100644
--- a/src/table/crdt/crdt.rs
+++ b/src/table/crdt/crdt.rs
@@ -52,10 +52,8 @@ where
*self = other.clone();
}
warn!("Making an arbitrary choice: {:?}", self);
- } else {
- if other > self {
- *self = other.clone();
- }
+ } else if other > self {
+ *self = other.clone();
}
}
}
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()
+ }
+}
diff --git a/src/table/crdt/map.rs b/src/table/crdt/map.rs
index c4a30a26..c4dd1613 100644
--- a/src/table/crdt/map.rs
+++ b/src/table/crdt/map.rs
@@ -62,6 +62,11 @@ where
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 Map<K, V>
@@ -82,3 +87,13 @@ where
}
}
}
+
+impl<K, V> Default for Map<K, V>
+where
+ K: Clone + Ord,
+ V: Clone + CRDT,
+{
+ fn default() -> Self {
+ Self::new()
+ }
+}
diff --git a/src/table/crdt/mod.rs b/src/table/crdt/mod.rs
index eb75d061..9663a5a5 100644
--- a/src/table/crdt/mod.rs
+++ b/src/table/crdt/mod.rs
@@ -10,6 +10,7 @@
//! Learn more about CRDT [on Wikipedia](https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type)
mod bool;
+#[allow(clippy::module_inception)]
mod crdt;
mod lww;
mod lww_map;