IAVL Tree Implementation
An immutable, versioned AVL+ tree implementation in Rust, designed for blockchain applications.
Features
- Immutable versioned storage: Each tree modification creates a new version while preserving previous states
- Efficient persistence: Write-ahead logging (WAL) for crash recovery
- Balanced operations: Self-balancing AVL tree with O(log n) operations
- Range queries: Efficient iteration over key ranges
- Memory and disk storage: In-memory and persistent storage implementations
- Batch operations: Atomic write batches for efficient updates
Core Components
IAVLTree: The main balanced tree implementationIAVLDB: Persistent storage wrapper with WAL supportMemTree: Pure in-memory implementationOverlay: Transactional overlay for atomic changesKVStore: Common key-value store trait
Basic Usage
use ;
let mut tree = new;
// Insert key-value pairs
tree.set;
tree.set;
// Get values
assert_eq!;
// Range iteration
for in tree.range
// Remove keys
tree.remove;
Persistent Storage Example
use ;
let mut db = IAVLDBnew;
// Make changes
db.set;
// Save version and persist to disk
let version_hash = db.save_version;
Safety
This implementation uses #![forbid(unsafe_code)] to ensure memory safety.
License
Apache 2.0