#信息检索 #词典 #检索 #地图 #搜索 #信息

no-std fst-no-std

使用有限状态转换器以紧凑的方式表示大量字符串的集合或映射(可能超过10亿)

2 个版本

0.4.8 2024年1月18日
0.4.7 2024年1月18日

#428算法

Unlicense/MIT

1.5MB
6K SLoC

fst no-std 模式

这是一个对 fst 的分支,添加了对 no_std 目标的支持(有关详细信息,请参阅 no_std 使用)。

如果您不确定是使用此分支还是原始分支:只需使用原始分支,可能性更大的是它更最新。

文档

https://docs.rs/fst-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-rangesstd 的额外依赖。

no_std 使用

您可以通过禁用默认特性,在 no_std 环境中使用此包,如下所示

[dependencies]
fst-no-std = { version = "0.4", default-features = false }

这样,fst-no-std 不会依赖于标准库,甚至不会分配(!)资源,但代价是功能相当受限:您不能构建 FST,可用的查询功能仅限于简单查找。您可以选择启用 alloc 特性,这将添加对 alloc 包的依赖(即您需要一个全局分配器),但将启用所有查询功能。

许可证

基于MIT许可协议授权。

依赖项