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 · Rust 包仓库 82/week @ 2024-03-13 · Rust 包仓库 281/week @ 2024-03-20 · Rust 包仓库 58/week @ 2024-03-27 · Rust 包仓库 122/week @ 2024-04-03 · Rust 包仓库 54/week @ 2024-04-10 · Rust 包仓库 251/week @ 2024-04-17 · Rust 包仓库 157/week @ 2024-04-24 · Rust 包仓库 57/week @ 2024-05-01 · Rust 包仓库 36/week @ 2024-05-08 · Rust 包仓库 179/week @ 2024-05-15 · Rust 包仓库 29/week @ 2024-05-22 · Rust 包仓库 15/week @ 2024-05-29 · Rust 包仓库 208/week @ 2024-06-05 · Rust 包仓库 73/week @ 2024-06-12 · Rust 包仓库 32/week @ 2024-06-19 · Rust 包仓库 26/week @ 2024-06-26 · Rust 包仓库

每月 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