From c35d50b48c73e7905711670b3add671d5204f618 Mon Sep 17 00:00:00 2001 From: Josh Kingsley Date: Sun, 16 Nov 2025 00:28:46 +0200 Subject: feat(crdt): add VectorClock::is_concurrent_with --- crdt/src/lib.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'crdt/src/lib.rs') diff --git a/crdt/src/lib.rs b/crdt/src/lib.rs index 7b426fc..88133a6 100644 --- a/crdt/src/lib.rs +++ b/crdt/src/lib.rs @@ -66,7 +66,12 @@ impl Doc { } } - self.ops.sort_by(|op1, op2| op1.clock.cmp(&op2.clock)); + self.ops.sort_by(|op1, op2| { + op1.clock + .partial_cmp(&op2.clock) + // Tie-breaker: yse op ID + .unwrap_or_else(|| op1.id.cmp(&op2.id)) + }); } pub fn realize(&self) -> Result { @@ -317,6 +322,15 @@ mod tests { ); } + assert_eq!( + doc1.ops + .last() + .unwrap() + .clock + .partial_cmp(&doc2.ops.last().unwrap().clock), + None + ); + doc1.merge(&doc2); assert_eq!(doc1.ops.len(), 3); -- cgit v1.2.3