Struct Pattern

Source
pub struct Pattern<const ALIGNMENT: usize = 1, const BYTES: usize = DEFAULT_BYTES>{ /* private fields */ }
Expand description

A prepared pattern. Allows to search for a given byte sequence in data. Supports masking and alignment requirements.

BYTES determines the LANES size. Every block of data is processed in chunks of BYTES bytes. Rust will compile this to other targets without issue, but will use inner loops for that. It is also the max length for patterns.

Implementations§

Source§

impl<const ALIGNMENT: usize, const BYTES: usize> Pattern<ALIGNMENT, BYTES>

Source

pub const fn new(pattern: &str) -> Self

Parse a pattern. Use Pattern::from_str to return an error instead of panicking.

§Panics

Panics if ParsePatternError is returned.

Source

pub fn from_slice(bytes: &[u8], mask: u64) -> Self

Create a pattern from a byte slice and a mask. Byte slices longer than BYTES are cut short. Mask expects a u64 bitencoding. A 0 bit marks the byte as wildcard. Mask is trimmed to bytes.len().

§Panics

Panics when all bytes are masked as wildcards.

Source

pub const fn from_str(s: &str) -> Result<Self, ParsePatternError>

Parses a string to a pattern.

Expected format:

? 1A . B4 ?? e0 .. 5f

? and . mark wildcards. Only the first character is checked for wildcards. 10 .error 00 is equivalent to 10 ? 00.

Source

pub fn matches<'pattern, 'data>( &'pattern self, data: &'data [u8], ) -> Scanner<'pattern, 'data, ALIGNMENT, BYTES>

Creates an Iterator over data.

Trait Implementations§

Source§

impl<const ALIGNMENT: usize, const BYTES: usize> Clone for Pattern<ALIGNMENT, BYTES>

Source§

fn clone(&self) -> Pattern<ALIGNMENT, BYTES>

Returns a duplicate 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<const ALIGNMENT: usize, const BYTES: usize> Debug for Pattern<ALIGNMENT, BYTES>

Source§

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

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

impl<const ALIGNMENT: usize, const BYTES: usize> FromStr for Pattern<ALIGNMENT, BYTES>

Source§

type Err = ParsePatternError

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more

Auto Trait Implementations§

§

impl<const ALIGNMENT: usize, const BYTES: usize> Freeze for Pattern<ALIGNMENT, BYTES>

§

impl<const ALIGNMENT: usize, const BYTES: usize> RefUnwindSafe for Pattern<ALIGNMENT, BYTES>

§

impl<const ALIGNMENT: usize, const BYTES: usize> Send for Pattern<ALIGNMENT, BYTES>

§

impl<const ALIGNMENT: usize, const BYTES: usize> Sync for Pattern<ALIGNMENT, BYTES>

§

impl<const ALIGNMENT: usize, const BYTES: usize> Unpin for Pattern<ALIGNMENT, BYTES>

§

impl<const ALIGNMENT: usize, const BYTES: usize> UnwindSafe for Pattern<ALIGNMENT, BYTES>

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, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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>,

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.