1个不稳定版本
0.1.0 | 2024年1月14日 |
---|
2403 在 算法
131 每月下载
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正在积极测试。