pub trait Pattern: Sized {
type Searcher<'a>: Searcher<'a>;
// Required method
fn into_searcher(self, haystack: &str) -> Self::Searcher<'_>;
// Provided method
fn is_prefix_of(self, haystack: &str) -> bool { ... }
}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
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.