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.