Crates.io | whistlinoak |
lib.rs | whistlinoak |
version | 0.2.1 |
source | src |
created_at | 2022-08-05 23:16:20.640183 |
updated_at | 2022-08-17 18:50:16.053384 |
description | Annotated even-arity trees backed by mmaps |
homepage | |
repository | https://github.com/ureeves/whistlinoak |
max_upload_size | |
id | 639607 |
size | 49,917 |
Annotated even-arity trees backed by arbitrary memories.
whistlinoak = "0.2"
use whistlinoak::{Annotation, Tree};
struct Cardinality(usize);
impl<T> Annotation<T> for Cardinality {
fn compute(leaf: &T) -> Self {
Cardinality(1)
}
fn combine<'a>(annotations: impl Iterator<Item=&'a Self>) -> Self
where
Self: 'a
{
Self(annotations.fold(0, |curr, c| curr + c.0))
}
}
let mut tree = Tree::<usize, Cardinality>::new();
let n_leaves = 1000;
for i in 0..n_leaves {
tree.push(i).unwrap();
}
assert_eq!(tree.len(), n_leaves);
assert_eq!(tree.root().0, n_leaves);