Struct wu_manber::TwoByteWM

source ·
pub struct TwoByteWM { /* private fields */ }
Expand description

TwoByteWM stores the precomputed tables needed for a two-byte-wide implementation of the Wu-Manber algorithm.

“Two-byte-wide” means that the search phase in the Wu-Manber algorithm uses spans of two bytes to look for potential matches. This is suitable for moderately sized sets of needles; if there are too many needles then it might be faster to use spans of three bytes (but that isn’t yet implemented by this crate).

Implementations§

source§

impl TwoByteWM

source

pub fn new<I, P>(needles: I) -> TwoByteWM
where P: AsRef<[u8]>, I: IntoIterator<Item = P>,

Creates lookup tables to efficiently search for the given needles.

The order of needles is significant, since all Matches returned from this TwoByteWM will include an index into needles saying which needle matched.

source

pub fn find_from<P>(&self, haystack: P, offset: usize) -> Option<Match>
where P: AsRef<[u8]>,

Searches for a single match, starting from the given byte offset.

source

pub fn find<'a, 'b, P>(&'a self, haystack: P) -> Matches<'a, P>
where P: AsRef<[u8]> + 'b,

Returns an iterator over non-overlapping matches.

Trait Implementations§

source§

impl Debug for TwoByteWM

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.