#byte-string #string #find #memmem #pcmpestri #substring-search

未维护 无-std twoway

(已弃用 - 请使用 crate memchr 代替。) 用于字符串和字节字符串的快速子串搜索。可选的 SSE4.2 加速(如果检测到运行时)使用 pcmpestri。Memchr 是唯一的强制依赖项。这个双向算法也被 rust 的 libstd 本身使用,但在这里,它既用于字节字符串,使用 memchr,也可以选择使用 SSE4.2 加速版本。

12 个版本

使用旧的 Rust 2015

0.2.2 2021 年 5 月 19 日
0.2.1 2019 年 10 月 9 日
0.2.0 2018 年 11 月 19 日
0.1.8 2018 年 3 月 19 日
0.1.1 2015 年 12 月 9 日

#63 in #byte-string

Download history 61640/week @ 2024-04-04 60688/week @ 2024-04-11 64599/week @ 2024-04-18 60177/week @ 2024-04-25 60113/week @ 2024-05-02 59403/week @ 2024-05-09 56826/week @ 2024-05-16 54722/week @ 2024-05-23 62193/week @ 2024-05-30 63036/week @ 2024-06-06 62432/week @ 2024-06-13 72565/week @ 2024-06-20 70561/week @ 2024-06-27 58684/week @ 2024-07-04 60686/week @ 2024-07-11 53321/week @ 2024-07-18

每月 256,795 次下载
不到 36 crates 中使用

MIT/Apache

81KB
1.5K SLoC

这是我的子串搜索工作区。

请在此处阅读 API 文档

build_status

文档

使用双向算法实现的字符串和字节字符串的快速子串搜索。

这是与 Rust 的 libstd 中包含的相同代码,用于str::find(&str),但在此处,它有所改进

  • 支持使用&[u8]
  • 进行字节字符串搜索,具有可选的 SSE4.2 加速版本(如果检测到运行时),速度更快。
  • 使用memchr处理单字节情况,速度极快。
  • twoway::find_bytes(text: &[u8], pattern: &[u8]) -> Option<usize>
  • twoway::rfind_bytes(text: &[u8], pattern: &[u8]) -> Option<usize>
  • twoway::find_str(text: &str, pattern: &str) -> Option<usize>
  • twoway::rfind_str(text: &str, pattern: &str) -> Option<usize>

近期更改

  • 0.2.1
    • 更新开发依赖项
  • 0.2.0
    • 使用 std::arch 并在可能的情况下透明地支持 SSE4.2(仅限 x86 和 x86-64),以启用算法的加速实现。仅前向搜索。由 @RReverser 和 @bluss 实现
    • 修复了使 SSE4.2 算法比预期慢得多的错误,因此性能也有所提高。
    • 需要 Rust 1.27
  • 0.1.8
    • 由 @tari 调整 crate 关键字
    • 除此之外(未修改 crate 本身)只有测试和基准测试更改
  • 0.1.7
    • 该 crate 可选无-std。常规和pcmp都支持此模式。
  • 0.1.6
    • 从标准编译中删除了隐藏的内部测试模块集,技术上为 pub。
  • 0.1.5
    • 从奇数依赖项更新到使用unchecked-index(仅用于 pcmp 功能)。
    • 从标准编译中删除了隐藏的内部测试模块 tw,技术上为 pub。
  • 0.1.4
    • 将 memchr 依赖项更新到 2.0
  • 0.1.3
    • 链接到 docs.rs 文档
    • 删除pcmp's itertools 依赖项
    • 更新夜间代码以反映最近的变化
  • 0.1.2
    • 模块的pcmp改进。
  • 0.1.1
    • 添加rfind_bytes, rfind_str
  • 0.1.0
    • 首次发布
    • 添加find_bytes, find_str

许可证

MIT / Apache-2.0

注意

考虑拒绝0/n因子分解,请参阅http://lists.gnu.org/archive/html/bug-gnulib/2010-06/msg00184.html

依赖项

~185–350KB