pub struct Repetition {
pub min: u32,
pub max: Option<u32>,
pub greedy: bool,
pub sub: Box<Hir>,
}
Expand description
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§
source§impl Repetition
impl Repetition
sourcepub fn with(&self, sub: Hir) -> Repetition
pub fn with(&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.
Trait Implementations§
source§impl Clone for Repetition
impl Clone for Repetition
source§fn clone(&self) -> Repetition
fn clone(&self) -> Repetition
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for Repetition
impl Debug for Repetition
source§impl PartialEq for Repetition
impl PartialEq for Repetition
impl Eq for Repetition
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 UnwindSafe for Repetition
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)