Структура SplitInclusive

#![allow(unused)]
fn main() {
pub struct SplitInclusive<'a, P>(/* приватные поля */)
where
    P: Pattern;
}

Итератор по подстрокам строки, завершающимся подстрокой, соответствующей предикату. В отличие от Split, он содержит совпадающую часть как терминатор подстроки.

Эта структура создается методом split_inclusive для str. Смотрите его документацию для получения дополнительной информации.

Методы

impl<'a, P> SplitInclusive<'a, P>

#![allow(unused)]
fn main() {
where
    P: Pattern,
}
ФункцияСинтаксисПримерНазначение
remainderpub fn remainder(&self) -> Option<&'a str>let remainder = split_inclusive.remainder();🔬 Возвращает оставшуюся часть разделяемой строки. Если итератор пуст, возвращает None

Реализации трейтов

impl<'a, P> Clone for SplitInclusive<'a, P>

#![allow(unused)]
fn main() {
where
    P: Pattern,
    <P as Pattern>::Searcher<'a>: Clone,
}
ФункцияСинтаксисПримерНазначение
clonefn clone(&self) -> SplitInclusive<'a, P> ⓘlet cloned = split_inclusive.clone();Возвращает копию значения
clone_fromfn clone_from(&mut self, source: &Self)split_inclusive.clone_from(&other);Выполняет копирующее присваивание из source

impl<'a, P> Debug for SplitInclusive<'a, P>

#![allow(unused)]
fn main() {
where
    P: Pattern,
    <P as Pattern>::Searcher<'a>: Debug,
}
ФункцияСинтаксисПримерНазначение
fmtfn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>println!("{:?}", split_inclusive);Форматирует значение с помощью заданного форматтера

impl<'a, P> DoubleEndedIterator for SplitInclusive<'a, P>

