Сводная таблица методов и адаптеров Iterator в Rust

Базовые методы потребления

МетодФорматНазначение
nextfn next(&mut self) -> Option<Self::Item>Возвращает следующий элемент
size_hintfn size_hint(&self) -> (usize, Option<usize>)Оценка оставшегося количества элементов
countfn count(self) -> usizeПотребляет итератор, возвращая количество элементов
lastfn last(self) -> Option<Self::Item>Возвращает последний элемент
advance_byfn advance_by(&mut self, n: usize) -> Result<(), usize>Пропускает n элементов
nthfn nth(&mut self, n: usize) -> Option<Self::Item>Возвращает n-й элемент

Методы потребления с преобразованием

МетодФорматНазначение
collectfn collect<B>(self) -> B where B: FromIterator<Self::Item>Преобразует в коллекцию
partitionfn partition<B, F>(self, f: F) -> (B, B)Разделяет на две коллекции по предикату
try_foldfn try_fold<B, F, R>(&mut self, init: B, f: F) -> RАккумулятор с возможностью ошибки
foldfn fold<B, F>(self, init: B, f: F) -> BАккумулятор (редукция)
reducefn reduce<F>(self, f: F) -> Option<Self::Item>Аккумулятор без начального значения
try_reducefn try_reduce<F, R>(self, f: F) -> RReduce с возможностью ошибки
allfn all<F>(&mut self, f: F) -> boolПроверяет, что все элементы удовлетворяют условию
anyfn any<F>(&mut self, f: F) -> boolПроверяет, что хотя бы один элемент удовлетворяет условию
findfn find<P>(&mut self, predicate: P) -> Option<Self::Item>Находит первый элемент по предикату
find_mapfn find_map<B, F>(&mut self, f: F) -> Option<B>Находит и преобразует первый подходящий элемент
try_findfn try_find<F, R>(&mut self, f: F) -> RFind с возможностью ошибки
positionfn position<P>(&mut self, predicate: P) -> Option<usize>Находит позицию элемента
rpositionfn rposition<P>(&mut self, predicate: P) -> Option<usize>Находит позицию с конца (только для ExactSizeIterator)
maxfn max(self) -> Option<Self::Item>Максимальный элемент
minfn min(self) -> Option<Self::Item>Минимальный элемент
max_byfn max_by<F>(self, compare: F) -> Option<Self::Item>Максимум по функции сравнения
min_byfn min_by<F>(self, compare: F) -> Option<Self::Item>Минимум по функции сравнения
max_by_keyfn max_by_key<B, F>(self, f: F) -> Option<Self::Item>Максимум по ключу
min_by_keyfn min_by_key<B, F>(self, f: F) -> Option<Self::Item>Минимум по ключу
sumfn sum<S>(self) -> SСумма элементов
productfn product<P>(self) -> PПроизведение элементов

Адаптеры, преобразующие элементы

МетодФорматНазначение
mapfn map<B, F>(self, f: F) -> Map<Self, F>Преобразует каждый элемент
for_eachfn for_each<F>(self, f: F)Выполняет действие для каждого элемента
filter_mapfn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>Фильтрация с преобразованием
flat_mapfn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>Преобразует в итератор и сглаживает
flattenfn flatten(self) -> Flatten<Self>Сглаживает вложенные итераторы
inspectfn inspect<F>(self, f: F) -> Inspect<Self, F>Побочный эффект для каждого элемента

Адаптеры фильтрации

МетодФорматНазначение
filterfn filter<P>(self, predicate: P) -> Filter<Self, P>Фильтрует элементы по условию
take_whilefn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>Берет элементы, пока условие истинно
skip_whilefn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>Пропускает элементы, пока условие истинно
map_whilefn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>Map, который может остановить итерацию

Адаптеры изменения размера

МетодФорматНазначение
takefn take(self, n: usize) -> Take<Self>Ограничивает количество элементов
skipfn skip(self, n: usize) -> Skip<Self>Пропускает n элементов
step_byfn step_by(self, step: usize) -> StepBy<Self>Берет каждый n-й элемент

Адаптеры комбинирования итераторов

МетодФорматНазначение
chainfn chain<U>(self, other: U) -> Chain<Self, U>Объединяет два итератора
zipfn zip<U>(self, other: U) -> Zip<Self, U>Объединяет попарно
interspersefn intersperse(self, separator: Self::Item) -> Intersperse<Self>Вставляет разделитель между элементами
intersperse_withfn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>Вставляет разделитель через функцию

Адаптеры копирования и клонирования

МетодФорматНазначение
copiedfn copied<'a, T>(self) -> Copied<Self>Копирует элементы (для &T)
clonedfn cloned<'a, T>(self) -> Cloned<Self>Клонирует элементы (для &T)

Адаптеры циклов и повторений

МетодФорматНазначение
cyclefn cycle(self) -> Cycle<Self>Бесконечно повторяет итератор
repeatfn repeat(self) -> Repeat<Self>Бесконечно повторяет элемент

Адаптеры для работы с ошибками

МетодФорматНазначение
try_collectfn try_collect<T>(&mut self) -> TCollect с возможностью ошибки

Специализированные адаптеры

МетодФорматНазначение
unzipfn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)Разделяет пары на две коллекции
enumeratefn enumerate(self) -> Enumerate<Self>Добавляет индексы
peekablefn peekable(self) -> Peekable<Self>Позволяет посмотреть на следующий элемент
scanfn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>Итератор с состоянием
fusefn fuse(self) -> Fuse<Self>Превращает None после первого None

Методы для двойных итераторов

МетодФорматНазначение
eqfn eq<I>(self, other: I) -> boolПроверяет равенство
nefn ne<I>(self, other: I) -> boolПроверяет неравенство
ltfn lt<I>(self, other: I) -> boolПроверяет "меньше"
lefn le<I>(self, other: I) -> boolПроверяет "меньше или равно"
gtfn gt<I>(self, other: I) -> boolПроверяет "больше"
gefn ge<I>(self, other: I) -> boolПроверяет "больше или равно"
cmpfn cmp<I>(self, other: I) -> OrderingСравнивает лексикографически
partial_cmpfn partial_cmp<I>(self, other: I) -> Option<Ordering>Частичное сравнение
cmp_byfn cmp_by<I, F>(self, other: I, cmp: F) -> OrderingСравнение по функции
eq_byfn eq_by<I, F>(self, other: I, eq: F) -> boolРавенство по функции

Утилиты

МетодФорматНазначение
revfn rev(self) -> Rev<Self>Обратный порядок (только для DoubleEndedIterator)
by_reffn by_ref(&mut self) -> &mut SelfЗаимствует итератор

Примечание: Большинство адаптеров ленивы - они выполняются только при потреблении.