2 个版本
0.4.8 | 2024年1月18日 |
---|---|
0.4.7 | 2024年1月18日 |
#428 在 算法
1.5MB
6K SLoC
fst no-std 模式
这是一个对 fst 的分支,添加了对 no_std
目标的支持(有关详细信息,请参阅 no_std
使用)。
如果您不确定是使用此分支还是原始分支:只需使用原始分支,可能性更大的是它更最新。
文档
安装
只需将相应的条目添加到您的 Cargo.toml
依赖列表中
[dependencies]
fst-no-std = "0.4"
示例
此示例演示了在内存中构建一个集合并对其执行模糊查询。您需要将 fst_no_std = "0.4"
与 levenshtein
功能启用添加到您的 Cargo.toml
中。
use fst_no_std::{IntoStreamer, Set};
use fst_no_std::automaton::Levenshtein;
fn main() -> Result<(), Box<dyn std::error::Error>> {
// A convenient way to create sets in memory.
let keys = vec!["fa", "fo", "fob", "focus", "foo", "food", "foul"];
let set = Set::from_iter(keys)?;
// Build our fuzzy query.
let lev = Levenshtein::new("foo", 1)?;
// Apply our fuzzy query to the set we built.
let stream = set.search(lev).into_stream();
let keys = stream.into_strs()?;
assert_eq!(keys, vec!["fo", "fob", "foo", "food"]);
Ok(())
}
请查看文档以获取更多示例!
Cargo 特性
std
- 默认启用。添加依赖于标准库的特性。alloc
- 默认启用。添加依赖于alloc
的特性。levenshtein
- 默认禁用。这将在automaton
子模块中添加Levenshtein
自动机。这包括对utf8-ranges
和std
的额外依赖。
no_std
使用
您可以通过禁用默认特性,在 no_std
环境中使用此包,如下所示
[dependencies]
fst-no-std = { version = "0.4", default-features = false }
这样,fst-no-std
不会依赖于标准库,甚至不会分配(!)资源,但代价是功能相当受限:您不能构建 FST,可用的查询功能仅限于简单查找。您可以选择启用 alloc
特性,这将添加对 alloc
包的依赖(即您需要一个全局分配器),但将启用所有查询功能。