pub trait Pattern: Sized {
    type Searcher<'a>: Searcher<'a>;
    // Required method
    fn into_searcher(self, haystack: &str) -> Self::Searcher<'_>;
    // Provided methods
    fn is_contained_in(self, haystack: &str) -> bool { ... }
    fn is_prefix_of(self, haystack: &str) -> bool { ... }
    fn is_suffix_of<'a>(self, haystack: &'a str) -> bool
       where Self::Searcher<'a>: ReverseSearcher<'a> { ... }
    fn strip_prefix_of(self, haystack: &str) -> Option<&str> { ... }
    fn strip_suffix_of<'a>(self, haystack: &'a str) -> Option<&'a str>
       where Self::Searcher<'a>: ReverseSearcher<'a> { ... }
}pattern #27721)Expand description
A string pattern.
A Pattern expresses that the implementing type
can be used as a string pattern for searching in a &str.
For example, both 'a' and "aa" are patterns that
would match at index 1 in the string "baaaab".
The trait itself acts as a builder for an associated
Searcher type, which does the actual work of finding
occurrences of the pattern in a string.
Depending on the type of the pattern, the behaviour of methods like
str::find and str::contains can change. The table below describes
some of those behaviours.
| Pattern type | Match condition | 
|---|---|
| &str | is substring | 
| char | is contained in string | 
| &[char] | any char in slice is contained in string | 
| F: FnMut(char) -> bool | Freturnstruefor a char in string | 
| &&str | is substring | 
| &String | is substring | 
§Examples
// &str
assert_eq!("abaaa".find("ba"), Some(1));
assert_eq!("abaaa".find("bac"), None);
// char
assert_eq!("abaaa".find('a'), Some(0));
assert_eq!("abaaa".find('b'), Some(1));
assert_eq!("abaaa".find('c'), None);
// &[char; N]
assert_eq!("ab".find(&['b', 'a']), Some(0));
assert_eq!("abaaa".find(&['a', 'z']), Some(0));
assert_eq!("abaaa".find(&['c', 'd']), None);
// &[char]
assert_eq!("ab".find(&['b', 'a'][..]), Some(0));
assert_eq!("abaaa".find(&['a', 'z'][..]), Some(0));
assert_eq!("abaaa".find(&['c', 'd'][..]), None);
// FnMut(char) -> bool
assert_eq!("abcdef_z".find(|ch| ch > 'd' && ch < 'y'), Some(4));
assert_eq!("abcddd_z".find(|ch| ch > 'd' && ch < 'y'), None);Required Associated Types§
Required Methods§
sourcefn into_searcher(self, haystack: &str) -> Self::Searcher<'_>
 🔬This is a nightly-only experimental API. (pattern #27721)
fn into_searcher(self, haystack: &str) -> Self::Searcher<'_>
pattern #27721)Constructs the associated searcher from
self and the haystack to search in.
Provided Methods§
sourcefn is_contained_in(self, haystack: &str) -> bool
 🔬This is a nightly-only experimental API. (pattern #27721)
fn is_contained_in(self, haystack: &str) -> bool
pattern #27721)Checks whether the pattern matches anywhere in the haystack
sourcefn is_prefix_of(self, haystack: &str) -> bool
 🔬This is a nightly-only experimental API. (pattern #27721)
fn is_prefix_of(self, haystack: &str) -> bool
pattern #27721)Checks whether the pattern matches at the front of the haystack
sourcefn is_suffix_of<'a>(self, haystack: &'a str) -> boolwhere
    Self::Searcher<'a>: ReverseSearcher<'a>,
 🔬This is a nightly-only experimental API. (pattern #27721)
fn is_suffix_of<'a>(self, haystack: &'a str) -> boolwhere
    Self::Searcher<'a>: ReverseSearcher<'a>,
pattern #27721)Checks whether the pattern matches at the back of the haystack
sourcefn strip_prefix_of(self, haystack: &str) -> Option<&str>
 🔬This is a nightly-only experimental API. (pattern #27721)
fn strip_prefix_of(self, haystack: &str) -> Option<&str>
pattern #27721)Removes the pattern from the front of haystack, if it matches.
sourcefn strip_suffix_of<'a>(self, haystack: &'a str) -> Option<&'a str>where
    Self::Searcher<'a>: ReverseSearcher<'a>,
 🔬This is a nightly-only experimental API. (pattern #27721)
fn strip_suffix_of<'a>(self, haystack: &'a str) -> Option<&'a str>where
    Self::Searcher<'a>: ReverseSearcher<'a>,
pattern #27721)Removes the pattern from the back of haystack, if it matches.
Object Safety§
Implementors§
source§impl Pattern for char
 
impl Pattern for char
type Searcher<'a> = CharSearcher<'a>
source§impl<'b> Pattern for &'b str
 
impl<'b> Pattern for &'b str
Non-allocating substring search.
Will handle the pattern "" as returning empty matches at each character
boundary.
§Examples
type Searcher<'a> = StrSearcher<'a, 'b>
source§impl<'b> Pattern for &'b String
 
impl<'b> Pattern for &'b String
A convenience impl that delegates to the impl for &str.
§Examples
source§impl<'b> Pattern for &'b [char]
 
impl<'b> Pattern for &'b [char]
type Searcher<'a> = CharSliceSearcher<'a, 'b>
source§impl<'b, 'c> Pattern for &'c &'b str
 
impl<'b, 'c> Pattern for &'c &'b str
Delegates to the &str impl.