[][src]Crate crdt_tree

Implements Tree Conflict-Free Replicated Data Type (CRDT).

For usage/examples, see: examples/tree.rs test/tree.rs

This code aims to be an accurate implementation of the tree crdt described in:

"A highly-available move operation for replicated trees and distributed filesystems" [1] by Martin Klepmann, et al.

[1] https://martin.kleppmann.com/papers/move-op.pdf

For clarity, data structures in this implementation are named the same as in the paper (State, Tree) or close to (OpMove --> Move, LogOpMove --> LogOp). Some are not explicitly named in the paper, such as TreeId, TreeMeta, TreeNode, Clock.


pub use self::clock::Clock;
pub use self::logopmove::LogOpMove;
pub use self::opmove::OpMove;
pub use self::state::State;
pub use self::tree::Tree;
pub use self::treeid::TreeId;
pub use self::treemeta::TreeMeta;
pub use self::treenode::TreeNode;



This module contains a Clock. Implements Lamport Clock


This module contains LogOpMove. Implements LogOpMove, a log entry used by State


This module contains OpMove. Implements OpMove, the only way to manipulate Tree data.


This module contains State. Holds Tree CRDT state and implements the core algorithm.


This module contains a Tree. Implements Tree, a set of triples representing current tree structure.


This module contains TreeId. Implements TreeId, a trait for representing Tree (Node) Identifiers


This module contains TreeMeta. Implements TreeMeta, a trait for representing Tree (Node) metadata


This module contains TreeNode. Implements TreeNode, ie a node that is stored in a Tree.