43 个版本 (28 个重大更新)
0.64.0 | 2024年2月14日 |
---|---|
0.62.0 | 2024年2月9日 |
0.48.0 | 2023年12月27日 |
0.46.2 | 2023年10月11日 |
0.34.0 |
|
在 文件系统 中排名 #493
每月下载 288 次
用于 12 个 crate (2 个直接使用)
8KB
110 行
idx_file
特性
这是一个处理一维数组数据的库。它使用 mmap 和 avltriee。
基本上,可以处理的数据必须是固定长度数据,但我们也有一个处理可变长度数据的 trait。
数组数据是一种平衡树算法,它从最小值迭代到最大值,但插入的值始终添加到文件的末尾并保持始终在相同的位置。换句话说,排序、搜索和指定行获取值都可以高速处理。此外,由于我使用 mmap,当更新值时,它将自动保存到文件中。
此 crate 是从 https://crates.io/crates/idx_sized 分叉的
用法
初始化
use idx_file::IdxFile;
let mut idx=IdxFile::<i64>::new("hoge.idx").unwrap();
插入
idx.insert(&100);
idx.insert(&300);
idx.insert(&100);
idx.insert(&150);
更新
idx.update(2, &50);
删除
idx.delete(1);
搜索
for row in idx.iter() {
println!(" {} : {}", row, **unsafe { idx.get_unchecked(row) });
}
for row in idx.iter_by(&100) {
println!(" {} : {}", row, **unsafe { idx.get_unchecked(row) });
}
for row in idx.iter_from(&100) {
println!(" {} : {}", row, **unsafe { idx.get_unchecked(row) });
}
for row in idx.iter_to(&200) {
println!(" {} : {}", row, **unsafe { idx.get_unchecked(row) });
}
for row in idx.iter_range(&100, &200) {
println!(" {} : {}", row, **unsafe { idx.get_unchecked(row) });
}
依赖关系
~0.9–1.4MB
~23K SLoC