btree-vec:Rust中能实现B树的可增长数组(vector)


这是一个Rust编写的库包,提供了使用 B 树(更具体地说,B+ 树)实现的可增长数组(向量)。它提供非摊销 O(log n) 随机访问、插入和删除,以及 O(n) 迭代。分支因子也是可定制的。

该设计类似于Simon Tatham 所描述的未排序计数 B 树。

let mut vec = BTreeVec::new();
for i in 0..20 {
    vec.push(i);
}
for i in 0..10 {
    assert!(vec.remove(i) == i * 2);
}
for i in 0..10 {
    assert!(vec[i] == i * 2 + 1);
}
for i in 0..10 {
    vec.insert(i * 2, i * 2);
}
assert!(vec.len() == 20);
for (i, n) in vec.iter().copied().enumerate() {
    assert!(i == n);
}