#trie #vector #sparse

nightly bitmaptrie

位图向量 trie (可变,非持久)。对基本稀疏向量进行词大小路径缓存的索引。需要 rust-nightly。

8 个版本 (稳定)

使用旧的 Rust 2015

2.0.0 2017年6月6日
1.3.1 2016年3月8日
1.1.2 2016年2月25日
1.0.1 2016年1月18日
0.9.0 2015年12月24日

#2220 in 数据结构

每月下载量 29

MIT/Apache

57KB
1K SLoC

Rust 的位图向量 trie

Build Status Latest Version

文档

由于使用底层不稳定 API,需要 Rust-nightly。

这是一个非持久的位图向量 trie,具有词大小索引:因此,在 32 位系统上索引为 32 位;在 64 位系统上为 64 位。

它本质上表现得像一个无界(除了词大小索引外)的稀疏向量。

对于空间接近的访问,性能良好,但对于随机空间稀疏访问则下降。如果使用 popcnt 和 lzcnt 指令编译,性能将显著提高。更多信息请参阅 wiki

最后访问路径被缓存以加速下一次附近的访问。

有可用的多路径缓存方法来加速多个位置的只读访问,但当前设计会导致写性能下降。

使用方法

extern crate bitmaptrie;
use bitmaptrie::Trie;

fn main() {
    let mut trie: Trie<String> = Trie::new();

    trie.set(123usize, "testing 123".to_owned());

    if let Some(value) = trie.get_mut(123) {
        *value = "test pass".to_owned();
    }
}

作者

Peter Liniker

许可证

双 MIT/Apache 2.0

无运行时依赖