Searcher in std::str::pattern - Rust (original) (raw)

pub unsafe trait Searcher<'a> {
    // Required methods
    fn haystack(&self) -> &'a str;
    fn next(&mut self) -> SearchStep;

    // Provided methods
    fn next_match(&mut self) -> Option<(usize, usize)> { ... }
    fn next_reject(&mut self) -> Option<(usize, usize)> { ... }
}

🔬This is a nightly-only experimental API. (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 Searchertypes of the Pattern trait.

The trait is marked unsafe because the indices returned by thenext() 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.

Source

🔬This is a nightly-only experimental API. (pattern #27721)

Getter for the underlying string to be searched in

Will always return the same &str.

Source

🔬This is a nightly-only experimental API. (pattern #27721)

Performs the next search step starting from the front.

The stream of Match andReject values up to a Donewill 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)]

Source

🔬This is a nightly-only experimental API. (pattern #27721)

Finds the next Match result. See next().

Unlike next(), there is no guarantee that the returned ranges of this and next_reject will overlap. This will return(start_match, end_match), where start_match is the index of where the match begins, and end_match is the index after the end of the match.

Source

🔬This is a nightly-only experimental API. (pattern #27721)