| Crates.io | iavl |
| lib.rs | iavl |
| version | 0.1.0 |
| created_at | 2025-06-04 15:57:43.109906+00 |
| updated_at | 2025-06-04 15:57:43.109906+00 |
| description | Implementation of IAVL+ Tree |
| homepage | |
| repository | https://github.com/your/repo |
| max_upload_size | |
| id | 1700572 |
| size | 50,558 |
An immutable, versioned AVL+ tree implementation in Rust, designed for blockchain applications.
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 traituse iavl::{IAVLTree, KVStore};
let mut tree = IAVLTree::new();
// Insert key-value pairs
tree.set(b"key1".to_vec(), b"value1".to_vec());
tree.set(b"key2".to_vec(), b"value2".to_vec());
// Get values
assert_eq!(tree.get(b"key1"), Some(&b"value1"[..]));
// Range iteration
for (key, value) in tree.range(b"key1"..b"key3") {
println!("{:?} => {:?}", key, value);
}
// Remove keys
tree.remove(b"key1");
use iavl::{IAVLDB, KVStore};
let mut db = IAVLDB::new(/* storage path */);
// Make changes
db.set(b"key1".to_vec(), b"value1".to_vec());
// Save version and persist to disk
let version_hash = db.save_version();
This implementation uses #![forbid(unsafe_code)] to ensure memory safety.
Apache 2.0