#prefix-tree #prefix #map #set

pfx

前缀树(映射和集合),实现了没有任何不安全操作

6个版本 (3个重大更新)

0.4.1 2024年4月7日
0.4.0 2024年4月3日
0.3.1 2024年4月2日
0.2.0 2024年4月2日
0.1.0 2024年4月2日

#1169 in 数据结构

MIT 许可协议

59KB
1.5K SLoC

PFX:100%安全的、面向blob的前缀树

这个crate提供了一种前缀树映射和集合数据结构,完全使用安全的Rust实现。

API与std::collections::{HashMap, BTreeMap}非常相似,包括迭代和条目API。迭代按照键的字典顺序进行。

一个值得注意的添加是前缀搜索,允许遍历所有键以指定前缀开头的条目。

示例

use pfx::PrefixTreeMap;

fn main() {
    let mut map: PrefixTreeMap<String, u64> = PrefixTreeMap::new();

    map.insert("abc".into(), 123);
    map.insert("def".into(), 456);
    map.insert("defghi".into(), 789);
    
    assert_eq!(map.get("abc").copied(), Some(123));
    assert_eq!(map.get("abcdef").copied(), None);
    assert_eq!(map.get("ab").copied(), None);

    for (key, value) in map.prefix_iter("de") {
        println!("{key} => {value}");
    }
}

依赖关系

~165KB