4 个版本 (破坏性更新)
0.4.0 | 2022 年 7 月 12 日 |
---|---|
0.3.0 | 2022 年 7 月 11 日 |
0.2.0 | 2022 年 6 月 30 日 |
0.1.0 | 2022 年 6 月 29 日 |
#2250 在 数据结构
11KB
213 行
毛细管
一个用于存储键值对的库,但允许对值进行逐步(部分)搜索。
内部使用树实现的版本。这使得通过提供部分步骤来搜索值成为可能。
用例
一个用例,该用例是创建此软件包的灵感来源,即在字符串中的替换。
例如,我们可能想要替换所有键的出现为它们的值。一种天真且效率低下的方法是遍历键并针对每个键调用 string.replace
。
capillary
背后的想法是一次遍历字符串,并以线性方式替换所有出现。任何字符都可能导致有效或无效状态。这样,键的一部分可以用来朝着一些(潜在的)值前进。一旦达到一个唯一值,就可以返回它。
lib.rs
:
毛细管引入了一个 Dictionary
数据结构。它用于需要通过部分键搜索的情况。
特别适用于在数据中执行某种类型的查找和替换。
例如,可能想在字符串中执行查找和替换。使用 capillary::Dictionary
,可以保持开始搜索,而 Dictionary
将处于 默认 状态,直到某些字符是有效键的一部分。只要后续字符是有效键的一部分,Dictionary
的状态将被设置为 key
的某一部分,指向 value
。然后可以测试是否达到了某个 value
,并在达到它时立即返回。
依赖项
~2MB
~29K SLoC