Struct regex_automata::util::search::Match

source ·
pub struct Match {
    pattern: PatternID,
    span: Span,
}
Expand description

A representation of a match reported by a regex engine.

A match has two essential pieces of information: the PatternID that matches, and the Span of the match in a haystack.

The pattern is identified by an ID, which corresponds to its position (starting from 0) relative to other patterns used to construct the corresponding regex engine. If only a single pattern is provided, then all matches are guaranteed to have a pattern ID of 0.

Every match reported by a regex engine guarantees that its span has its start offset as less than or equal to its end offset.

Fields§

§pattern: PatternID

The pattern ID.

§span: Span

The underlying match span.

Implementations§

source§

impl Match

source

pub fn new<S: Into<Span>>(pattern: PatternID, span: S) -> Match

Create a new match from a pattern ID and a span.

This constructor is generic over how a span is provided. While a Span may be given directly, one may also provide a std::ops::Range<usize>.

§Panics

This panics if end < start.

§Example

This shows how to create a match for the first pattern in a regex object using convenient range syntax.

use regex_automata::{Match, PatternID};

let m = Match::new(PatternID::ZERO, 5..10);
assert_eq!(0, m.pattern().as_usize());
assert_eq!(5, m.start());
assert_eq!(10, m.end());
source

pub fn must<S: Into<Span>>(pattern: usize, span: S) -> Match

Create a new match from a pattern ID and a byte offset span.

This constructor is generic over how a span is provided. While a Span may be given directly, one may also provide a std::ops::Range<usize>.

This is like Match::new, but accepts a usize instead of a PatternID. This panics if the given usize is not representable as a PatternID.

§Panics

This panics if end < start or if pattern > PatternID::MAX.

§Example

This shows how to create a match for the third pattern in a regex object using convenient range syntax.

use regex_automata::Match;

let m = Match::must(3, 5..10);
assert_eq!(3, m.pattern().as_usize());
assert_eq!(5, m.start());
assert_eq!(10, m.end());
source

pub fn pattern(&self) -> PatternID

Returns the ID of the pattern that matched.

The ID of a pattern is derived from the position in which it was originally inserted into the corresponding regex engine. The first pattern has identifier 0, and each subsequent pattern is 1, 2 and so on.

source

pub fn start(&self) -> usize

The starting position of the match.

This is a convenience routine for Match::span().start.

source

pub fn end(&self) -> usize

The ending position of the match.

This is a convenience routine for Match::span().end.

source

pub fn range(&self) -> Range<usize>

Returns the match span as a range.

This is a convenience routine for Match::span().range().

source

pub fn span(&self) -> Span

Returns the span for this match.

source

pub fn is_empty(&self) -> bool

Returns true when the span in this match is empty.

An empty match can only be returned when the regex itself can match the empty string.

source

pub fn len(&self) -> usize

Returns the length of this match.

This returns 0 in precisely the cases that is_empty returns true.

Trait Implementations§

source§

impl Clone for Match

source§

fn clone(&self) -> Match

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 Match

source§

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

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

impl Hash for Match

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for Match

source§

fn eq(&self, other: &Match) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for Match

source§

impl Eq for Match

source§

impl StructuralPartialEq for Match

Auto Trait Implementations§

§

impl Freeze for Match

§

impl RefUnwindSafe for Match

§

impl Send for Match

§

impl Sync for Match

§

impl Unpin for Match

§

impl UnwindSafe for Match

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

§

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

§

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.