Module garage_util::crdt
source · Expand description
This package provides a simple implementation of conflict-free replicated data types (CRDTs)
CRDTs are a type of data structures that do not require coordination. In other words, we can edit them in parallel, we will always find a way to merge it.
A general example is a counter. Its initial value is 0. Alice and Bob get a copy of the counter. Alice does +1 on her copy, she reads 1. Bob does +3 on his copy, he reads 3. Now, it is easy to merge their counters, order does not count: we always get 4.
Learn more about CRDTs on Wikipedia
Structs
- Boolean, where
true
is an absorbing state - Last Write Win (LWW)
- Last Write Win Map
- Simple CRDT Map
Enums
- Deletable object (once deleted, cannot go back)
Traits
- All types that implement
Ord
(a total order) can also implement a trivial CRDT defined by the merge rule:a ⊔ b = max(a, b)
. Implement this trait for your type to enable this behavior. - Definition of a CRDT - all CRDT Rust types implement this.