itertools
Extra iterator adaptors, iterator methods, free functions, and macros.
0.15.0
1.4B downloads/mo
#13 most downloaded on crates.io
rust-itertools/itertools
What this package is like to depend on
Last release 2 months ago
16 Jun 2026
Ships fairly regularly
a new release about every 6 months
Most releases are documented
notes for 84 of 129 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
131 releases · first in 2014
1 release in the last 12 months
see the full history below
Release timeline
131 releases · Nov 2014 to Jun 2026Releases
latest 60 of 131-
0.15.016 Jun 2026Release notes
Open source →Breaking
- Restructure
Positionas struct instead of enum (#1042, #1043) - Canonicalize
all_equal_value's error type (#1032)
Added
- Add
*_with_hasheradaptors (#1007) - Add strip_prefix and strip_prefix_by methods (#1104)
Changed
- Remove
Clonebounds fromtuple_combinationsandarray_combinations(#1011) must_useforcollect_vec(#1009)- Make
izip!temporary friendly (#1021) - Add
array_combinations_with_replacement(#1033) - Implement
Debugfor remaining public types (#1038) - Specialize
ExactlyOneError::count(#1046) - Implement
PeekingNextfor more types, in particularvec::IntoIter(#1059, #1073) - Fix
PadUsing::next_back(#1082) - Introduce
[circular_]array_windows, deprecatetuple_windows(#1086) - Deprecate
tuple_combinations(replaced byarray_combinations) (#1085)
Notable Internal Changes
- Make
into_group_mapcode more idiomatic (#1027) - Fix clippy lints (#1017, #1029, #1076, #1099)
- Restructure
-
0.14.031 Dec 2024Release notes
Open source →Breaking
- Increased MSRV to 1.63.0 (#960)
- Removed generic parameter from
cons_tuples(#988)
Added
- Added
array_combinations(#991) - Added
k_smallest_relaxedand variants (#925) - Added
next_arrayandcollect_array(#560) - Implemented
DoubleEndedIteratorforFilterOk(#948) - Implemented
DoubleEndedIteratorforFilterMapOk(#950)
Changed
- Allow
Q: ?SizedinItertools::contains(#971) - Improved hygiene of
chain!(#943) - Improved
into_group_map_bydocumentation (#1000) - Improved
tree_reducedocumentation (#955) - Improved discoverability of
merge_join_by(#966) - Improved discoverability of
take_while_inclusive(#972) - Improved documentation of
find_or_lastandfind_or_first(#984) - Prevented exponentially large type sizes in
tuple_combinations(#945) - Added
track_callerattr forasser_equal(#976)
Notable Internal Changes
- Fixed clippy lints (#956, #987, #1008)
- Addressed warnings within doctests (#964)
- CI: Run most tests with miri (#961)
- CI: Speed up "cargo-semver-checks" action (#938)
- Changed an instance of
default_featuresinCargo.tomltodefault-features(#985)
-
0.13.016 May 2024Release notes
Open source →Breaking
- Removed implementation of
DoubleEndedIteratorforConsTuples(#853) - Made
MultiProductfused and fixed on an empty iterator (#835, #834) - Changed
iproduct!to return tuples for maxi one iterator too (#870) - Changed
PutBack::put_backto return the old value (#880) - Removed deprecated
repeat_call, Itertools::{foreach, step, map_results, fold_results}(#878) - Removed
TakeWhileInclusive::new(#912)
Added
- Added
Itertools::{smallest_by, smallest_by_key, largest, largest_by, largest_by_key}(#654, #885) - Added
Itertools::tail(#899) - Implemented
DoubleEndedIteratorforProcessResults(#910) - Implemented
DebugforFormatWith(#931) - Added
Itertools::get(#891)
Changed
- Deprecated
Itertools::group_by(renamedchunk_by) (#866, #879) - Deprecated
unfold(usestd::iter::from_fninstead) (#871) - Optimized
GroupingMapBy(#873, #876) - Relaxed
Fnbounds toFnMutindiff_with, Itertools::into_group_map_by(#886) - Relaxed
Debug/Clonebounds forMapInto(#889) - Documented the
use_allocfeature (#887) - Optimized
Itertools::set_from(#888) - Removed badges in
README.md(#890) - Added "no-std" categories in
Cargo.toml(#894) - Fixed
Itertools::k_smalleston short unfused iterators (#900) - Deprecated
Itertools::tree_fold1(renamedtree_reduce) (#895) - Deprecated
GroupingMap::fold_first(renamedreduce) (#902) - Fixed
Itertools::k_smallest(0)to consume the iterator, optimizedItertools::k_smallest(1)(#909) - Specialized
Combinations::nth(#914) - Specialized
MergeBy::fold(#920) - Specialized
CombinationsWithReplacement::nth(#923) - Specialized
FlattenOk::{fold, rfold}(#927) - Specialized
Powerset::nth(#924) - Documentation fixes (#882, #936)
- Fixed
assert_equalfor iterators longer thani32::MAX(#932) - Updated the
must_usemessage of non-lazyKMergeByandTupleCombinations(#939)
Notable Internal Changes
- Tested iterator laziness (#792)
- Created
CONTRIBUTING.md(#767)
- Removed implementation of
-
0.12.129 Jan 2024Release notes
Open source →Added
- Documented iteration order guarantee for
Itertools::[tuple_]combinations(#822) - Documented possible panic in
iterate(#842) - Implemented
CloneandDebugforDiff(#845) - Implemented
DebugforWithPosition(#859) - Implemented
EqforMinMaxResult(#838) - Implemented
From<EitherOrBoth<A, B>>forOption<Either<A, B>>(#843) - Implemented
PeekingNextforRepeatN(#855)
Changed
- Made
CoalesceBylazy (#801) - Optimized
Filter[Map]Ok::next,Itertools::partition,Unique[By]::next[_back](#818) - Optimized
Itertools::find_position(#837) - Optimized
Positions::next[_back](#816) - Optimized
ZipLongest::fold(#854) - Relaxed
Debugbounds forGroupingMapBy(#860) - Specialized
ExactlyOneError::fold(#826) - Specialized
Interleave[Shortest]::fold(#849) - Specialized
MultiPeek::fold(#820) - Specialized
PadUsing::[r]fold(#825) - Specialized
PeekNth::fold(#824) - Specialized
Positions::[r]fold(#813) - Specialized
PutBackN::fold(#823) - Specialized
RepeatN::[r]fold(#821) - Specialized
TakeWhileInclusive::fold(#851) - Specialized
ZipLongest::rfold(#848)
Notable Internal Changes
- Added test coverage in CI (#847, #856)
- Added semver check in CI (#784)
- Enforced
clippyin CI (#740) - Enforced
rustdocin CI (#840) - Improved specialization tests (#807)
- More specialization benchmarks (#806)
- Documented iteration order guarantee for
-
0.12.014 Nov 2023Release notes
Open source →Breaking
- Made
take_while_inclusiveconsume iterator by value (#709) - Added
Clonebound toUnique(#777)
Added
- Added
Itertools::try_len(#723) - Added free function
sort_unstable(#796) - Added
GroupMap::fold_with(#778, #785) - Added
PeekNth::{peek_mut, peek_nth_mut}(#716) - Added
PeekNth::{next_if, next_if_eq}(#734) - Added conversion into
(Option<A>,Option<B>)toEitherOrBoth(#713) - Added conversion from
Either<A, B>toEitherOrBoth<A, B>(#715) - Implemented
ExactSizeIteratorforTuples(#761) - Implemented
ExactSizeIteratorfor(Circular)TupleWindows(#752) - Made
EitherOrBoth<T>a shorthand forEitherOrBoth<T, T>(#719)
Changed
- Added missing
#[must_use]annotations on iterator adaptors (#794) - Made
Combinationslazy (#795) - Made
Intersperse(With)lazy (#797) - Made
Permutationslazy (#793) - Made
Productlazy (#800) - Made
TupleWindowslazy (#602) - Specialized
Combinations::{count, size_hint}(#729) - Specialized
CombinationsWithReplacement::{count, size_hint}(#737) - Specialized
Powerset::fold(#765) - Specialized
Powerset::count(#735) - Specialized
TupleCombinations::{count, size_hint}(#763) - Specialized
TupleCombinations::fold(#775) - Specialized
WhileSome::fold(#780) - Specialized
WithPosition::fold(#772) - Specialized
ZipLongest::fold(#774) - Changed
{min, max}_set*operations requireallocfeature, instead ofstd(#760) - Improved documentation of
tree_fold1(#787) - Improved documentation of
permutations(#724) - Fixed typo in documentation of
multiunzip(#770)
Notable Internal Changes
- Improved specialization tests (#799, #786, #782)
- Simplified implementation of
Permutations(#739, #748, #790) - Combined
Merge/MergeBy/MergeJoinByimplementations (#736) - Simplified
Permutations::size_hint(#739) - Fix wrapping arithmetic in benchmarks (#770)
- Enforced
rustfmtin CI (#751) - Disallowed compile warnings in CI (#720)
- Used
cargo hackto check MSRV (#754)
- Made
-
0.11.022 Jun 2023Release notes
Open source →Breaking
- Make
Itertools::merge_join_byalso accept functions returning bool (#704) - Implement
PeekingNexttransitively over mutable references (#643) - Change
with_positionto yield(Position, Item)instead ofPosition<Item>(#699)
Added
- Add
Itertools::take_while_inclusive(#616) - Implement
PeekingNextforPeekingTakeWhile(#644) - Add
EitherOrBoth::{just_left, just_right, into_left, into_right, as_deref, as_deref_mut, left_or_insert, right_or_insert, left_or_insert_with, right_or_insert_with, insert_left, insert_right, insert_both}(#629) - Implement
CloneforCircularTupleWindows(#686) - Implement
CloneforChunks(#683) - Add
Itertools::process_results(#680)
Changed
- Use
Cellinstead ofRefCellinFormatandFormatWith(#608) - CI tweaks (#674, #675)
- Document and test the difference between stable and unstable sorts (#653)
- Fix documentation error on
Itertools::max_set_by_key(#692) - Move MSRV metadata to
Cargo.toml(#672) - Implement
equalwithIterator::eq(#591)
- Make
-
0.10.520 Sep 2022 -
0.10.413 Sep 2022Release notes
Open source →- Add
EitherOrBoth::orandEitherOrBoth::or_else(#593)- Add
min_set,max_setet al. (#613, #323) - Use
either/use_std(#628) - Documentation fixes (#612, #625, #632, #633, #634, #638)
- Code maintenance (#623, #624, #627, #630)
- Add
- Add
-
0.10.306 Dec 2021 -
0.10.109 Jun 2021Release notes
Open source →- Add
Itertools::contains(#514)- Add
Itertools::counts_by(#515) - Add
Itertools::partition_result(#511) - Add
Itertools::all_unique(#241) - Add
Itertools::duplicatesandItertools::duplicates_by(#502) - Add
chain!(#525) - Add
Itertools::at_most_one(#523) - Add
Itertools::flatten_ok(#527) - Add
EitherOrBoth::or_default(#583) - Add
Itertools::find_or_lastandItertools::find_or_first(#535) - Implement
FusedIteratorforFilterOk,FilterMapOk,InterleaveShortest,KMergeBy,MergeBy,PadUsing,Positions,Product,RcIter,TupleWindows,Unique,UniqueBy,Update,WhileSome,Combinations,CombinationsWithReplacement,Powerset,RepeatN, andWithPosition(#550) - Implement
FusedIteratorforInterleave,IntersperseWith, andZipLongest(#548)
- Add
- Add
-
0.10.026 Dec 2020Release notes
Open source →- Increase minimum supported Rust version to 1.32.0
- Improve macro hygiene (#507)
- Add
Itertools::powerset(#335) - Add
Itertools::sorted_unstable,Itertools::sorted_unstable_by, andItertools::sorted_unstable_by_key(#494) - Implement
ErrorforExactlyOneError(#484) - Undeprecate
Itertools::fold_while(#476) - Tuple-related adapters work for tuples of arity up to 12 (#475)
use_allocfeature for users who havealloc, but notstd(#474)- Add
Itertools::k_smallest(#473) - Add
Itertools::into_grouping_mapandGroupingMap(#465) - Add
Itertools::into_grouping_map_byandGroupingMapBy(#465) - Add
Itertools::counts(#468) - Add implementation of
DoubleEndedIteratorforUnique(#442) - Add implementation of
DoubleEndedIteratorforUniqueBy(#442) - Add implementation of
DoubleEndedIteratorforZip(#346) - Add
Itertools::multipeek(#435) - Add
Itertools::dedup_with_countandDedupWithCount(#423) - Add
Itertools::dedup_by_with_countandDedupByWithCount(#423) - Add
Itertools::intersperse_withandIntersperseWith(#381) - Add
Itertools::filter_okandFilterOk(#377) - Add
Itertools::filter_map_okandFilterMapOk(#377) - Deprecate
Itertools::fold_results, useItertools::fold_okinstead (#377) - Deprecate
Itertools::map_results, useItertools::map_okinstead (#377) - Deprecate
FoldResults, useFoldOkinstead (#377) - Deprecate
MapResults, useMapOkinstead (#377) - Add
Itertools::circular_tuple_windowsandCircularTupleWindows(#350) - Add
peek_nthandPeekNth(#303)
- Increase minimum supported Rust version to 1.32.0
-
0.9.007 Mar 2020Release notes
Open source →- Fix potential overflow in
MergeJoinBy::size_hint(#385)- Add
derive(Clone)where possible (#382) - Add
try_collectmethod (#394) - Add
HomogeneousTupletrait (#389) - Fix
combinations(0)andcombinations_with_replacement(0)(#383) - Don't require
ParitalEqto theItemofDedupBy(#397) - Implement missing specializations on the
PutBackadaptor and on theMergeJoinByiterator (#372) - Add
position_*methods (#412) - Derive
HashforEitherOrBoth(#417) - Increase minimum supported Rust version to 1.32.0
- Add
- Fix potential overflow in
-
0.8.223 Nov 2019Release notes
Open source →- Use
slice::iterinstead ofinto_iterto avoid future breakage (#378, by @LukasKalbertodt)
- Use
-
0.8.127 Oct 2019Release notes
Open source →- Added a
.exactly_one()iterator method that, on success, extracts the single value of an iterator ; by @Xaeroxe-
Added combinatory iterator adaptors:
-
[0, 1, 2].iter().permutations(2)yields[ vec![0, 1], vec![0, 2], vec![1, 0], vec![1, 2], vec![2, 0], vec![2, 1], ]; by @tobz1000
-
.combinations_with_replacement(k):[0, 1, 2].iter().combinations_with_replacement(2)yields[ vec![0, 0], vec![0, 1], vec![0, 2], vec![1, 1], vec![1, 2], vec![2, 2], ]; by @tommilligan
-
For reference, these methods join the already existing
.combinations(k):[0, 1, 2].iter().combinations(2)yields[ vec![0, 1], vec![0, 2], vec![1, 2], ]
-
-
Improved the performance of
.fold()-based internal iteration for the.intersperse()iterator ; by @jswrenn -
Added
.dedup_by(),.merge_by()and.kmerge_by()adaptors that work like.dedup(),.merge()and.kmerge(), but taking an additional custom comparison closure parameter. ; by @phimuemue -
Improved the performance of
.all_equal(); by @fyrchik -
Loosened the bounds on
.partition_map()to take just aFnMutclosure rather than aFnclosure, and made its implementation use internal iteration for better performance ; by @danielhenrymantilla -
Added convenience methods to
EitherOrBothelements yielded from the.zip_longest()iterator adaptor ; by @Avi-D-coder -
Added
.sum1()and.product1()iterator methods that respectively try to return the sum and the product of the elements of an iterator when it is not empty, otherwise they returnNone; by @Emerentius
-
- Added a
-
0.8.009 Dec 2018Release notes
Open source →- Added new adaptor
.map_into()for conversions usingIntoby @vorner- Improved
Itertoolsdocs by @JohnHeitmann - The return type of
.sorted_by_by_key()is now an iterator, not a Vec. - The return type of the
izip!(x, y)macro with exactly two arguments is now the usualIterator::zip. - Remove
.flatten()in favour of std's.flatten() - Deprecate
.foreach()in favour of std's.for_each() - Deprecate
.step()in favour of std's.step_by() - Deprecate
repeat_callin favour of std'srepeat_with - Deprecate
.fold_while()in favour of std's.try_fold() - Require Rust 1.24 as minimal version.
- Improved
- Added new adaptor
-
0.7.1124 Nov 2018Release notes
Open source →- Add convenience methods to
EitherOrBoth, making it more similar toOptionandEitherby @jethrogb
- Add convenience methods to
-
0.7.1024 Nov 2018 -
0.7.917 Nov 2018Release notes
Open source →- New inclusion policy: See the readme about suggesting features for std before accepting them in itertools.
- The
FoldWhiletype now implementsEqandPartialEqby @jturner314
- The
- New inclusion policy: See the readme about suggesting features for std before accepting them in itertools.
-
0.7.823 Mar 2018Release notes
Open source →- Add new iterator method
.tree_fold1()which is like.fold1()except items are combined in a tree structure (see its docs). By @scottmcm- Add more
Debugimpls by @phimuemue: KMerge, KMergeBy, MergeJoinBy, ConsTuples, Intersperse, ProcessResults, RcIter, Tee, TupleWindows, Tee, ZipLongest, ZipEq, Zip.
- Add more
- Add new iterator method
-
0.7.704 Mar 2018Release notes
Open source →- Add new iterator method
.into_group_map() -> HashMap<K, Vec<V>>which turns an iterator of(K, V)elements into such a hash table, where values are grouped by key. By @tobz1000- Add new free function
flattenfor the.flatten()adaptor. NOTE: recent Rust nightlies haveIterator::flattenand thus a clash with our flatten adaptor. One workaround is to use the itertoolsflattenfree function.
- Add new free function
- Add new iterator method
-
0.7.610 Jan 2018Release notes
Open source →- Add new adaptor
.multi_cartesian_product()which is an n-ary product iterator by @tobz1000- Add new method
.sorted_by_key()by @Xion - Provide simpler and faster
.count()for.unique()and.unique_by()
- Add new method
- Add new adaptor
-
0.7.506 Jan 2018 -
0.7.402 Dec 2017Release notes
Open source →- Add new adaptor
.update()by @lucasem; this adaptor is used to modify an element before passing it on in an iterator chain.
- Add new adaptor
-
0.7.326 Nov 2017Release notes
Open source →- Add new method
.collect_tuple()by @matklad; it makes a tuple out of the iterator's elements if the number of them matches exactly.- Implement
foldandcollectfor.map_results()which means it reuses the code of the standard.map()for these methods.
- Implement
- Add new method
-
0.7.230 Oct 2017Release notes
Open source →- Add new adaptor
.merge_join_byby @srijs; a heterogeneous merge join for two ordered sequences.
- Add new adaptor
-
0.7.113 Oct 2017Release notes
Open source →- Iterator adaptors and iterators in itertools now use the same
must_usereminder that the standard library adaptors do, by @matematikaedit and @bluss “iterator adaptors are lazy and do nothing unless consumed”.
- Iterator adaptors and iterators in itertools now use the same
-
0.7.009 Oct 2017Release notes
Open source →- Faster
izip!()by @krdlnizip!()is now a wrapper for repeated regular.zip()and a single.map(). This means it optimizes as well as the standard library.zip()it uses. Note:multizipandizip!()are now different! The former has a named type but the latter optimizes better.- Faster
.unique() no_stdsupport, which is opt-in!- Many lovable features are still there without std, like
izip!()or.format()or.merge(), but not those that use collections.
- Many lovable features are still there without std, like
- Trait bounds were required up front instead of just on the type:
group_by'sPartialEqby @Phlosioneer andrepeat_call'sFnMut. - Removed deprecated constructor
Zip::new— useizip!()ormultizip()
- Faster
-
0.6.529 Sep 2017Release notes
Open source →- Fix bug in
.cartesian_product()'s fold (which only was visible for unfused iterators).
- Fix bug in
-
0.6.428 Sep 2017Release notes
Open source →- Add specific
foldimplementations for.cartesian_product()andcons_tuples(), which improves their performance in fold, foreach, and iterator consumers derived from them.
- Add specific
-
0.6.320 Sep 2017 -
0.6.227 Aug 2017Release notes
Open source →- Add function
process_resultswhich can “lift” a function of the regular values of an iterator so that it can process theOkvalues from an iterator ofResultsinstead, by @shepmaster- Add iterator method
.concat()which combines all iterator elements into a single collection using theExtendtrait, by @srijs
- Add iterator method
- Add function
-
0.6.117 Jul 2017Release notes
Open source →- Better size hint testing and subsequent size hint bugfixes by @rkarp. Fixes bugs in product,
interleave_shortestsize hints.- New iterator method
.all_equal()by @phimuemue
- New iterator method
- Better size hint testing and subsequent size hint bugfixes by @rkarp. Fixes bugs in product,
-
0.6.005 Apr 2017Release notes
Open source →- Deprecated names were removed in favour of their replacements
.flatten()does not implement double ended iteration anymore.fold_while()uses&mut selfand returnsFoldWhile<T>, for composability #168.foreach()and.fold1()useself, like.fold()does..combinations(0)now produces a single empty vector. #174
- Deprecated names were removed in favour of their replacements
-
0.5.1002 Apr 2017Release notes
Open source →- Add itertools method
.kmerge_by()(and corresponding free function)- Relaxed trait requirement of
.kmerge()and.minmax()to PartialOrd.
- Relaxed trait requirement of
- Add itertools method
-
0.5.921 Jan 2017 -
0.5.820 Dec 2016 -
0.5.711 Dec 2016Release notes
Open source →- Add iterator adaptor
.with_position()- Fix multipeek's performance for long peeks by using
VecDeque.
- Fix multipeek's performance for long peeks by using
- Add iterator adaptor
-
0.5.613 Nov 2016 -
0.5.525 Oct 2016Release notes
Open source →- Many more adaptors now implement
Debug- Add free function constructor
repeat_n.RepeatN::newis now deprecated.
- Add free function constructor
- Many more adaptors now implement
-
0.5.420 Oct 2016Release notes
Open source →- Add infinite generator function
iterate, that takes a seed and a closure.
- Add infinite generator function
-
0.5.320 Oct 2016Release notes
Open source →- Special-cased
.fold()for flatten and put back..foreach()now uses fold on the iterator, to pick up any iterator specific loop implementation..combinations(n)asserts up front thatn != 0, instead of running into an error on the second iterator element.
- Special-cased
-
0.5.205 Oct 2016Release notes
Open source →- Add
.tuples::<T>()that iterates by two, three or four elements at a time (whereTis a tuple type).- Add
.tuple_windows::<T>()that iterates using a window of the two, three or four most recent elements. - Add
.next_tuple::<T>()method, that picks the next two, three or four elements in one go. .interleave()now has an accurate size hint.
- Add
- Add
-
0.5.128 Sep 2016Release notes
Open source →- Workaround module/function name clash that made racer crash on completing itertools. Only internal changes needed.
-
0.5.026 Sep 2016Release notes
Open source →- Release announcement
- Renamed:
combinationsis nowtuple_combinationscombinations_ntocombinationsgroup_by_lazy,chunks_lazytogroup_by,chunksUnfold::newtounfold()RepeatCall::newtorepeat_call()Zip::newtomultizipPutBack::new,PutBackN::newtoput_back,put_back_nPutBack::with_valueis now a builder setter, not a constructorMultiPeek::new,.multipeek()tomultipeek()formattoformat_withandformat_defaulttoformat.into_rc()torciterPartitionenum is nowEither
- Module reorganization:
- All iterator structs are under
itertools::structsbut also reexported to the top level, for backwards compatibility - All free functions are reexported at the root,
itertools::freewill be removed in the next version
- All iterator structs are under
- Removed:
ZipSlices, use.zip()instead.enumerate_from(),ZipTrusted, due to being unstable.mend_slices(), moved to crateodds- Stride, StrideMut, moved to crate
odds linspace(), moved to crateitertools-num.sort_by(), use.sorted_by().is_empty_hint(), use.size_hint().dropn(), use.dropping().map_fn(), use.map().slice(), use.take()/.skip()- helper traits in
misc newconstructors on iterator structs, useItertoolstrait or free functions insteaditertools::size_hintis now private
- Behaviour changes:
formatandformat_withhelpers now panic if you try to format them more than once.repeat_callis not double ended anymore
- New features:
- tuple flattening iterator is constructible with
cons_tuples - itertools reexports
Eitherfrom theeithercrate.Either<L, R>is an iterator whenL, Rare. MinMaxResultnow implementsCopyandClonetuple_combinationssupports 1-4 tuples of combinations (previously just 2)
- tuple flattening iterator is constructible with
- Renamed:
- Release announcement
-
0.5.0-alpha.126 Sep 2016 pre-releaseNothing published for this version
-
0.5.0-alpha.023 Sep 2016 pre-releaseNothing published for this version
-
0.4.1915 Sep 2016Release notes
Open source →- Add
.minmax_by()- Add
itertools::free::cloned - Add
itertools::free::rciter - Improve
.step(n)slightly to take advantage of specialized Fuse better.
- Add
- Add
-
0.4.1814 Aug 2016Release notes
Open source →- Only changes related to the "unstable" crate feature. This feature is more or less deprecated.
- Use deprecated warnings when unstable is enabled.
.enumerate_from()will be removed imminently since it's using a deprecated libstd trait.
- Use deprecated warnings when unstable is enabled.
- Only changes related to the "unstable" crate feature. This feature is more or less deprecated.
-
0.4.1703 Aug 2016Release notes
Open source →- Fix bug in
.kmerge()that caused it to often produce the wrong order #134
- Fix bug in
-
0.4.1616 Jun 2016Release notes
Open source →- Improve precision of the
interleave_shortestadaptor's size hint (it is now computed exactly when possible).
- Improve precision of the
-
0.4.1512 May 2016Release notes
Open source →- Fixup on top of the workaround in 0.4.14. A function in
itertools::freewas removed by mistake and now it is added back again.
- Fixup on top of the workaround in 0.4.14. A function in
-
0.4.1412 May 2016Release notes
Open source →- Workaround an upstream regression in a Rust nightly build that broke compilation of of
itertools::free::{interleave, merge}
- Workaround an upstream regression in a Rust nightly build that broke compilation of of
-
0.4.1316 Apr 2016Release notes
Open source →- Add
.minmax()and.minmax_by_key(), iterator methods for finding both minimum and maximum in one scan.- Add
.format_default(), a simpler version of.format()(lazy formatting for iterators).
- Add
- Add
-
0.4.1201 Apr 2016Release notes
Open source →- Add
.zip_eq(), an adaptor like.zip()except it ensures iterators of inequal length don't pass silently (instead it panics).- Add
.fold_while(), an iterator method that is a fold that can short-circuit. - Add
.partition_map(), an iterator method that can separate elements into two collections.
- Add
- Add
-
0.4.1108 Mar 2016 -
0.4.1023 Feb 2016 -
0.4.922 Feb 2016Release notes
Open source →- Add k-ary merge adaptor
.kmerge()- Fix a bug in
.islice()with rangesa..bwhere a> b.
- Fix a bug in
- Add k-ary merge adaptor
-
0.4.808 Feb 2016 -
0.4.721 Jan 2016Release notes
Open source →- Add function
diff_with()that compares two iterators- Add
.combinations_n(), an n-ary combinations iterator - Add methods
PutBack::with_valueandPutBack::into_parts.
- Add
- Add function
-
0.4.609 Jan 2016Release notes
Open source →- Add method
.sorted()- Add module
itertools::freewith free function variants of common iterator adaptors and methods. For exampleenumerate(iterable),rev(iterable), and so on.
- Add module
- Add method