pub enum Rbe<K, V, R>{
Fail {
error: RbeError<K, V, R>,
},
Empty,
Symbol {
key: K,
cond: MatchCond<K, V, R>,
card: Cardinality,
},
And {
exprs: Vec<Rbe<K, V, R>>,
},
Or {
exprs: Vec<Rbe<K, V, R>>,
},
Star {
expr: Box<Rbe<K, V, R>>,
},
Plus {
expr: Box<Rbe<K, V, R>>,
},
Repeat {
expr: Box<Rbe<K, V, R>>,
card: Cardinality,
},
}
Variants§
Implementations§
Source§impl<K, V, R> Rbe<K, V, R>
impl<K, V, R> Rbe<K, V, R>
pub fn empty() -> Rbe<K, V, R>
pub fn symbol(key: K, min: usize, max: Max) -> Rbe<K, V, R>
pub fn symbol_cond( key: K, cond: MatchCond<K, V, R>, min: Min, max: Max, ) -> Rbe<K, V, R>
pub fn or<I>(exprs: I) -> Rbe<K, V, R>where
I: IntoIterator<Item = Rbe<K, V, R>>,
pub fn and<I>(exprs: I) -> Rbe<K, V, R>where
I: IntoIterator<Item = Rbe<K, V, R>>,
pub fn opt(v: Rbe<K, V, R>) -> Rbe<K, V, R>
pub fn plus(expr: Rbe<K, V, R>) -> Rbe<K, V, R>
pub fn star(expr: Rbe<K, V, R>) -> Rbe<K, V, R>
pub fn repeat(expr: Rbe<K, V, R>, min: usize, max: Max) -> Rbe<K, V, R>
pub fn is_fail(&self) -> bool
pub fn symbols(&self) -> HashSet<K>
pub fn nullable(&self) -> bool
Sourcepub fn deriv(
&self,
symbol: &K,
value: &V,
n: usize,
open: bool,
controlled: &HashSet<K>,
pending: &mut Pending<V, R>,
) -> Rbe<K, V, R>
pub fn deriv( &self, symbol: &K, value: &V, n: usize, open: bool, controlled: &HashSet<K>, pending: &mut Pending<V, R>, ) -> Rbe<K, V, R>
Calculates the derivative of a rbe
for a symbol
with value
open indicates if we allow extra symbols
controlled
contains the list of symbols controlled by the rbe
that should not be assumed as extra symbols
pending
Trait Implementations§
Source§impl<'de, K, V, R> Deserialize<'de> for Rbe<K, V, R>
impl<'de, K, V, R> Deserialize<'de> for Rbe<K, V, R>
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl<K, V, R> Eq for Rbe<K, V, R>
impl<K, V, R> StructuralPartialEq for Rbe<K, V, R>
Auto Trait Implementations§
impl<K, V, R> Freeze for Rbe<K, V, R>where
K: Freeze,
impl<K, V, R> !RefUnwindSafe for Rbe<K, V, R>
impl<K, V, R> !Send for Rbe<K, V, R>
impl<K, V, R> !Sync for Rbe<K, V, R>
impl<K, V, R> Unpin for Rbe<K, V, R>
impl<K, V, R> !UnwindSafe for Rbe<K, V, R>
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key
and return true
if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more