@@ -60,6 +60,43 @@ use crate::slice::memchr;
60
60
/// The trait itself acts as a builder for an associated
61
61
/// `Searcher` type, which does the actual work of finding
62
62
/// occurrences of the pattern in a string.
63
+ ///
64
+ /// Depending on the type of the pattern, the behaviour of methods like
65
+ /// [`str::find`] and [`str::contains`] can change. The table below describes
66
+ /// some of those behaviours.
67
+ ///
68
+ /// | Pattern type | Match condition |
69
+ /// |--------------------------|-------------------------------------------|
70
+ /// | `&str` | is substring |
71
+ /// | `char` | is contained in string |
72
+ /// | `&[char] | any char in slice is contained in string |
73
+ /// | `F: FnMut(char) -> bool` | `F` returns `true` for a char in string |
74
+ /// | `&&str` | is substring |
75
+ /// | `&String` | is substring |
76
+ ///
77
+ /// # Examples
78
+ /// ```
79
+ /// // &str
80
+ /// assert_eq!("abaaa".find("ba"), Some(1));
81
+ /// assert_eq!("abaaa".find("bac"), None);
82
+ ///
83
+ /// // char
84
+ /// assert_eq!("abaaa".find('a'), Some(0));
85
+ /// assert_eq!("abaaa".find('b'), Some(1));
86
+ /// assert_eq!("abaaa".find('c'), None);
87
+ ///
88
+ /// // &[char]
89
+ /// assert_eq!("ab".find(&['b', 'a'][..]), Some(0));
90
+ /// assert_eq!("abaaa".find(&['a', 'z'][..]), Some(0));
91
+ /// assert_eq!("abaaa".find(&['c', 'd'][..]), None);
92
+ ///
93
+ /// // FnMut(char) -> bool
94
+ /// assert_eq!("abcdef_z".find(|ch| ch > 'd' && ch < 'y'), Some(4));
95
+ /// assert_eq!("abcddd_z".find(|ch| ch > 'd' && ch < 'y'), None);
96
+ /// ```
97
+ ///
98
+ /// [`str::find`]: ../../../std/primitive.str.html#method.find
99
+ /// [`str::contains`]: ../../../std/primitive.str.html#method.contains
63
100
pub trait Pattern < ' a > : Sized {
64
101
/// Associated searcher for this pattern
65
102
type Searcher : Searcher < ' a > ;
0 commit comments