memchr::arch::all::packedpair

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

§

impl Freeze for Finder

§

impl RefUnwindSafe for Finder

§

impl Send for Finder

§

impl Sync for Finder

§

impl Unpin for Finder

§

impl UnwindSafe for Finder

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

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>,

Source§

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.

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 4 bytes