Name Description Size
adaptors
combinations.rs 9726
combinations_with_replacement.rs 6552
concat_impl.rs 830
cons_tuples_impl.rs 1073
diff.rs "Diff"ing iterators for caching elements to sequential collections without requiring the new elements' iterator to be `Clone`. [`Diff`] (produced by the [`diff_with`] function) describes the difference between two non-`Clone` iterators `I` and `J` after breaking ASAP from a lock-step comparison. 3715
duplicates_impl.rs 6221
either_or_both.rs 17816
exactly_one_err.rs 3350
extrema_set.rs 1490
flatten_ok.rs 6156
format.rs 4860
free.rs Free functions that create iterator adaptors or call iterator methods. The benefit of free functions is that they accept any [`IntoIterator`] as argument, so the resulting code may be easier to read. 7679
group_map.rs 758
groupbylazy.rs println!("client={}, bottom_group={}, oldest_buffered_group={}, top_group={}, buffers=[{}]", client, self.bottom_group, self.oldest_buffered_group, self.top_group, self.buffer.iter().map(|elt| elt.len()).format(", ")); 17158
grouping_map.rs 22224
impl_macros.rs Implementation's internal macros 859
intersperse.rs 3729
iter_index.rs 2555
k_smallest.rs 4396
kmerge_impl.rs loop body 6470
lazy_buffer.rs 1662
lib.rs Extra iterator adaptors, functions and macros. To extend [`Iterator`] with methods in this crate, import the [`Itertools`] trait: ``` # #[allow(unused_imports)] use itertools::Itertools; ``` Now, new methods like [`interleave`](Itertools::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 */ # let _ = elt; } ``` ## Crate Features - `use_std` - Enabled by default. - Disable to compile itertools using `#![no_std]`. This disables any item that depend on allocations (see the `use_alloc` feature) and hash maps (like `unique`, `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. 160804
merge_join.rs loop body 10717
minmax.rs 3841
multipeek_impl.rs 2817
next_array.rs 9287
pad_tail.rs 2891
peek_nth.rs 5176
peeking_take_while.rs 5380
permutations.rs 5791
powerset.rs 3321
process_results_impl.rs 2788
put_back_n_impl.rs 1706
rciter_impl.rs 2874
repeatn.rs 1782
size_hint.rs Arithmetic on `Iterator.size_hint()` values. 2383
sources.rs Iterators that are sources (produce elements from parameters, not from another iterator). 4062
take_while_inclusive.rs 2298
tee.rs 2210
tuple_impl.rs Some iterator that produces tuples 10870
unique_impl.rs 4546
unziptuple.rs 3547
with_position.rs 3908
zip_eq_impl.rs loop body 1611
zip_longest.rs 3955
ziptuple.rs 4219