10 个版本 (稳定)

1.3.1 2022 年 9 月 19 日
1.3.0 2021 年 9 月 21 日
1.2.1 2021 年 7 月 20 日
1.1.1 2020 年 12 月 18 日
0.1.1 2020 年 6 月 9 日

#281 in GUI

Download history 82/week @ 2024-03-13 281/week @ 2024-03-20 58/week @ 2024-03-27 122/week @ 2024-04-03 54/week @ 2024-04-10 251/week @ 2024-04-17 157/week @ 2024-04-24 57/week @ 2024-05-01 36/week @ 2024-05-08 179/week @ 2024-05-15 29/week @ 2024-05-22 15/week @ 2024-05-29 208/week @ 2024-06-05 73/week @ 2024-06-12 32/week @ 2024-06-19 26/week @ 2024-06-26

每月 341 次下载

MIT 许可证

23KB
307

Rust Clippy check Security audit Docs Coverage Status Crates.io

rs-complete

rs-completion 是一个库,当您想在项目中实现制表符补全(或类似功能)时使用。

rs-completion 主要为了内存效率而构建。补全存储在二叉树中,每个节点包含一定数量的字符。这些字符进一步链接到新的节点。因此,相似的单词会共享内存。

视觉示例

//                          'c' - 'a' - 'v' - 'e'
//                         /
//    root - 'b' - 'a' - 't' - 'm' - 'a' - 'n'
//                               \
//                                'o' - 'b' - 'i' - 'l' - 'e'

这意味着在最坏的情况下,您可能有 25^25 个节点在内存中,其中 25 是您字母表的大小。但这意味着您在内存中保留了所有可想象到的字符组合,而不考虑辅音或动词规则。如果您需要这样做,那么您不需要库来处理。

我无法争论这种解决方案是否快速或高效。它已经解决了我在创建库时试图解决的问题。如果您有扩展或改进的想法,我将很高兴看到它们。

示例

extern crate rs_completion;
use rs_completion::CompletionTree;

let mut completions = CompletionTree::default();

completions.insert("large bunch of words that bungalow we want to be bundesliga able to complete");
assert_eq!(
    completions.complete("bun"),
    Some(vec!["bunch", "bundesliga", "bungalow"].iter().map(|s| s.to_string()).collect()));

依赖项

~130KB