Trait creusot_contracts::std::str::pattern::DoubleEndedSearcher

source ·
pub trait DoubleEndedSearcher<'a>: ReverseSearcher<'a> { }
🔬This is a nightly-only experimental API. (pattern)
Expand description

A marker trait to express that a ReverseSearcher can be used for a DoubleEndedIterator implementation.

For this, the impl of Searcher and ReverseSearcher need to follow these conditions:

  • All results of next() need to be identical to the results of next_back() in reverse order.
  • next() and next_back() need to behave as the two ends of a range of values, that is they can not “walk past each other”.

§Examples

char::Searcher is a DoubleEndedSearcher because searching for a char only requires looking at one at a time, which behaves the same from both ends.

(&str)::Searcher is not a DoubleEndedSearcher because the pattern "aa" in the haystack "aaa" matches as either "[aa]a" or "a[aa]", depending on which side it is searched.

Implementors§

source§

impl<'a> DoubleEndedSearcher<'a> for CharSearcher<'a>

source§

impl<'a, 'b> DoubleEndedSearcher<'a> for CharSliceSearcher<'a, 'b>

source§

impl<'a, 'b, const N: usize> DoubleEndedSearcher<'a> for CharArrayRefSearcher<'a, 'b, N>

source§

impl<'a, F> DoubleEndedSearcher<'a> for CharPredicateSearcher<'a, F>
where F: FnMut(char) -> bool,

source§

impl<'a, const N: usize> DoubleEndedSearcher<'a> for CharArraySearcher<'a, N>