# Module core::str::pattern[−][src]

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

API not fully fleshed out and ready to be stabilized

The string Pattern API.

The Pattern API provides a generic mechanism for using different pattern types when searching through a string.

For more details, see the traits `Pattern`, `Searcher`, `ReverseSearcher`, and `DoubleEndedSearcher`.

Although this API is unstable, it is exposed via stable APIs on the `str` type.

# Examples

`Pattern` is implemented in the stable API for `&str`, `char`, slices of `char`, and functions and closures implementing `FnMut(char) -> bool`.

    let s = "Can you find a needle in a haystack?";

    // &str pattern
    assert_eq!(s.find("you"), Some(4));
    // char pattern
    assert_eq!(s.find('n'), Some(2));
    // slice of chars pattern
    assert_eq!(s.find(&['a', 'e', 'i', 'o', 'u'][..]), Some(1));
    // closure pattern
    assert_eq!(s.find(|c: char| c.is_ascii_punctuation()), Some(35));

Run

## Structs

CharPredicateSearcher | Experimental Associated type for `<F as Pattern<'a>>::Searcher`.
CharSearcher | Experimental Associated type for `<char as Pattern<'a>>::Searcher`.
CharSliceSearcher | Experimental Associated type for `<&[char] as Pattern<'a>>::Searcher`.
StrSearcher | Experimental Associated type for `<&str as Pattern<'a>>::Searcher`.

## Enums

SearchStep | Experimental Result of calling `Searcher::next()` or `ReverseSearcher::next_back()`.

## Traits

DoubleEndedSearcher | Experimental A marker trait to express that a `ReverseSearcher` can be used for a `DoubleEndedIterator` implementation.
Pattern | Experimental A string pattern.
ReverseSearcher | Experimental A reverse searcher for a string pattern.
Searcher | Experimental A searcher for a string pattern.