Expand description
Extra iterator adaptors, functions and macros.
To extend Iterator
with methods in this crate, import
the Itertools
trait:
use itertools::Itertools;
Now, new methods like interleave
are available on all iterators:
use itertools::Itertools;
let it = (1..3).interleave(vec![-1, -2]);
itertools::assert_equal(it, vec![1, -1, 2, -2]);
Most iterator methods are also provided as functions (with the benefit
that they convert parameters using IntoIterator
):
use itertools::interleave;
for elt in interleave(&[1, 2, 3], &[2, 3, 4]) {
/* loop body */
}
§Crate Features
use_std
- Enabled by default.
- Disable to compile itertools using
#![no_std]
. This disables any items that depend on collections (likegroup_by
,unique
,kmerge
,join
and many more).
§Rust Version
This version of itertools requires Rust 1.24 or later.
Re-exports§
pub use structs::*;
Modules§
- structs
- The concrete iterator types.
Macros§
- iproduct
- Create an iterator over the “cartesian product” of iterators.
- izip
- Create an iterator running multiple iterators in lockstep.
Enums§
- Diff
- A type returned by the
diff_with
function. - Either
- The enum
Either
with variantsLeft
andRight
is a general purpose sum type with two cases. - Either
OrBoth - Value that either holds a single A or B, or both.
- Fold
While - An enum used for controlling the execution of
.fold_while()
. - MinMax
Result MinMaxResult
is an enum returned byminmax
. SeeItertools::minmax()
for more detail.- Position
- A value yielded by
WithPosition
. Indicates the position of this element in the iterator results.
Traits§
- Itertools
- An
Iterator
blanket implementation that provides extra adaptors and methods. - Peeking
Next - An iterator that allows peeking at an element before deciding to accept it.
Functions§
- all
- Test whether the predicate holds for all elements in the iterable.
- any
- Test whether the predicate holds for any elements in the iterable.
- assert_
equal - Assert that two iterables produce equal sequences, with the same semantics as equal(a, b).
- chain
- Create an iterator that first iterates
i
and thenj
. - cloned
- Create an iterator that clones each element from &T to T
- concat
- Combine all an iterator’s elements into one element by using
Extend
. - cons_
tuples - Create an iterator that maps for example iterators of
((A, B), C)
to(A, B, C)
. - diff_
with - Compares every element yielded by both
i
andj
with the given function in lock-step and returns aDiff
which describes howj
differs fromi
. - enumerate
- Iterate
iterable
with a running index. - equal
- Return
true
if both iterables produce equal sequences (elements pairwise equal and sequences of the same length),false
otherwise. - fold
- Perform a fold operation over the iterable.
- interleave
- Create an iterator that interleaves elements in
i
andj
. - iterate
- Creates a new iterator that infinitely applies function to value and yields results.
- join
- Combine all iterator elements into one String, seperated by
sep
. - kmerge
- Create an iterator that merges elements of the contained iterators using the ordering function.
- kmerge_
by - Create an iterator that merges elements of the contained iterators.
- max
- Return the maximum value of the iterable.
- merge
- Create an iterator that merges elements in
i
andj
. - merge_
join_ by - Return an iterator adaptor that merge-joins items from the two base iterators in ascending order.
- min
- Return the minimum value of the iterable.
- multipeek
- An iterator adaptor that allows the user to peek at multiple
.next()
values without advancing the base iterator. - multizip
- An iterator that generalizes .zip() and allows running multiple iterators in lockstep.
- partition
- Partition a sequence using predicate
pred
so that elements that map totrue
are placed before elements which map tofalse
. - process_
results - “Lift” a function of the values of an iterator so that it can process
an iterator of
Result
values instead. - put_
back - Create an iterator where you can put back a single item
- put_
back_ n - Create an iterator where you can put back multiple values to the front of the iteration.
- rciter
- Return an iterator inside a
Rc<RefCell<_>>
wrapper. - repeat_
call Deprecated - An iterator source that produces elements indefinitely by calling a given closure.
- repeat_
n - Create an iterator that produces
n
repetitions ofelement
. - rev
- Iterate
iterable
in reverse. - sorted
- Sort all iterator elements into a new iterator in ascending order.
- unfold
- Creates a new unfold source with the specified closure as the “iterator function” and an initial state to eventually pass to the closure
- zip
- Iterate
i
andj
in lock step. - zip_eq
- Iterate
i
andj
in lock step.