Модуль 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 (Экспериментальный) | Поисковик для строкового шаблона. |