Pattern

Trait Pattern 

Source
pub trait Pattern<'a, Reference>
where Reference: Iterator,
{ type Iter: Iterator; type Dest; // Required method fn get_iter(&'a self) -> Self::Iter; // Provided methods fn get_dest_mut(&self) -> Option<RefMut<'_, Self::Dest>> { ... } fn matches<'s, R>(&'a self, reference: &'s R) -> bool where R: Iterable<'s, Iter = Reference> + 's, Self::Dest: Destination<Reference::Item>, Reference: PeekableExt, Reference::Item: Satisfies<<Self::Iter as Iterator>::Item> { ... } fn consume_with_dest( &'a self, reference_iter: &mut Reference, dest: Option<&RefCell<Self::Dest>>, ) -> bool where Reference: PeekableExt, Self::Dest: Destination<Reference::Item>, Reference::Item: Satisfies<<Self::Iter as Iterator>::Item> { ... } fn consume(&'a self, reference_iter: &mut Reference) -> bool where Reference: PeekableExt, Self::Dest: Destination<Reference::Item>, Reference::Item: Satisfies<<Self::Iter as Iterator>::Item> { ... } }
Expand description

A trait for pattern types that can match against a reference iterator.

Required Associated Types§

Required Methods§

Source

fn get_iter(&'a self) -> Self::Iter

Get an iterator over the pattern’s items.

Provided Methods§

Source

fn get_dest_mut(&self) -> Option<RefMut<'_, Self::Dest>>

Get a mutable reference to the pattern’s internal destination, if any.

Source

fn matches<'s, R>(&'a self, reference: &'s R) -> bool
where R: Iterable<'s, Iter = Reference> + 's, Self::Dest: Destination<Reference::Item>, Reference: PeekableExt, Reference::Item: Satisfies<<Self::Iter as Iterator>::Item>,

Match the pattern against the reference iterator.

Source

fn consume_with_dest( &'a self, reference_iter: &mut Reference, dest: Option<&RefCell<Self::Dest>>, ) -> bool
where Reference: PeekableExt, Self::Dest: Destination<Reference::Item>, Reference::Item: Satisfies<<Self::Iter as Iterator>::Item>,

Consume items from the reference iterator, optionally storing matched items in a destination.

Source

fn consume(&'a self, reference_iter: &mut Reference) -> bool
where Reference: PeekableExt, Self::Dest: Destination<Reference::Item>, Reference::Item: Satisfies<<Self::Iter as Iterator>::Item>,

Consume items from the reference iterator.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<'a, Reference> Pattern<'a, Reference> for &'a str
where Reference: Iterator<Item = char> + PeekableExt,

Source§

impl<'a, Reference> Pattern<'a, Reference> for String
where Reference: Iterator<Item = char> + PeekableExt,

Source§

impl<'a, Reference, A, B, DA, DB> Pattern<'a, Reference> for (A, B)
where Reference: Iterator + PeekableExt, A: Pattern<'a, Reference, Dest = DA>, B: Pattern<'a, Reference, Dest = DB>, DA: Destination<Reference::Item> + Clone, DB: Destination<Reference::Item> + Clone, Reference::Item: Satisfies<<<A as Pattern<'a, Reference>>::Iter as Iterator>::Item> + Satisfies<<<B as Pattern<'a, Reference>>::Iter as Iterator>::Item> + Clone,

Source§

type Iter = Peekable<Empty<<Reference as Iterator>::Item>>

Source§

type Dest = (DA, DB)

Source§

fn get_iter(&'a self) -> Self::Iter

Source§

fn consume(&'a self, reference: &mut Reference) -> bool
where Reference::Item: Satisfies<<Self::Iter as Iterator>::Item>,

Source§

fn consume_with_dest( &'a self, reference_iter: &mut Reference, dest: Option<&RefCell<Self::Dest>>, ) -> bool
where Reference::Item: Satisfies<<Self::Iter as Iterator>::Item>,

Source§

impl<'a, Reference, A, D> Pattern<'a, Reference> for RangeTo<A>
where Reference: Iterator + Clone + PeekableExt, A: Pattern<'a, Reference, Dest = D>, D: Destination<Reference::Item> + Default + Clone, Reference::Item: Satisfies<<<A as Pattern<'a, Reference>>::Iter as Iterator>::Item> + Clone,

Source§

type Iter = Empty<<Reference as Iterator>::Item>

Source§

type Dest = Vec<D>

Source§

fn get_iter(&'a self) -> Self::Iter

Source§

fn consume_with_dest( &'a self, reference: &mut Reference, dest: Option<&RefCell<Self::Dest>>, ) -> bool
where Reference::Item: Satisfies<<Self::Iter as Iterator>::Item>,

Source§

impl<'a, Reference, A, D> Pattern<'a, Reference> for RangeToInclusive<A>
where Reference: Iterator + Clone + PeekableExt, A: Pattern<'a, Reference, Dest = D>, D: Destination<Reference::Item> + Default + Clone, Reference::Item: Satisfies<<<A as Pattern<'a, Reference>>::Iter as Iterator>::Item> + Clone,

Source§

type Iter = Empty<<Reference as Iterator>::Item>

Source§

type Dest = Vec<D>

Source§

fn get_iter(&'a self) -> Self::Iter

Source§

fn consume_with_dest( &'a self, reference: &mut Reference, dest: Option<&RefCell<Self::Dest>>, ) -> bool
where Reference::Item: Satisfies<<Self::Iter as Iterator>::Item>,

Source§

impl<'a, T, Reference> Pattern<'a, Reference> for &'a [T]
where T: 'a + Clone, Reference: Iterator<Item = &'a T> + PeekableExt, Reference::Item: Satisfies<&'a T>,

Source§

type Iter = Peekable<Iter<'a, T>>

Source§

type Dest = Vec<T>

Source§

fn get_iter(&'a self) -> Self::Iter

Source§

impl<'a, T, Reference> Pattern<'a, Reference> for Vec<T>
where T: 'a + Clone, Reference: Iterator<Item = &'a T> + PeekableExt, Reference::Item: Satisfies<&'a T>,

Source§

type Iter = Peekable<Iter<'a, T>>

Source§

type Dest = Vec<T>

Source§

fn get_iter(&'a self) -> Self::Iter

Implementors§

Source§

impl<'a, Reference, A, B, D> Pattern<'a, Reference> for Or<A, B>
where Reference: Iterator + Clone + PeekableExt, A: Pattern<'a, Reference, Dest = D>, B: Pattern<'a, Reference, Dest = D>, D: Destination<Reference::Item> + Clone, Reference::Item: Satisfies<<<A as Pattern<'a, Reference>>::Iter as Iterator>::Item> + Satisfies<<<B as Pattern<'a, Reference>>::Iter as Iterator>::Item>,

Source§

type Iter = Peekable<Empty<<Reference as Iterator>::Item>>

Source§

type Dest = D

Source§

impl<'a, Reference, A, D, const N: usize> Pattern<'a, Reference> for Seq<A, N>
where Reference: Iterator + Clone + PeekableExt, A: Pattern<'a, Reference, Dest = D>, D: Destination<Reference::Item> + Default, Reference::Item: Satisfies<<<A as Pattern<'a, Reference>>::Iter as Iterator>::Item>,

Source§

type Iter = Peekable<Empty<<Reference as Iterator>::Item>>

Source§

type Dest = Vec<D>

Source§

impl<'a, Reference, A, OutD, InD> Pattern<'a, Reference> for To<'a, A, OutD>
where Reference: Iterator + PeekableExt, A: Pattern<'a, Reference, Dest = InD>, InD: Destination<Reference::Item> + Default + Clone, OutD: Collector<InD, Reference::Item> + Destination<Reference::Item> + Clone,

Source§

type Iter = <A as Pattern<'a, Reference>>::Iter

Source§

type Dest = OutD

Source§

impl<'a, Reference, RefT, D> Pattern<'a, Reference> for Token<RefT, D>
where Reference: Iterator<Item = RefT> + Clone + PeekableExt,

Source§

type Iter = Empty<<Reference as Iterator>::Item>

Source§

type Dest = D

Source§

impl<'a, Reference, SepT, PatT, SD, PD> Pattern<'a, Reference> for Sep1<SepT, PatT>
where Reference: Iterator + Clone + PeekableExt, SepT: Pattern<'a, Reference, Dest = SD>, PatT: Pattern<'a, Reference, Dest = PD>, SD: Destination<Reference::Item> + Default + Clone, PD: Destination<Reference::Item> + Default + Clone, Reference::Item: Satisfies<<<SepT as Pattern<'a, Reference>>::Iter as Iterator>::Item> + Satisfies<<<PatT as Pattern<'a, Reference>>::Iter as Iterator>::Item> + Clone,

Source§

type Iter = Empty<<Reference as Iterator>::Item>

Source§

type Dest = Vec<(SD, PD)>

Source§

impl<'a, Reference, SepT, PatT, SD, PD> Pattern<'a, Reference> for Sep<SepT, PatT>
where Reference: Iterator + Clone + PeekableExt, SepT: Pattern<'a, Reference, Dest = SD>, PatT: Pattern<'a, Reference, Dest = PD>, SD: Destination<Reference::Item> + Default + Clone, PD: Destination<Reference::Item> + Default + Clone, Reference::Item: Satisfies<<<SepT as Pattern<'a, Reference>>::Iter as Iterator>::Item> + Satisfies<<<PatT as Pattern<'a, Reference>>::Iter as Iterator>::Item> + Clone,

Source§

type Iter = Empty<<Reference as Iterator>::Item>

Source§

type Dest = Vec<(SD, PD)>