pub struct Scanner<'a, B: BinaryView> { /* private fields */ }Expand description
Pattern scanner over a BinaryView.
Implementations§
Source§impl<'a, B: BinaryView> Scanner<'a, B>
impl<'a, B: BinaryView> Scanner<'a, B>
Sourcepub fn finds_code(&self, pat: &[Atom], save: &mut [Offset]) -> bool
pub fn finds_code(&self, pat: &[Atom], save: &mut [Offset]) -> bool
Returns true only when the pattern has exactly one code match.
Sourcepub fn required_slots(&self, pat: &[Atom]) -> usize
pub fn required_slots(&self, pat: &[Atom]) -> usize
Returns the minimum required save-slot buffer length for pat.
Allocate at least this many elements before calling Self::finds_code
or Self::matches_code/Matches::next.
Patterns produced by pattern::parse and pattern! always require at
least one slot because they include an implicit Save(0) base capture.
Sourcepub fn prepare_pattern(&self, pat: &[Atom]) -> PreparedPattern
pub fn prepare_pattern(&self, pat: &[Atom]) -> PreparedPattern
Prepares reusable scanner metadata for a parsed pattern.
Sourcepub fn prepare_pattern_str(
&self,
source: &str,
) -> Result<PreparedPattern, ParsePatError>
pub fn prepare_pattern_str( &self, source: &str, ) -> Result<PreparedPattern, ParsePatError>
Parses and prepares a pattern string for scanning.
This is slower than Self::prepare_pattern because it performs
runtime text parsing and allocates atom storage on each call.
Sourcepub fn finds_prepared(&self, pat: &PreparedPattern, save: &mut [Offset]) -> bool
pub fn finds_prepared(&self, pat: &PreparedPattern, save: &mut [Offset]) -> bool
Returns true only when a prepared pattern has exactly one code match.
Sourcepub fn matches_prepared<'p>(
&self,
pat: &'p PreparedPattern,
) -> Matches<'a, 'p, B>
pub fn matches_prepared<'p>( &self, pat: &'p PreparedPattern, ) -> Matches<'a, 'p, B>
Returns an iterator-like matcher for a prepared pattern.
Sourcepub fn matches_code<'p>(&self, pat: &'p [Atom]) -> Matches<'a, 'p, B>
pub fn matches_code<'p>(&self, pat: &'p [Atom]) -> Matches<'a, 'p, B>
Returns an iterator-like matcher for all code-range matches.
save buffers passed to Matches::next must be at least
self.required_slots(pat) elements long.