1
Fork 0

Rollup merge of #71097 - pickfire:pattern-docs, r=Dylan-DPC

Pattern docs

https://doc.rust-lang.org/std/str/pattern/trait.Pattern.html#implementors
This commit is contained in:
Dylan DPC 2020-04-13 20:23:32 +02:00 committed by GitHub
commit eb49f7fd74
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 38 additions and 6 deletions

View file

@ -1827,7 +1827,13 @@ impl<'a> Extend<Cow<'a, str>> for String {
}
}
/// A convenience impl that delegates to the impl for `&str`
/// A convenience impl that delegates to the impl for `&str`.
///
/// # Examples
///
/// ```
/// assert_eq!(String::from("Hello world").find("world"), Some(6));
/// ```
#[unstable(
feature = "pattern",
reason = "API not fully fleshed out and ready to be stabilized",

View file

@ -451,7 +451,13 @@ unsafe impl<'a> ReverseSearcher<'a> for CharSearcher<'a> {
impl<'a> DoubleEndedSearcher<'a> for CharSearcher<'a> {}
/// Searches for chars that are equal to a given char
/// Searches for chars that are equal to a given `char`.
///
/// # Examples
///
/// ```
/// assert_eq!("Hello world".find('o'), Some(4));
/// ```
impl<'a> Pattern<'a> for char {
type Searcher = CharSearcher<'a>;
@ -696,7 +702,14 @@ unsafe impl<'a, 'b> ReverseSearcher<'a> for CharSliceSearcher<'a, 'b> {
impl<'a, 'b> DoubleEndedSearcher<'a> for CharSliceSearcher<'a, 'b> {}
/// Searches for chars that are equal to any of the chars in the array
/// Searches for chars that are equal to any of the chars in the array.
///
/// # Examples
///
/// ```
/// assert_eq!("Hello world".find(&['l', 'l'] as &[_]), Some(2));
/// assert_eq!("Hello world".find(&['l', 'l'][..]), Some(2));
/// ```
impl<'a, 'b> Pattern<'a> for &'b [char] {
pattern_methods!(CharSliceSearcher<'a, 'b>, MultiCharEqPattern, CharSliceSearcher);
}
@ -738,7 +751,14 @@ where
impl<'a, F> DoubleEndedSearcher<'a> for CharPredicateSearcher<'a, F> where F: FnMut(char) -> bool {}
/// Searches for chars that match the given predicate
/// Searches for chars that match the given predicate.
///
/// # Examples
///
/// ```
/// assert_eq!("Hello world".find(char::is_uppercase), Some(0));
/// assert_eq!("Hello world".find(|c| "aeiou".contains(c)), Some(1));
/// ```
impl<'a, F> Pattern<'a> for F
where
F: FnMut(char) -> bool,
@ -763,6 +783,12 @@ impl<'a, 'b, 'c> Pattern<'a> for &'c &'b str {
///
/// Will handle the pattern `""` as returning empty matches at each character
/// boundary.
///
/// # Examples
///
/// ```
/// assert_eq!("Hello world".find("world"), Some(6));
/// ```
impl<'a, 'b> Pattern<'a> for &'b str {
type Searcher = StrSearcher<'a, 'b>;
@ -771,7 +797,7 @@ impl<'a, 'b> Pattern<'a> for &'b str {
StrSearcher::new(haystack, self)
}
/// Checks whether the pattern matches at the front of the haystack
/// Checks whether the pattern matches at the front of the haystack.
#[inline]
fn is_prefix_of(self, haystack: &'a str) -> bool {
haystack.as_bytes().starts_with(self.as_bytes())
@ -788,7 +814,7 @@ impl<'a, 'b> Pattern<'a> for &'b str {
}
}
/// Checks whether the pattern matches at the back of the haystack
/// Checks whether the pattern matches at the back of the haystack.
#[inline]
fn is_suffix_of(self, haystack: &'a str) -> bool {
haystack.as_bytes().ends_with(self.as_bytes())