#![allow(unused)]
fn main() {
where
    P: Pattern,
    <P as Pattern>::Searcher<'a>: DoubleEndedSearcher<'a>,
}
ФункцияСинтаксисПримерНазначение
next_backfn next_back(&mut self) -> Option<&'a str>let last_part = split_inclusive.next_back();Удаляет и возвращает элемент с конца итератора
advance_back_byfn advance_back_by(&mut self, n: usize) -> Result<(), NonZero<usize>>split_inclusive.advance_back_by(2)?;🔬 Перемещает итератор с конца на n элементов
nth_back (с версии 1.37.0)fn nth_back(&mut self, n: usize) -> Option<Self::Item>let second_last = split_inclusive.nth_back(1);Возвращает n-й элемент с конца итератора
try_rfold (с версии 1.27.0)fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R`let result = split_inclusive.try_rfold(vec![],mut v, s
rfold (с версии 1.27.0)fn rfold<B, F>(self, init: B, f: F) -> B`let total_len = split_inclusive.rfold(0,acc, s
rfind (с версии 1.27.0)fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>`let last_long = split_inclusive.rfind(s

impl<'a, P> Iterator for SplitInclusive<'a, P>

#![allow(unused)]
fn main() {
where
    P: Pattern,
}
ФункцияСинтаксисПримерНазначение
Itemtype Item = &'a str-Тип элементов, по которым выполняется итерация
nextfn next(&mut self) -> Option<&'a str>let next_part = split_inclusive.next();Продвигает итератор и возвращает следующее значение
next_chunkfn next_chunk<const N: usize>(&mut self) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>let chunk: [&str; 3] = split_inclusive.next_chunk()?;🔬 Возвращает массив следующих N значений
size_hintfn size_hint(&self) -> (usize, Option<usize>)let (min, max) = split_inclusive.size_hint();Возвращает границы оставшейся длины итератора
countfn count(self) -> usizelet total = split_inclusive.count();Потребляет итератор, подсчитывая количество итераций
lastfn last(self) -> Option<Self::Item>let final_part = split_inclusive.last();Потребляет итератор, возвращая последний элемент
advance_byfn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>split_inclusive.advance_by(2)?;🔬 Продвигает итератор на n элементов
nthfn nth(&mut self, n: usize) -> Option<Self::Item>let third = split_inclusive.nth(2);Возвращает n-й элемент итератора
step_by (с версии 1.28.0)fn step_by(self, step: usize) -> StepBy<Self> ⓘlet stepped = split_inclusive.step_by(2);Создает итератор с заданным шагом
chainfn chain<U>(self, other: U) -> Chain<Self, U::IntoIter> ⓘlet combined = split_inclusive.chain(other_split);Объединяет два итератора в последовательности
zipfn zip<U>(self, other: U) -> Zip<Self, U::IntoIter> ⓘlet zipped = split_inclusive.zip(other_split);Объединяет два итератора в итератор пар
interspersefn intersperse(self, separator: Self::Item) -> Intersperse<Self> ⓘlet with_sep = split_inclusive.intersperse(", ");🔬 Разделяет элементы разделителем
intersperse_withfn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G> ⓘ`let with_sep = split_inclusive.intersperse_with(
mapfn map<B, F>(self, f: F) -> Map<Self, F> ⓘ`let lengths = split_inclusive.map(s
for_each (с версии 1.21.0)fn for_each<F>(self, f: F)`split_inclusive.for_each(s
filterfn filter<P>(self, predicate: P) -> Filter<Self, P> ⓘ`let long = split_inclusive.filter(s
filter_mapfn filter_map<B, F>(self, f: F) -> FilterMap<Self, F> ⓘ`let nums = split_inclusive.filter_map(s
enumeratefn enumerate(self) -> Enumerate<Self> ⓘfor (i, s) in split_inclusive.enumerate()Добавляет индекс к каждому элементу
peekablefn peekable(self) -> Peekable<Self> ⓘlet peekable = split_inclusive.peekable();Создает итератор с возможностью заглядывания вперед
skip_whilefn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P> ⓘ`let skipped = split_inclusive.skip_while(s
take_whilefn take_while<P>(self, predicate: P) -> TakeWhile<Self, P> ⓘ`let taken = split_inclusive.take_while(s
map_while (с версии 1.57.0)fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P> ⓘ`let nums = split_inclusive.map_while(s
skipfn skip(self, n: usize) -> Skip<Self> ⓘlet skipped = split_inclusive.skip(2);Пропускает первые n элементов
takefn take(self, n: usize) -> Take<Self> ⓘlet first_3 = split_inclusive.take(3);Берет первые n элементов
scanfn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F> ⓘ`let scanned = split_inclusive.scan(0,sum, s
flat_mapfn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F> ⓘ`let chars = split_inclusive.flat_map(s
flatten (с версии 1.29.0)fn flatten(self) -> Flatten<Self> ⓘlet flattened = split_inclusive.flatten();Разворачивает вложенные структуры
map_windowsfn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N> ⓘ`let windows = split_inclusive.map_windows(arr: &[&str; 3]
fusefn fuse(self) -> Fuse<Self> ⓘlet fused = split_inclusive.fuse();Создает итератор, завершающийся после первого None
inspectfn inspect<F>(self, f: F) -> Inspect<Self, F> ⓘ`let inspected = split_inclusive.inspect(s
by_reffn by_ref(&mut self) -> &mut Selffor s in split_inclusive.by_ref().take(2)Создает ссылку на итератор
collectfn collect<B>(self) -> Blet vec: Vec<&str> = split_inclusive.collect();Преобразует итератор в коллекцию
try_collectfn try_collect<B>(&mut self) -> ...let vec: Vec<Result<&str, _>> = split_inclusive.try_collect();🔬 Преобразует итератор с обработкой ошибок
collect_intofn collect_into<E>(self, collection: &mut E) -> &mut Esplit_inclusive.collect_into(&mut vec);🔬 Собирает элементы в существующую коллекцию
partitionfn partition<B, F>(self, f: F) -> (B, B)`let (long, short): (Vec<>, Vec<>) = split_inclusive.partition(s
partition_in_placefn partition_in_place<'a, T, P>(self, predicate: P) -> usize`let true_count = split_inclusive.partition_in_place(s
is_partitionedfn is_partitioned<P>(self, predicate: P) -> bool`let partitioned = split_inclusive.is_partitioned(s
try_fold (с версии 1.27.0)fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R`let sum = split_inclusive.try_fold(0,acc, s
try_for_each (с версии 1.27.0)fn try_for_each<F, R>(&mut self, f: F) -> R`split_inclusive.try_for_each(s
foldfn fold<B, F>(self, init: B, f: F) -> B`let total_len = split_inclusive.fold(0,acc, s
reduce (с версии 1.51.0)fn reduce<F>(self, f: F) -> Option<Self::Item>`let longest = split_inclusive.reduce(a, b
try_reducefn try_reduce<R>(&mut self, f: impl FnMut(Self::Item, Self::Item) -> R) -> ...`let longest = split_inclusive.try_reduce(a, b
allfn all<F>(&mut self, f: F) -> bool`let all_long = split_inclusive.all(s
anyfn any<F>(&mut self, f: F) -> bool`let any_long = split_inclusive.any(s
findfn find<P>(&mut self, predicate: P) -> Option<Self::Item>`let long = split_inclusive.find(s
find_map (с версии 1.30.0)fn find_map<B, F>(&mut self, f: F) -> Option<B>`let num = split_inclusive.find_map(s
try_findfn try_find<R>(&mut self, f: impl FnMut(&Self::Item) -> R) -> ...`let long = split_inclusive.try_find(s
positionfn position<P>(&mut self, predicate: P) -> Option<usize>`let pos = split_inclusive.position(s
rpositionfn rposition<P>(&mut self, predicate: P) -> Option<usize>`let rpos = split_inclusive.rposition(s
maxfn max(self) -> Option<Self::Item>let longest = split_inclusive.max();Возвращает максимальный элемент
minfn min(self) -> Option<Self::Item>let shortest = split_inclusive.min();Возвращает минимальный элемент
max_by_key (с версии 1.6.0)fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>`let longest = split_inclusive.max_by_key(s
max_by (с версии 1.15.0)fn max_by<F>(self, compare: F) -> Option<Self::Item>`let longest = split_inclusive.max_by(a, b
min_by_key (с версии 1.6.0)fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>`let shortest = split_inclusive.min_by_key(s
min_by (с версии 1.15.0)fn min_by<F>(self, compare: F) -> Option<Self::Item>`let shortest = split_inclusive.min_by(a, b
revfn rev(self) -> Rev<Self> ⓘlet reversed = split_inclusive.rev();Обращает направление итератора
unzipfn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)let (first, second): (Vec<_>, Vec<_>) = split_inclusive.unzip();Разделяет пары на две коллекции
copied (с версии 1.36.0)fn copied<'a, T>(self) -> Copied<Self> ⓘlet copied: Copied<_> = split_inclusive.copied();Создает итератор, копирующий элементы
clonedfn cloned<'a, T>(self) -> Cloned<Self> ⓘlet cloned: Cloned<_> = split_inclusive.cloned();Создает итератор, клонирующий элементы
cyclefn cycle(self) -> Cycle<Self> ⓘlet cycled = split_inclusive.cycle();Бесконечно повторяет итератор
array_chunksfn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N> ⓘlet chunks = split_inclusive.array_chunks::<3>();🔬 Возвращает элементы массивами по N штук
sum (с версии 1.11.0)fn sum<S>(self) -> S`let total_len: usize = split_inclusive.map(s
product (с версии 1.11.0)fn product<P>(self) -> P`let product: i32 = split_inclusive.map(s
cmp (с версии 1.5.0)fn cmp<I>(self, other: I) -> Orderinglet ordering = split_inclusive.cmp(other_split);Лексикографически сравнивает с другим итератором
cmp_byfn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering`let ordering = split_inclusive.cmp_by(other_split,a, b
partial_cmp (с версии 1.5.0)fn partial_cmp<I>(self, other: I) -> Option<Ordering>let ordering = split_inclusive.partial_cmp(other_split);Частично сравнивает с другим итератором
partial_cmp_byfn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>`let ordering = split_inclusive.partial_cmp_by(other_split,a, b
eq (с версии 1.5.0)fn eq<I>(self, other: I) -> boollet equal = split_inclusive.eq(other_split);Проверяет равенство элементов
eq_byfn eq_by<I, F>(self, other: I, eq: F) -> bool`let equal = split_inclusive.eq_by(other_split,a, b
ne (с версии 1.5.0)fn ne<I>(self, other: I) -> boollet not_equal = split_inclusive.ne(other_split);Проверяет неравенство элементов
lt (с версии 1.5.0)fn lt<I>(self, other: I) -> boollet less = split_inclusive.lt(other_split);Проверяет, меньше ли элементы
le (с версии 1.5.0)fn le<I>(self, other: I) -> boollet less_equal = split_inclusive.le(other_split);Проверяет, меньше или равны ли элементы
gt (с версии 1.5.0)fn gt<I>(self, other: I) -> boollet greater = split_inclusive.gt(other_split);Проверяет, больше ли элементы
ge (с версии 1.5.0)fn ge<I>(self, other: I) -> boollet greater_equal = split_inclusive.ge(other_split);Проверяет, больше или равны ли элементы
is_sorted (с версии 1.82.0)fn is_sorted(self) -> boollet sorted = split_inclusive.is_sorted();Проверяет, отсортированы ли элементы
is_sorted_by (с версии 1.82.0)fn is_sorted_by<F>(self, compare: F) -> bool`let sorted = split_inclusive.is_sorted_by(a, b
is_sorted_by_key (с версии 1.82.0)fn is_sorted_by_key<F, K>(self, f: F) -> bool`let sorted = split_inclusive.is_sorted_by_key(s

impl<'a, P> FusedIterator for SplitInclusive<'a, P>

#![allow(unused)]
fn main() {
where
    P: Pattern,
}
ФункцияСинтаксисПримерНазначение
(Этот трейт не добавляет новых методов, а только гарантирует, что после первого None все последующие вызовы next() также будут возвращать None. Это свойство наследуется от итератора.)

Автоматические реализации трейтов

ТрейтУсловия реализации
FreezeЕсли Pattern::Searcher<'a>: Freeze
RefUnwindSafeЕсли Pattern::Searcher<'a>: RefUnwindSafe
SendЕсли Pattern::Searcher<'a>: Send
SyncЕсли Pattern::Searcher<'a>: Sync
UnpinЕсли Pattern::Searcher<'a>: Unpin
UnwindSafeЕсли Pattern::Searcher<'a>: UnwindSafe