Trait collections::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)> { ... } }
: API not fully fleshed out and ready to be stabilized
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
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
: API not fully fleshed out and ready to be stabilized
Getter for the underlaying string to be searched in
Will always return the same &str
`&str`
fn next(&mut self) -> SearchStep
: API not fully fleshed out and ready to be stabilized
Performs the next search step starting from the front.
- Returns
Match(a, b)
ifhaystack[a..b]
matches the pattern. - Returns
Reject(a, b)
ifhaystack[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
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
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
"cbaaaaab"might produce the stream
[Reject(0, 1), Reject(1, 2), Match(2, 5), Reject(5, 8)]`
Provided Methods
fn next_match(&mut self) -> Option<(usize, usize)>
: API not fully fleshed out and ready to be stabilized
Find the next Match
`Matchresult. See
next()`
fn next_reject(&mut self) -> Option<(usize, usize)>
: API not fully fleshed out and ready to be stabilized
Find the next Reject
`Rejectresult. See
next()`
Implementors
impl<'a, C> Searcher<'a> for CharEqSearcher<'a, C> where C: CharEq
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
impl<'a, 'b> Searcher<'a> for StrSearcher<'a, 'b>