pub trait Pattern: Sized {
type Searcher<'a>: Searcher<'a>;
// Required method
fn into_searcher(self, haystack: &str) -> Self::Searcher<'_>;
// Provided methods
fn is_prefix_of(self, haystack: &str) -> bool { ... }
fn is_suffix_of<'a>(self, haystack: &'a str) -> bool
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 behavior of methods like
str::find and [str::contains] can change. The table below describes
some of those behaviors.
| 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 | F returns true for 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_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
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.