[][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.