Struct Finder
pub struct Finder { /* private fields */ }
An architecture independent "packed pair" finder.
This finder picks two bytes that it believes have high predictive power for indicating an overall match of a needle. At search time, it reports offsets where the needle could match based on whether the pair of bytes it chose match.
This is architecture independent because it utilizes memchr to find the
occurrence of one of the bytes in the pair, and then checks whether the
second byte matches. If it does, in the case of Finder::find_prefilter,
the location at which the needle could match is returned.
It is generally preferred to use architecture specific routines for a "packed pair" prefilter, but this can be a useful fallback when the architecture independent routines are unavailable.
Implementations
impl Finder
fn new(needle: &[u8]) -> Option<Finder>Create a new prefilter that reports possible locations where the given needle matches.
fn with_pair(needle: &[u8], pair: Pair) -> Option<Finder>Create a new prefilter using the pair given.
If the prefilter could not be constructed, then
Noneis returned.This constructor permits callers to control precisely which pair of bytes is used as a predicate.
fn find_prefilter(&self, haystack: &[u8]) -> Option<usize>Run this finder on the given haystack as a prefilter.
If a candidate match is found, then an offset where the needle could begin in the haystack is returned.
fn pair(&self) -> &PairReturns the pair of offsets (into the needle) used to check as a predicate before confirming whether a needle exists at a particular position.
Trait Implementations
impl Clone for Finder
fn clone(&self) -> Self
impl Copy for Finder
impl Debug for Finder
fn fmt(&self, f: &mut Formatter<'_>) -> Result
Auto Trait Implementations
impl Freeze for Finder
impl RefUnwindSafe for Finder
impl Send for Finder
impl Sync for Finder
impl Unpin for Finder
impl UnsafeUnpin for Finder
impl UnwindSafe for Finder
Blanket Implementations
impl<T> Any for Finder
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for Finder
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for Finder
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> CloneToUninit for Finder
where
T: Clone,
unsafe fn clone_to_uninit(&self, dest: *mut u8)
impl<T> From<T> for Finder
fn from(t: T) -> TReturns the argument unchanged.
impl<T> ToOwned for Finder
where
T: Clone,
type Owned = T;fn to_owned(&self) -> Tfn clone_into(&self, target: &mut T)
impl<T, U> Into<U> for Finder
where
U: From<T>,
fn into(self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom<U> for Finder
where
U: Into<T>,
type Error = never;fn try_from(value: U) -> Result<T, never>
impl<T, U> TryInto<U> for Finder
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>