# Module std::str::pattern

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

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));
    // array of chars pattern
    assert_eq!(s.find(&['a', 'e', 'i', 'o', 'u']), Some(1));
    // 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

- CharArrayRefSearcher Experimental
  Associated type for `<&[char; N] as Pattern<'a>>::Searcher`.
- CharArraySearcher Experimental
  Associated type for `<[char; N] as Pattern<'a>>::Searcher`.
- 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.