[−][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.
Re-exports
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; |
Modules
clock | This module contains a Clock. Implements Lamport Clock |
logopmove | This module contains LogOpMove. Implements LogOpMove, a log entry used by State |
opmove | This module contains OpMove. Implements OpMove, the only way to manipulate Tree data. |
state | This module contains State. Holds Tree CRDT state and implements the core algorithm. |
tree | This module contains a Tree. Implements Tree, a set of triples representing current tree structure. |
treeid | This module contains TreeId. Implements TreeId, a trait for representing Tree (Node) Identifiers |
treemeta | This module contains TreeMeta. Implements TreeMeta, a trait for representing Tree (Node) metadata |
treenode | This module contains TreeNode. Implements TreeNode, ie a node that is stored in a Tree. |