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,joinand many more).
 
Rust Version
This version of itertools requires Rust 1.32 or later.
Re-exports
pub use crate::structs::*;Modules
The concrete iterator types.
Traits helpful for using certain 
Itertools methods in generic contexts.Macros
Create an iterator over the “cartesian product” of iterators.
Create an iterator running multiple iterators in lockstep.
Enums
The enum 
Either with variants Left and Right 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 by minmax.A value yielded by 
WithPosition.
Indicates the position of this element in the iterator results.Traits
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 to T
Create an iterator that maps for example iterators of
((A, B), C) to (A, B, C).Compares every element yielded by both 
i and j with the given function in lock-step and
returns a Diff which describes how j differs from i.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 and j.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 by 
sep.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 and j.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 to true are placed before elements which map to false.A drop-in replacement for 
std::iter::Peekable which adds a peek_nth
method allowing the user to peek 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.repeat_callDeprecated
An iterator source that produces elements indefinitely by calling
a given closure.
Create an iterator that produces 
n repetitions of element.Iterate 
iterable in reverse.Sort all iterator elements into a new iterator in ascending order.
Creates a new unfold source with the specified closure as the “iterator
function” and an initial state to eventually pass to the closure
zipDeprecated
Converts the arguments to iterators and zips them.
Iterate 
i and j in lock step.