Radish alpha
h
Radicle Heartwood Protocol & Stack
Radicle
Git (anonymous pull)
Log in to clone via SSH
crdt: Relax some of the type constraints
Alexis Sellier committed 3 years ago
commit c5225c64cdcf5fe48830d069f2bf5c04a1c27c7c
parent c7d5ffe51b82ebeece2486c03e61400d3ecf774d
2 files changed +7 -11
modified radicle-crdt/src/lwwmap.rs
@@ -70,9 +70,7 @@ impl<K, V, C> Default for LWWMap<K, V, C> {
    }
}

-
impl<K: Ord, V: Semilattice + PartialOrd + Eq, C: Copy + Ord> FromIterator<(K, V, C)>
-
    for LWWMap<K, V, C>
-
{
+
impl<K: Ord, V: Semilattice + PartialOrd + Eq, C: Ord> FromIterator<(K, V, C)> for LWWMap<K, V, C> {
    fn from_iter<I: IntoIterator<Item = (K, V, C)>>(iter: I) -> Self {
        let mut map = LWWMap::default();
        for (k, v, c) in iter.into_iter() {
@@ -82,9 +80,7 @@ impl<K: Ord, V: Semilattice + PartialOrd + Eq, C: Copy + Ord> FromIterator<(K, V
    }
}

-
impl<K: Ord, V: Semilattice + PartialOrd + Eq, C: Ord + Copy> Extend<(K, V, C)>
-
    for LWWMap<K, V, C>
-
{
+
impl<K: Ord, V: Semilattice + PartialOrd + Eq, C: Ord> Extend<(K, V, C)> for LWWMap<K, V, C> {
    fn extend<I: IntoIterator<Item = (K, V, C)>>(&mut self, iter: I) {
        for (k, v, c) in iter.into_iter() {
            self.insert(k, v, c);
@@ -96,7 +92,7 @@ impl<K, V, C> Semilattice for LWWMap<K, V, C>
where
    K: Ord,
    V: Semilattice + PartialOrd + Eq,
-
    C: Ord + Copy + Default,
+
    C: Ord + Default,
{
    fn merge(&mut self, other: Self) {
        for (k, v) in other.inner.into_iter() {
modified radicle-crdt/src/lwwset.rs
@@ -6,7 +6,7 @@ pub struct LWWSet<T, C> {
    inner: LWWMap<T, (), C>,
}

-
impl<T: Ord, C: Ord + Copy> LWWSet<T, C> {
+
impl<T: Ord, C: Ord> LWWSet<T, C> {
    pub fn singleton(value: T, clock: C) -> Self {
        Self {
            inner: LWWMap::from_iter([(value, (), clock)]),
@@ -38,7 +38,7 @@ impl<T, C> Default for LWWSet<T, C> {
    }
}

-
impl<T: Ord, C: Copy + Ord> FromIterator<(T, C)> for LWWSet<T, C> {
+
impl<T: Ord, C: Ord> FromIterator<(T, C)> for LWWSet<T, C> {
    fn from_iter<I: IntoIterator<Item = (T, C)>>(iter: I) -> Self {
        let mut set = LWWSet::default();
        for (v, c) in iter.into_iter() {
@@ -48,7 +48,7 @@ impl<T: Ord, C: Copy + Ord> FromIterator<(T, C)> for LWWSet<T, C> {
    }
}

-
impl<T: Ord, C: Ord + Copy> Extend<(T, C)> for LWWSet<T, C> {
+
impl<T: Ord, C: Ord> Extend<(T, C)> for LWWSet<T, C> {
    fn extend<I: IntoIterator<Item = (T, C)>>(&mut self, iter: I) {
        for (v, c) in iter.into_iter() {
            self.insert(v, c);
@@ -59,7 +59,7 @@ impl<T: Ord, C: Ord + Copy> Extend<(T, C)> for LWWSet<T, C> {
impl<T, C> Semilattice for LWWSet<T, C>
where
    T: Ord,
-
    C: Ord + Copy + Default,
+
    C: Ord + Default,
{
    fn merge(&mut self, other: Self) {
        self.inner.merge(other.inner);