needle
Search algorithms written in Rust
Boyer-Moore and BM-Horspool are supported, and can be used to search in arrays of any Copy
type, with a few restrictions.
When you only need to search in bytes, without special consideration for unicode characters, this
implementation is often faster than the Rust standard library's &str::find()
.
Examples
The interfaces for BoyerMoore and Horspool are essentially the same. This example uses Boyer-Moore to find all instances of "Peter Piper" in the text.
use BoyerMoore;
let haystack = b"Peter Piper picked a peck of pickled peppers.\
A peck of pickled peppers Peter Piper picked.\
If Peter Piper picked a peck of pickled peppers,\
Where's the peck of pickled peppers Peter Piper picked?";
let needle = new;
for i in needle.find_in
In general, the fastest searches are over bytes. But you can search other alphabets if it's convenient. For example:
use Horspool;
// An Into<usize> impl is required for the search alphabet
// Convenience to create an RNA chain from a string representation