28 KiB
Changelog
0.14.0
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.0
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)
0.12.1
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)
0.12.0
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)
0.11.0
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)
0.10.5
- Maintenance
0.10.4
- 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)
0.10.3
- Maintenance
0.10.2
- Add
Itertools::multiunzip(#362, #565) - Add
intersperseandintersperse_withfree functions (#555) - Add
Itertools::sorted_by_cached_key(#424, #575) - Specialize
ProcessResults::fold(#563) - Fix subtraction overflow in
DuplicatesBy::size_hint(#552) - Fix specialization tests (#574)
- More
Debugimpls (#573) - Deprecate
fold1(usereduceinstead) (#580) - Documentation fixes (
HomogenousTuple,into_group_map,into_group_map_by,MultiPeek::peek) (#543 et al.)
0.10.1
- 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)
0.10.0
- 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)
0.9.0
- 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
0.8.2
- Use
slice::iterinstead ofinto_iterto avoid future breakage (#378, by @LukasKalbertodt)
0.8.1
-
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
0.8.0
- 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.
0.7.11
- Add convenience methods to
EitherOrBoth, making it more similar toOptionandEitherby @jethrogb
0.7.10
- No changes.
0.7.9
- New inclusion policy: See the readme about suggesting features for std before accepting them in itertools.
- The
FoldWhiletype now implementsEqandPartialEqby @jturner314
0.7.8
- 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.
0.7.7
- 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.
0.7.6
- 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()
0.7.5
.multipeek()now implementsPeekingNext, by @nicopap.
0.7.4
- Add new adaptor
.update()by @lucasem; this adaptor is used to modify an element before passing it on in an iterator chain.
0.7.3
- 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.
0.7.2
- Add new adaptor
.merge_join_byby @srijs; a heterogeneous merge join for two ordered sequences.
0.7.1
- 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”.
0.7.0
- 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()
0.6.5
- Fix bug in
.cartesian_product()'s fold (which only was visible for unfused iterators).
0.6.4
- Add specific
foldimplementations for.cartesian_product()andcons_tuples(), which improves their performance in fold, foreach, and iterator consumers derived from them.
0.6.3
- Add iterator adaptor
.positions(predicate)by @tmccombs
0.6.2
- 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
0.6.1
- 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
0.6.0
- 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
0.5.10
- Add itertools method
.kmerge_by()(and corresponding free function) - Relaxed trait requirement of
.kmerge()and.minmax()to PartialOrd.
0.5.9
- Add multipeek method
.reset_peek() - Add categories
0.5.8
- Add iterator adaptor
.peeking_take_while()and its traitPeekingNext.
0.5.7
- Add iterator adaptor
.with_position() - Fix multipeek's performance for long peeks by using
VecDeque.
0.5.6
- Add
.map_results()
0.5.5
- Many more adaptors now implement
Debug - Add free function constructor
repeat_n.RepeatN::newis now deprecated.
0.5.4
- Add infinite generator function
iterate, that takes a seed and a closure.
0.5.3
- 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.
0.5.2
- 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.
0.5.1
- Workaround module/function name clash that made racer crash on completing itertools. Only internal changes needed.
0.5.0
- 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
0.4.19
- Add
.minmax_by() - Add
itertools::free::cloned - Add
itertools::free::rciter - Improve
.step(n)slightly to take advantage of specialized Fuse better.
0.4.18
- 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.
0.4.17
- Fix bug in
.kmerge()that caused it to often produce the wrong order #134
0.4.16
- Improve precision of the
interleave_shortestadaptor's size hint (it is now computed exactly when possible).
0.4.15
- 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.
0.4.14
- Workaround an upstream regression in a Rust nightly build that broke compilation of of
itertools::free::{interleave, merge}
0.4.13
- 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).
0.4.12
- 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.
0.4.11
- Add
.get()forStride{,Mut}and.get_mut()forStrideMut
0.4.10
- Improve performance of
.kmerge()
0.4.9
- Add k-ary merge adaptor
.kmerge() - Fix a bug in
.islice()with rangesa..bwhere a> b.
0.4.8
- Implement
Clone,DebugforLinspace
0.4.7
- Add function
diff_with()that compares two iterators - Add
.combinations_n(), an n-ary combinations iterator - Add methods
PutBack::with_valueandPutBack::into_parts.
0.4.6
- Add method
.sorted() - Add module
itertools::freewith free function variants of common iterator adaptors and methods. For exampleenumerate(iterable),rev(iterable), and so on.
0.4.5
- Add
.flatten()
0.4.4
- Allow composing
ZipSliceswith itself
0.4.3
- Write
iproduct!()as a single expression; this allows temporary values in its arguments.
0.4.2
- Add
.fold_options() - Require Rust 1.1 or later
0.4.1
- Update
.dropping()to take advantage of.nth()
0.4.0
.merge(),.unique()and.dedup()now perform better due to not using function pointers- Add free functions
enumerate()andrev() - Breaking changes:
- Return types of
.merge()and.merge_by()renamed and changed - Method
Merge::newremoved .merge_by()now takes a closure that returns bool.- Return type of
.dedup()changed - Return type of
.mend_slices()changed - Return type of
.unique()changed - Removed function
times(), structTimes: use a range instead - Removed deprecated macro
icompr!() - Removed deprecated
FnMapand method.fn_map(): use.map_fn() .interleave_shortest()is no longer guaranteed to act like fused
- Return types of
0.3.25
- Rename
.sort_by()to.sorted_by(). Old name is deprecated. - Fix well-formedness warnings from RFC 1214, no user visible impact
0.3.24
- Improve performance of
.merge()'s ordering function slightly
0.3.23
- Added
.chunks(), similar to (and based on).group_by_lazy(). - Tweak linspace to match numpy.linspace and make it double ended.
0.3.22
- Added
ZipSlices, a fast zip for slices
0.3.21
- Remove
Debugimpl forFormat, it will have different use later
0.3.20
- Optimize
.group_by_lazy()
0.3.19
- Added
.group_by_lazy(), a possibly nonallocating group by - Added
.format(), a nonallocating formatting helper for iterators - Remove uses of
RandomAccessIteratorsince it has been deprecated in Rust.
0.3.17
- Added (adopted)
Unfoldfrom Rust
0.3.16
- Added adaptors
.unique(),.unique_by()
0.3.15
- Added method
.sort_by()
0.3.14
- Added adaptor
.while_some()
0.3.13
- Added adaptor
.interleave_shortest() - Added adaptor
.pad_using()
0.3.11
- Added
assert_equalfunction
0.3.10
- Bugfix
.combinations()size_hint.
0.3.8
- Added source
RepeatCall
0.3.7
- Added adaptor
PutBackN - Added adaptor
.combinations()
0.3.6
- Added
itertools::partition, partition a sequence in place based on a predicate. - Deprecate
icompr!()with no replacement.
0.3.5
.map_fn()replaces deprecated.fn_map().
0.3.4
.take_while_ref()by-ref adaptor.coalesce()adaptor.mend_slices()adaptor
0.3.3
.dropping_back()method.fold1()method.is_empty_hint()method