Struct Repetition
pub struct Repetition { pub min: u32, pub max: Option<u32>, pub greedy: bool, pub sub: Box<Hir> }
The high-level intermediate representation of a repetition operator.
A repetition operator permits the repetition of an arbitrary sub-expression.
Fields
min: u32The minimum range of the repetition.
Note that special cases like
?,+and*all get translated into the ranges{0,1},{1,}and{0,}, respectively.When
minis 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
maxisNone,minacts as a lower bound but where there is no upper bound. For something likex{5}where the min and max are equivalent,minwill be set to5andmaxwill be set toSome(5).greedy: boolWhether 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 theU"ungreedy" flag.sub: Box<Hir>The expression being repeated.
Implementations
impl Repetition
fn with(&self, sub: Hir) -> RepetitionReturns a new repetition with the same
min,maxandgreedyvalues, but with its sub-expression replaced with the one given.
Trait Implementations
impl Clone for Repetition
fn clone(&self) -> Self
impl Debug for Repetition
fn fmt(&self, f: &mut Formatter<'_>) -> Result
impl Eq for Repetition
impl PartialEq for Repetition
fn eq(&self, other: &Self) -> bool
impl StructuralPartialEq for Repetition
Auto Trait Implementations
impl Freeze for Repetition
impl RefUnwindSafe for Repetition
impl Send for Repetition
impl Sync for Repetition
impl Unpin for Repetition
impl UnsafeUnpin for Repetition
impl UnwindSafe for Repetition
Blanket Implementations
impl<T> Any for Repetition
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for Repetition
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for Repetition
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> CloneToUninit for Repetition
where
T: Clone,
unsafe fn clone_to_uninit(&self, dest: *mut u8)
impl<T> From<T> for Repetition
fn from(t: T) -> TReturns the argument unchanged.
impl<T> ToOwned for Repetition
where
T: Clone,
type Owned = T;fn to_owned(&self) -> Tfn clone_into(&self, target: &mut T)
impl<T, U> Into<U> for Repetition
where
U: From<T>,
fn into(self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom<U> for Repetition
where
U: Into<T>,
type Error = never;fn try_from(value: U) -> Result<T, never>
impl<T, U> TryInto<U> for Repetition
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>