Expand description
Collection of general purpose tools to iterate. Currently it simply reexport itertools.
Module :: iter_tools
Collection of general purpose tools to iterate. Currently it simply reexport itertools.
Sample
use iter_tools::*;
fn main()
{
/* standard functions */
let vec = vec![ 5, 1, -2 ];
let min = min( &vec );
assert_eq!( *min.unwrap(), -2 );
/* non standard functions */
let vec = vec![ 5, 1, -2 ];
let added = vec![ "a", "b", "c" ];
let mut result = vec![];
let zipped = zip( &vec, &added );
for ( left, right ) in zipped
{
result.push( ( *left, *right ) );
}
assert_eq!( result, vec![ ( 5, "a" ), ( 1, "b" ), ( -2, "c" ) ] );
}
To add to your project
cargo add iter_tools
Try out from the repository
git clone https://github.com/Wandalen/wTools
cd wTools
cd sample/rust/iter_tools_trivial
cargo run
Modules
Namespace with dependencies.
Exposed namespace of the module.
Core module.
Prelude to use essentials: use my_module::prelude::*
.
Macros
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 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)
.
Create an iterator that first iterates i
and then j
.
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, seperated 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.
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
Iterate i
and j
in lock step.
Iterate i
and j
in lock step.