This is my substring search workspace.
Please read the API documentation here
Fast substring search for strings and byte strings, using the two-way algorithm.
This is the same code as is included in Rust's libstd to “power” str::find(&str)
,
but here it is exposed with some improvements:
- Available for byte string searches using
&[u8]
- Having an optional SSE4.2 accelerated version (if detected at runtime) which is even faster.
- Using
memchr
for the single byte case, which is ultra fast. 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
- Update dev-deps
- 0.2.0
- Use std::arch and transparently support SSE4.2 when possible (x86 and x86-64 only) to enable an accelerated implementation of the algorithm. Forward search only. By @RReverser and @bluss
- Fix a bug in the SSE4.2 algorithm that made it much slower than it should have been, so performance increases as well.
- Requires Rust 1.27
- 0.1.8
- Tweak crate keywords by @tari
- Only testing and benchmarking changes otherwise (no changes to the crate itself)
- 0.1.7
- The crate is optionally
no_std
. Regular andpcmp
both support this mode.
- The crate is optionally
- 0.1.6
- The hidden and internal test module set, technically pub, was removed from standard compilation.
- 0.1.5
- Update from an odds dependency to using
unchecked-index
instead (only used by the pcmp feature). - The hidden and internal test module tw, technically pub, was removed from standard compilation.
- Update from an odds dependency to using
- 0.1.4
- Update memchr dependency to 2.0
- 0.1.3
- Link to docs.rs docs
- Drop
pcmp
's itertools dependency - Update nightly code for recent changes
- 0.1.2
- Internal improvements to the
pcmp
module.
- Internal improvements to the
- 0.1.1
- Add
rfind_bytes
,rfind_str
- Add
- 0.1.0
- Initial release
- Add
find_bytes
,find_str
MIT / APACHE-2.0
- Two Way: http://www-igm.univ-mlv.fr/~lecroq/string/node26.html
- Matters Computational: http://www.jjj.de/fxt/#fxtbook
Consider denying 0/n factorizations, see http://lists.gnu.org/archive/html/bug-gnulib/2010-06/msg00184.html