Skip to content
/ twoway Public

Twoway / Fast substring search for strings and byte strings (Rust) / Also assorted benchmarks and string search snippets

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

bluss/twoway

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

89 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This is my substring search workspace.

Please read the API documentation here

build_status crates

Documentation

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>

Recent Changes

  • 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 and pcmp both support this mode.
  • 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.
  • 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.
  • 0.1.1
    • Add rfind_bytes, rfind_str
  • 0.1.0
    • Initial release
    • Add find_bytes, find_str

License

MIT / APACHE-2.0

Interesting Links

Notes

Consider denying 0/n factorizations, see http://lists.gnu.org/archive/html/bug-gnulib/2010-06/msg00184.html

About

Twoway / Fast substring search for strings and byte strings (Rust) / Also assorted benchmarks and string search snippets

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •