Модуль pattern

🔬 Это экспериментальное API, доступное только в ночных сборках. (pattern #27721)

API для работы со строковыми шаблонами (Pattern).

API Pattern предоставляет обобщенный механизм для использования различных типов шаблонов при поиске в строке.

Для получения более подробной информации см. трейты Pattern, Searcher, ReverseSearcher и DoubleEndedSearcher.

Хотя это API является нестабильным, оно доступно через стабильные API типа str.

Примеры

Pattern реализован в стабильном API для &str, char, срезов char, а также для функций и замыканий, реализующих FnMut(char) -> bool.

#![allow(unused)]
fn main() {
let s = "Can you find a needle in a haystack?";

// Шаблон типа &str
assert_eq!(s.find("you"), Some(4));
// Шаблон типа char
assert_eq!(s.find('n'), Some(2));
// Шаблон в виде массива символов
assert_eq!(s.find(&['a', 'e', 'i', 'o', 'u']), Some(1));
// Шаблон в виде среза символов
assert_eq!(s.find(&['a', 'e', 'i', 'o', 'u'][..]), Some(1));
// Шаблон в виде замыкания
assert_eq!(s.find(|c: char| c.is_ascii_punctuation()), Some(35));
}

Структуры

Имя структурыОписание
CharArrayRefSearcher (Экспериментальный)Ассоциированный тип для <&[char; N] as Pattern>::Searcher<'a>.
CharArraySearcher (Экспериментальный)Ассоциированный тип для <[char; N] as Pattern>::Searcher<'a>.
CharPredicateSearcher (Экспериментальный)Ассоциированный тип для <F as Pattern>::Searcher<'a>.
CharSearcher (Экспериментальный)Ассоциированный тип для <char as Pattern>::Searcher<'a>.
CharSliceSearcher (Экспериментальный)Ассоциированный тип для <&[char] as Pattern>::Searcher<'a>.
StrSearcher (Экспериментальный)Ассоциированный тип для <&str as Pattern>::Searcher<'a>.

Перечисления (Enums)

Имя перечисленияОписание
SearchStep (Экспериментальный)Результат вызова Searcher::next() или ReverseSearcher::next_back().
Utf8Pattern (Экспериментальный)Результат вызова Pattern::as_utf8_pattern(). Может использоваться для проверки содержимого шаблона в случаях, когда внутреннее представление может быть выражено в UTF-8.

Трейты

Имя трейтаОписание
DoubleEndedSearcher (Экспериментальный)Маркерный трейт, указывающий, что ReverseSearcher может использоваться для реализации DoubleEndedIterator.
Pattern (Экспериментальный)Строковый шаблон.
ReverseSearcher (Экспериментальный)Обратный поисковик для строкового шаблона.
Searcher (Экспериментальный)Поисковик для строкового шаблона.