Husky

Husky is a library for creating databases with an API similar to iterators. Its aim is to make cache and indexing easier.

It is built around sled, and can use either rkyv or serde for serialization through feature flags.

Features

Examples

```rust use husky::{Tree, Operate, Change, Load, View}; // Or husky::open("dbpath").unwrap() let db = husky::opentemp().unwrap(); let tree: Tree = db.open_tree("tree").unwrap();

for i in 0..100 { tree.insert(i, i).unwrap(); } // Change the tree values let double = tree.map(|, v| v * 2); double.iter() .flatten() .foreach(|(k, v)| assert_eq!(k * 2, v));

// Change the tree keys let stringidx = tree.index(|k, _| vec![k.tostring()]) .load() .unwrap() .map(|, v| v[0]); stringidx.iter() .flatten() .foreach(|(k, v)| asserteq!(k, v.to_string()));

// Zip two trees let window = tree.zip(&double); window.iter() .flatten() .foreach(|(k, (v, d))| { asserteq!(Some(k), v); assert_eq!(Some(k * 2), d); }); ```