Struct memchr::arch::all::packedpair::Finder

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

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§

source§

impl Finder

source

pub fn new(needle: &[u8]) -> Option<Finder>

Create a new prefilter that reports possible locations where the given needle matches.

source

pub 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 None is returned.

This constructor permits callers to control precisely which pair of bytes is used as a predicate.

source

pub 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.

source

pub fn pair(&self) -> &Pair

Returns 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§

source§

impl Clone for Finder

source§

fn clone(&self) -> Finder

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Finder

source§

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

Formats the value using the given formatter. Read more
source§

impl Copy for Finder

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.