pub trait Pattern:Sized { typeSearcher<'a>:Searcher<'a>; // Required method fninto_searcher(self, haystack: &str) -> Self::Searcher<'_>; // Provided methods fnis_contained_in(self, haystack: &str) ->bool { ... } fnis_prefix_of(self, haystack: &str) ->bool { ... } fnis_suffix_of<'a>(self, haystack: &'astr) ->boolwhere Self::Searcher<'a>:ReverseSearcher<'a> { ... } fnstrip_prefix_of(self, haystack: &str) ->Option<&str> { ... } fnstrip_suffix_of<'a>(self, haystack: &'astr) ->Option<&'astr>where Self::Searcher<'a>:ReverseSearcher<'a> { ... } fnas_utf8_pattern(&self) ->Option<Utf8Pattern<'_>> { ... }}pattern #27721)Expand description
A string pattern.
APattern expresses that the implementing typecan be used as a string pattern for searching in a&str.
For example, both'a' and"aa" are patterns thatwould match at index1 in the string"baaaab".
The trait itself acts as a builder for an associatedSearcher type, which does the actual work of findingoccurrences of the pattern in a string.
Depending on the type of the pattern, the behavior of methods likestr::find andstr::contains can change. The table below describessome 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 returnstrue for a char in string |
&&str | is substring |
&String | is substring |
§Examples
// &strassert_eq!("abaaa".find("ba"),Some(1));assert_eq!("abaaa".find("bac"),None);// charassert_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) -> boolassert_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§
Sourcefninto_searcher(self, haystack: &str) -> Self::Searcher<'_>
🔬This is a nightly-only experimental API. (pattern #27721)
fninto_searcher(self, haystack: &str) -> Self::Searcher<'_>
pattern #27721)Constructs the associated searcher fromself and thehaystack to search in.
Provided Methods§
Sourcefnis_contained_in(self, haystack: &str) ->bool
🔬This is a nightly-only experimental API. (pattern #27721)
fnis_contained_in(self, haystack: &str) ->bool
pattern #27721)Checks whether the pattern matches anywhere in the haystack
Sourcefnis_prefix_of(self, haystack: &str) ->bool
🔬This is a nightly-only experimental API. (pattern #27721)
fnis_prefix_of(self, haystack: &str) ->bool
pattern #27721)Checks whether the pattern matches at the front of the haystack
Sourcefnis_suffix_of<'a>(self, haystack: &'astr) ->boolwhere Self::Searcher<'a>:ReverseSearcher<'a>,
🔬This is a nightly-only experimental API. (pattern #27721)
fnis_suffix_of<'a>(self, haystack: &'astr) ->boolwhere Self::Searcher<'a>:ReverseSearcher<'a>,
pattern #27721)Checks whether the pattern matches at the back of the haystack
Sourcefnstrip_prefix_of(self, haystack: &str) ->Option<&str>
🔬This is a nightly-only experimental API. (pattern #27721)
fnstrip_prefix_of(self, haystack: &str) ->Option<&str>
pattern #27721)Removes the pattern from the front of haystack, if it matches.
Sourcefnstrip_suffix_of<'a>(self, haystack: &'astr) ->Option<&'astr>where Self::Searcher<'a>:ReverseSearcher<'a>,
🔬This is a nightly-only experimental API. (pattern #27721)
fnstrip_suffix_of<'a>(self, haystack: &'astr) ->Option<&'astr>where Self::Searcher<'a>:ReverseSearcher<'a>,
pattern #27721)Removes the pattern from the back of haystack, if it matches.
Sourcefnas_utf8_pattern(&self) ->Option<Utf8Pattern<'_>>
🔬This is a nightly-only experimental API. (pattern #27721)
fnas_utf8_pattern(&self) ->Option<Utf8Pattern<'_>>
pattern #27721)Returns the pattern as utf-8 bytes if possible.
Dyn Compatibility§
This trait isnotdyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.
Implementors§
Source§implPattern forchar
Searches for chars that are equal to a givenchar.
implPattern forchar
Searches for chars that are equal to a givenchar.
§Examples
typeSearcher<'a> =CharSearcher<'a>
Source§impl<'b>Pattern for &'bstr
Non-allocating substring search.
impl<'b>Pattern for &'bstr
Non-allocating substring search.
Will handle the pattern"" as returning empty matches at each characterboundary.
§Examples
typeSearcher<'a> =StrSearcher<'a, 'b>
Source§impl<'b>Pattern for &'b [char]
Searches for chars that are equal to any of thechars in the slice.
impl<'b>Pattern for &'b [char]
Searches for chars that are equal to any of thechars in the slice.
§Examples
typeSearcher<'a> =CharSliceSearcher<'a, 'b>
Source§impl<'b, 'c>Pattern for &'c &'bstr
Delegates to the&str impl.
impl<'b, 'c>Pattern for &'c &'bstr
Delegates to the&str impl.
typeSearcher<'a> =StrSearcher<'a, 'b>
Source§impl<'b, const N:usize>Pattern for &'b [char;N]
Searches for chars that are equal to any of thechars in the array.
impl<'b, const N:usize>Pattern for &'b [char;N]
Searches for chars that are equal to any of thechars in the array.