pub unsafe trait Searcher<'a> {
// Required method
fn next(&mut self) -> SearchStep;
}pattern #27721)Expand description
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
types of the Pattern trait.
The trait is marked unsafe because the indices returned by the
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§
Sourcefn next(&mut self) -> SearchStep
🔬This is a nightly-only experimental API. (pattern #27721)
fn next(&mut self) -> SearchStep
pattern #27721)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
Doneif every byte of the haystack has been visited.
The stream of Match and
Reject values up to a Done
will contain index ranges that are adjacent, non-overlapping,
covering the whole haystack, and laying on utf8 boundaries.
A Match result 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" and the haystack "cbaaaaab"
might produce the stream
[Reject(0, 1), Reject(1, 2), Match(2, 5), Reject(5, 8)]