1 unstable release
0.0.4 | Sep 9, 2021 |
---|
#1494 in Asynchronous
26KB
552 lines
Simplee |> Euklid
Rust crate for the CRDTs.
Dot
The Dot is implementing a marked version.
extern crate euklid;
use euklid::Dot;
// Create a dot for actor Alice.
let mut dot = Dot::new("Alice".to_string(), 0);
// Increment the dot.
dot.apply_inc();
More examples can be found in the example file.
Vector Clock
The VClock is implementing a vector clock.
extern crate euklid;
use euklid::{Dot, VClock};
// Create a vclock and increment the counter for user A.
let mut a = VClock::new();
// Increment the counter for actor A
a.apply(a.inc_op("A"));
// Increment the counter for actor B
a.apply(a.inc_op("B"));
More examples can be found in the example file.
G-Counter
The GCounter is implementing a grow-only counter.
xtern crate euklid;
use euklid::{Dot, GCounter};
// Create a vclock and increment the counter for user A.
let mut a = VGounter::new();
// Increment the counter for actor A
a.apply(a.inc_op("A"));
// Increment the counter for actor B
a.apply(a.inc_op("B"));
// Increase the counter for actor A by 5
a.apply(a.step_op("A", 5));
More examples can be found in the example file.
Resources
- A Comprehensive Study of Convergent and Commutative Replicated Data Types
- John Mumm - A CRDT Primer: Defanging Order Theory
- Conflict Free Replicated Data Types on Wiki
- rust-crdt
- Rust code coverage
- Github workflows for Rust
Thank you!!!
You can contact me at veminovici@hotmail.com. Code designed and written in Päädu, on the beautiful island of Saaremaa, Estonia.