Trait std::str::pattern::Searcher
[−]
[src]
pub unsafe trait Searcher<'a> {
fn haystack(&self) -> &'a str;
fn next(&mut self) -> SearchStep;
fn next_match(&mut self) -> Option<(usize, usize)> { ... }
fn next_reject(&mut self) -> Option<(usize, usize)> { ... }
}A searcher for a string pattern.
This trait provides methods for searching for non-overlapping matches of a pattern starting from the front (left) of a string.
It will be implemented by associated Searcher`Searchertypes of the`
types of the Pattern`Pattern` trait.
The trait is marked unsafe because the indices returned by the
next()`next()` methods are required to lie on valid utf8 boundaries in
the haystack. This enables consumers of this trait to
slice the haystack without additional runtime checks.
Required Methods
fn haystack(&self) -> &'a str
Getter for the underlaying string to be searched in
Will always return the same &str`&str`
fn next(&mut self) -> SearchStep
Performs the next search step starting from the front.
- Returns
Match(a, b)`Match(a, b)if` ifhaystack[a..b]`haystack[a..b]` matches the pattern. - Returns
Reject(a, b)`Reject(a, b)if` ifhaystack[a..b]`haystack[a..b]` can not match the pattern, even partially. - Returns
Done`Done` if every byte of the haystack has been visited
The stream of Match`Matchand` and Reject`Rejectvalues up to a` values up to a Done`Done`
will contain index ranges that are adjacent, non-overlapping,
covering the whole haystack, and laying on utf8 boundaries.
A Match`Matchresult needs to contain the whole matched pattern, however` result needs to contain the whole matched pattern,
however Reject`Reject` results may be split up into arbitrary
many adjacent fragments. Both ranges may have zero length.
As an example, the pattern "aaa"`"aaa"and the haystack` and the haystack "cbaaaaab"`"cbaaaaab"might produce the stream`
might produce the stream
[Reject(0, 1), Reject(1, 2), Match(2, 5), Reject(5, 8)]`[Reject(0, 1), Reject(1, 2), Match(2, 5), Reject(5, 8)]`
Provided Methods
fn next_match(&mut self) -> Option<(usize, usize)>
Find the next Match`Matchresult. See` result. See next()`next()`
fn next_reject(&mut self) -> Option<(usize, usize)>
Find the next Reject`Rejectresult. See` result. See next()`next()`
Implementors
impl<'a, C> Searcher<'a> for CharEqSearcher<'a, C> where C: CharEqimpl<'a, 'b> Searcher<'a> for StrSearcher<'a, 'b>impl<'a> Searcher<'a> for CharSearcher<'a>impl<'a, 'b> Searcher<'a> for CharSliceSearcher<'a, 'b>impl<'a, F> Searcher<'a> for CharPredicateSearcher<'a, F> where F: FnMut(char) -> bool