Crate tract_core::internal::tract_itertools
source · 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.
Modules
Composable external iteration.
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.
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.
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
k-length combinations in an iterator.An iterator to iterate through all the
n-length combinations in an iterator, with replacement.An iterator that maps an iterator of tuples like
((A, B), C) to an iterator of (A, B, C).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
allows Result::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.
GroupBy is the storage for the lazy grouping operation.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.
An iterator adaptor that merge-joins items from the two base iterators in ascending order.
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 produces Ok(T).An iterator adaptor that iterates over the cartesian product of
the element sets of two iterators
I and J.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 the Iterator trait.RepeatCallDeprecated
See
repeat_call for more information.An iterator that produces n repetitions of an element.
StepDeprecated
An iterator adaptor that steps a number elements in the base iterator
for each iteration.
An iterator adaptor that borrows from a
Clone-able iterator
to only pick off elements while the predicate returns true.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.
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 produces A. Stops on the first None encountered.An iterator adaptor that wraps each element in an
Position.An iterator which iterates two other iterators simultaneously
An iterator which iterates two other iterators simultaneously
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.Type Definitions
An iterator adaptor that may join together adjacent elements.
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.
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.MapResultsDeprecated
See
MapOk.An iterator adaptor that merges the two base iterators in ascending order.
If both base iterators are sorted (ascending), the result is sorted.