Trait sp_std::str::pattern::Pattern[][src]

pub trait Pattern<'a> {
    type Searcher: Searcher<'a>;
    fn into_searcher(self, haystack: &'a str) -> Self::Searcher;

    fn is_contained_in(self, haystack: &'a str) -> bool { ... }
fn is_prefix_of(self, haystack: &'a str) -> bool { ... }
fn is_suffix_of(self, haystack: &'a str) -> bool
    where
        Self::Searcher: ReverseSearcher<'a>
, { ... }
fn strip_prefix_of(self, haystack: &'a str) -> Option<&'a str> { ... }
fn strip_suffix_of(self, haystack: &'a str) -> Option<&'a str>
    where
        Self::Searcher: ReverseSearcher<'a>
, { ... } }
🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

Expand description

A string pattern.

A Pattern<'a> expresses that the implementing type can be used as a string pattern for searching in a &'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 behaviour of methods like str::find and str::contains can change. The table below describes some of those behaviours.

Pattern typeMatch condition
&stris substring
charis contained in string
&[char]any char in slice is contained in string
F: FnMut(char) -> boolF returns true for a char in string
&&stris substring
&Stringis 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]
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);

Associated Types

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

Associated searcher for this pattern

Required methods

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

Constructs the associated searcher from self and the haystack to search in.

Provided methods

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

Checks whether the pattern matches anywhere in the haystack

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

Checks whether the pattern matches at the front of the haystack

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

Checks whether the pattern matches at the back of the haystack

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

Removes the pattern from the front of haystack, if it matches.

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

Removes the pattern from the back of haystack, if it matches.

Implementations on Foreign Types

Searches for chars that are equal to any of the chars in the slice.

Examples

assert_eq!("Hello world".find(&['l', 'l'] as &[_]), Some(2));
assert_eq!("Hello world".find(&['l', 'l'][..]), Some(2));
🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

Non-allocating substring search.

Will handle the pattern "" as returning empty matches at each character boundary.

Examples

assert_eq!("Hello world".find("world"), Some(6));
🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

Checks whether the pattern matches at the front of the haystack.

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

Removes the pattern from the front of haystack, if it matches.

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

Checks whether the pattern matches at the back of the haystack.

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

Removes the pattern from the back of haystack, if it matches.

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

Delegates to the &str impl.

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

Searches for chars that are equal to a given char.

Examples

assert_eq!("Hello world".find('o'), Some(4));
🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

A convenience impl that delegates to the impl for &str.

Examples

assert_eq!(String::from("Hello world").find("world"), Some(6));
🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

🔬 This is a nightly-only experimental API. (pattern)

API not fully fleshed out and ready to be stabilized

Implementors