Struct Repetition

struct Repetition { ... }

The high-level intermediate representation of a repetition operator.

A repetition operator permits the repetition of an arbitrary sub-expression.

Fields

min: u32

The minimum range of the repetition.

Note that special cases like ?, + and * all get translated into the ranges {0,1}, {1,} and {0,}, respectively.

When min is zero, this expression can match the empty string regardless of what its sub-expression is.

max: Option<u32>

The maximum range of the repetition.

Note that when max is None, min acts as a lower bound but where there is no upper bound. For something like x{5} where the min and max are equivalent, min will be set to 5 and max will be set to Some(5).

greedy: bool

Whether this repetition operator is greedy or not. A greedy operator will match as much as it can. A non-greedy operator will match as little as it can.

Typically, operators are greedy by default and are only non-greedy when a ? suffix is used, e.g., (expr)* is greedy while (expr)*? is not. However, this can be inverted via the U "ungreedy" flag.

sub: Box<Hir>

The expression being repeated.

Implementations

impl Repetition

fn with(self: &Self, sub: Hir) -> Repetition

Returns a new repetition with the same min, max and greedy values, but with its sub-expression replaced with the one given.

impl Clone for Repetition

fn clone(self: &Self) -> Repetition

impl Debug for Repetition

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

impl Eq for Repetition

impl Freeze for Repetition

impl PartialEq for Repetition

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

impl RefUnwindSafe for Repetition

impl Send for Repetition

impl StructuralPartialEq for Repetition

impl Sync for Repetition

impl Unpin for Repetition

impl UnsafeUnpin for Repetition

impl UnwindSafe for Repetition

impl<T> Any for Repetition

fn type_id(self: &Self) -> TypeId

impl<T> Borrow for Repetition

fn borrow(self: &Self) -> &T

impl<T> BorrowMut for Repetition

fn borrow_mut(self: &mut Self) -> &mut T

impl<T> CloneToUninit for Repetition

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

impl<T> From for Repetition

fn from(t: T) -> T

Returns the argument unchanged.

impl<T> ToOwned for Repetition

fn to_owned(self: &Self) -> T
fn clone_into(self: &Self, target: &mut T)

impl<T, U> Into for Repetition

fn into(self: Self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of [From]<T> for U chooses to do.

impl<T, U> TryFrom for Repetition

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

impl<T, U> TryInto for Repetition

fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error>