9 个版本
0.2.0 | 2024年2月15日 |
---|---|
0.1.26 | 2023年12月6日 |
0.1.25 | 2023年9月10日 |
0.1.23 | 2023年8月3日 |
0.1.20 | 2023年3月30日 |
#591 在 文件系统
每月下载 105 次
在 3 个 Crates 中使用 (通过 wnfs)
190KB
3.5K SLoC
⚠️ 进行中 ⚠️
这个 Rust crate 提供了一个基于 IPLD 的 哈希数组映射查找树 (HAMT) 的实现。
HAMT 是一种数据结构,它对键进行哈希处理,并在每个级别上使用哈希值的增量来确定树结构中条目或子节点的放置。
用于每个级别的索引计算的位数由 bitWidth 确定。每个节点可以存储最多 2^bitWidth 个元素,这些元素存储在一个数组中。条目按键排序顺序存储在桶中。如果桶已包含最大数量的元素,则创建一个新的子节点,并将条目插入到新节点中。
数据元素数组仅分配用于存储实际的条目,并使用映射位字段来确定数据数组中是否存在索引。
该实现基于 fvm_ipld_hamt,并进行了一些修改以支持异步块存储访问和默认不可变。
使用方法
use wnfs_hamt::Node;
use wnfs_common::MemoryBlockStore;
let store = &MemoryBlockStore::default();
let scores: Node<String, usize> = Rc::new(Node::default());
scores.set("Mandy", 30, store).await?;
let result = scores.get("Mandy", store).await?;
依赖项
~8–15MB
~205K SLoC