0.28.0 |
|
---|---|
0.26.1 |
|
0.23.3 |
|
0.21.2 |
|
0.18.0 |
|
#10 in #memmap
264 monthly downloads
8KB
125 代码行
idx_sized
功能
这是一个用于处理单维数组数据的库。它使用mmap和avltriee。
可以处理的数据仅限于固定长度数据。(如果你处理可变长度数据,最好使用泛型。)
数组数据是平衡树算法,从最小值迭代到最大值,但插入的值总是添加到文件的末尾,并始终保持同一位置。换句话说,排序、搜索和通过指定行获取值都可以以高速处理。此外,由于我使用了mmap,在更新值时它会自动保存到文件中。
用法
初始化
use idx_sized::IdxSized;
let mut idx=IdxSized::<i64>::new("hoge.idx").unwrap();
插入
idx.insert(100).unwrap();
idx.insert(300).unwrap();
idx.insert(100).unwrap();
idx.insert(150).unwrap();
更新
idx.update(2, 50).unwrap();
删除
idx.delete(1).unwrap();
搜索
for i in idx.triee().iter() {
println!("{}. {} : {}", i.index(), i.row(), i.value());
}
for row in idx.triee().iter_by(|v|v.cmp(&100)) {
println!("{}. {} : {}", row.index(),row.row(), row.value());
}
for row in idx.triee().iter_by_value_from(&100) {
println!("{}. {} : {}", row.index(),row.row(), row.value());
}
for row in idx.triee().iter_by_value_to(&200) {
println!("{}. {} : {}", row.index(),row.row(), row.value());
}
for row in idx.triee().iter_by_value_from_to(&100, &200) {
println!("{}. {} : {}", row.index(),row.row(), row.value());
}
依赖关系
~1–1.5MB
~25K SLoC