Crate itertools
Available on crate feature
dep_itertools
only.Expand description
itertools
Extra iterator adaptors, iterator methods, functions, and macros.
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 item that depend on allocations (see theuse_alloc
feature) and hash maps (likeunique
,counts
,into_grouping_map
and more).
use_alloc
- Enabled by default.
- Enables any item that depend on allocations (like
chunk_by
,kmerge
,join
and many more).
§Rust Version
This version of itertools requires Rust 1.63.0 or later.
Modules§
- Composable external iteration.
- The concrete iterator types.
- Traits helpful for using certain
Itertools
methods in generic contexts.
Macros§
- Chain zero or more iterators together into one sequence.
- Create an iterator over the “cartesian product” of iterators.
- Create an iterator running multiple iterators in lockstep.
Structs§
- A “meta iterator adaptor”. Its closure receives a reference to the iterator and may pick off as many elements as it likes, to produce the next iterator element.
- An iterator for the elements in a single chunk.
ChunkBy
is the storage for the lazy grouping operation.- An iterator that yields the Chunk iterators.
- An iterator over all windows, wrapping back to the first elements when the window would otherwise exceed the length of the iterator, producing tuples of a specific size.
- An iterator to iterate through all the
n
-length combinations in an iterator, with replacement. - Iterator returned for the error case of
Itertools::exactly_one()
This iterator yields exactly the same elements as the input iterator. - An iterator adapter to filter and apply a transformation on values within a nested
Result::Ok
. - An iterator adapter to filter values within a nested
Result::Ok
. - An iterator adaptor that flattens
Result::Ok
values and allowsResult::Err
values through unchanged. - Format all iterator elements lazily, separated by
sep
. - Format all iterator elements lazily, separated by
sep
. - An iterator for the elements in a single group.
GroupingMap
is an intermediate struct for efficient group-and-fold operations. It groups elements by their key and at the same time fold each group using some aggregating operation.- An iterator that yields the Group iterators.
- An iterator adaptor that alternates elements from two iterators until both run out.
- An iterator adaptor that alternates elements from the two iterators until one of them runs out.
- An iterator adaptor to insert a particular value created by a function between each element of the adapted iterator.
ChunkLazy
is the storage for a lazy chunking operation.- An iterator that infinitely applies function to value and yields results.
- An iterator adaptor that merges an abitrary number of base iterators according to an ordering function.
- An iterator adaptor that merges the two base iterators in ascending order. If both base iterators are sorted (ascending), the result is sorted.
- See
multipeek()
for more information. - An iterator adaptor that iterates over the cartesian product of multiple iterators of type
I
. - An iterator adaptor that pads a sequence to a minimum length by filling missing elements using a closure.
- See
peek_nth()
for more information. - An iterator adaptor that takes items while a closure returns
true
. - An iterator adaptor that iterates through all the
k
-permutations of the elements from an iterator. - An iterator adapter to get the positions of each element that matches a predicate.
- An iterator to iterate through the powerset of the elements from an iterator.
- An iterator that produces only the
T
values as long as the inner iterator producesOk(T)
. - An iterator adaptor that iterates over the cartesian product of the element sets of two iterators
I
andJ
. - An iterator adaptor that allows putting back a single item to the front of the iterator.
- An iterator adaptor that allows putting multiple items in front of the iterator.
- A wrapper for
Rc<RefCell<I>>
, that implements theIterator
trait. - An iterator that produces n repetitions of an element.
- An iterator adaptor that consumes elements while the given predicate is
true
, including the element for which the predicate first returnedfalse
. - An iterator adaptor that borrows from a
Clone
-able iterator to only pick off elements while the predicate returnstrue
. - One half of an iterator pair where both return the same elements.
- An iterator over a incomplete tuple.
- An iterator to iterate through all combinations in a
Clone
-able iterator that produces tuples of a specific size. - An iterator over all contiguous windows that produces tuples of a specific size.
- An iterator that groups the items in tuples of a specific size.
- Unfold
Deprecated Seeunfold
for more information. - An iterator adapter to filter out duplicate elements.
- An iterator adapter to filter out duplicate elements.
- An iterator adapter to apply a mutating function to each element before yielding it.
- An iterator adaptor that filters
Option<A>
iterator elements and producesA
. Stops on the firstNone
encountered. - An iterator adaptor that wraps each element in an
Position
. - See
multizip
for more information. - An iterator which iterates two other iterators simultaneously and panic if they have different lengths.
- An iterator which iterates two other iterators simultaneously and wraps the elements in
EitherOrBoth
.
Enums§
- A type returned by the
diff_with
function. - The enum
Either
with variantsLeft
andRight
is a general purpose sum type with two cases. - Value that either holds a single A or B, or both.
- An enum used for controlling the execution of
fold_while
. MinMaxResult
is an enum returned byminmax
.- The first component of the value yielded by
WithPosition
. Indicates the position of this element in the iterator results.
Traits§
- An
Iterator
blanket implementation that provides extra adaptors and methods. - An iterator that can be unzipped into multiple collections.
- An iterator that allows peeking at an element before deciding to accept it.
Functions§
- Test whether the predicate holds for all elements in the iterable.
- Test whether the predicate holds for any elements in the iterable.
- Assert that two iterables produce equal sequences, with the same semantics as
equal(a, b)
. - Takes two iterables and creates a new iterator over both in sequence.
- Create an iterator that clones each element from
&T
toT
. - Combine all an iterator’s elements into one element by using
Extend
. - Create an iterator that maps for example iterators of
((A, B), C)
to(A, B, C)
. - Compares every element yielded by both
i
andj
with the given function in lock-step and returns aDiff
which describes howj
differs fromi
. - Iterate
iterable
with a running index. - Return
true
if both iterables produce equal sequences (elements pairwise equal and sequences of the same length),false
otherwise. - Perform a fold operation over the iterable.
- Create an iterator that interleaves elements in
i
andj
. - Iterate
iterable
with a particular value inserted between each element. - Iterate
iterable
with a particular value created by a function inserted between each element. - Creates a new iterator that infinitely applies function to value and yields results.
- Combine all iterator elements into one
String
, separated bysep
. - Create an iterator that merges elements of the contained iterators using the ordering function.
- Create an iterator that merges elements of the contained iterators.
- Return the maximum value of the iterable.
- Create an iterator that merges elements in
i
andj
. - Return an iterator adaptor that merge-joins items from the two base iterators in ascending order.
- Return the minimum value of the iterable.
- An iterator adaptor that allows the user to peek at multiple
.next()
values without advancing the base iterator. - Converts an iterator of tuples into a tuple of containers.
- An iterator that generalizes
.zip()
and allows running multiple iterators in lockstep. - Partition a sequence using predicate
pred
so that elements that map totrue
are placed before elements which map tofalse
. - A drop-in replacement for
std::iter::Peekable
which adds apeek_nth
method allowing the user topeek
at a value several iterations forward without advancing the base iterator. - “Lift” a function of the values of an iterator so that it can process an iterator of
Result
values instead. - Create an iterator where you can put back a single item
- Create an iterator where you can put back multiple values to the front of the iteration.
- Return an iterator inside a
Rc<RefCell<_>>
wrapper. - Create an iterator that produces
n
repetitions ofelement
. - Iterate
iterable
in reverse. - Sort all iterator elements into a new iterator in ascending order.
- Sort all iterator elements into a new iterator in ascending order. This sort is unstable (i.e., may reorder equal elements).
- unfold
Deprecated Creates a new unfold source with the specified closure as the “iterator function” and an initial state to eventually pass to the closure - zip
Deprecated Converts the arguments to iterators and zips them. - Zips two iterators but panics if they are not of the same length.
Type Aliases§
- Iterator for const generic combinations returned by
.array_combinations()
- An iterator adaptor that may join together adjacent elements.
- Iterator for
Vec
valued combinations returned by.combinations()
- An iterator that maps an iterator of tuples like
((A, B), C)
to an iterator of(A, B, C)
. - An iterator adaptor that removes repeated duplicates.
- An iterator adaptor that removes repeated duplicates, determining equality using a comparison function.
- An iterator adaptor that removes repeated duplicates, while keeping a count of how many repeated elements were present. This will determine equality using a comparison function.
- An iterator adaptor that removes repeated duplicates, while keeping a count of how many repeated elements were present.
- An iterator adapter to filter out duplicate elements.
- An iterator adapter to filter for duplicate elements.
- GroupBy
Deprecated SeeChunkBy
. GroupingMapBy
is an intermediate struct for efficient group-and-fold operations.- An iterator adaptor to insert a particular value between each element of the adapted iterator.
- An iterator adaptor that merges an abitrary number of base iterators in ascending order. If all base iterators are sorted (ascending), the result is sorted.
- An iterator adapter to apply
Into
conversion to each element. - An iterator adapter to apply a transformation within a nested
Result::Ok
. - An iterator adaptor that merges the two base iterators in ascending order. If both base iterators are sorted (ascending), the result is sorted.
- An iterator adaptor that merge-joins items from the two base iterators in ascending order.