#prefix #string #key-prefix #prefix-tree #string-key #tree #upper-bound

prefix-range

计算BTreeSet/BTreeMap::range的字符串前缀查询的界限

1个不稳定版本

0.1.0 2024年1月14日

2403算法

Download history 13/week @ 2024-06-28 68/week @ 2024-07-05 39/week @ 2024-07-12 55/week @ 2024-07-19 41/week @ 2024-07-26 40/week @ 2024-08-02 16/week @ 2024-08-09 18/week @ 2024-08-16

131 每月下载

MIT 协议

7KB
71

计算BTreeSet/BTreeMap::range的字符串前缀查询的界限

[ crates.io ] [ lib.rs ] [ docs.rs ]

如果你有一个带有字符串键的BTreeSet或BTreeMap,并且想要找到所有具有给定前缀的条目,Rust标准库(截至1.75版本)没有提供任何内置方法来做到这一点。

你可以使用以下类似的方法

let iterator = mymap.range(Bounds::Included("myprefix"),
                           Bounds::Excluded("myprefiy"));

这个问题是找到上限 myprefiy。你需要处理UTF-8编码、无效码点等问题。这正是这个库中代码解决的问题。

代码来自Jimmy Hartzell的博客文章,并进行了一些微调

  • 在no-std(仍然需要alloc)中工作
  • 与BTreeMaps(不仅仅是BTreeSet)一起工作

非常感谢Jimmy Hartzell解决了这个问题(尽管他们从未将其作为可以被他人重用的crate发布)。

请参阅crate文档以获取使用示例。

MSRV

代码很简单,可能在相当旧的版本上编译,但没有任何版本低于1.65正在积极测试。

没有运行时依赖