#data #file #avl-tree #index-file #index #memmap

已删除 idx_sized

这是一个用于处理单维数组数据的库。它使用mmap和avltriee。

0.28.0 2023年5月9日
0.26.1 2023年5月7日
0.23.3 2023年3月21日
0.21.2 2022年12月29日
0.18.0 2022年11月23日

#10 in #memmap

Download history • Rust 包仓库 323/week @ 2024-03-28 • Rust 包仓库 159/week @ 2024-04-04 • Rust 包仓库

264 monthly downloads

MIT/Apache

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