{"ecosystem":"cargo","package":"itertools","from_version":null,"to_version":null,"changes":[{"from_version":"0.4.19","to_version":"0.5.0","change_type":"behavior","description":"`format` to `format_with` and `format_default` to `format`","migration_hint":null},{"from_version":"0.4.19","to_version":"0.5.0","change_type":"breaking","description":"`Unfold::new` to `unfold()`","migration_hint":null},{"from_version":"0.4.19","to_version":"0.5.0","change_type":"breaking","description":"`RepeatCall::new` to `repeat_call()`","migration_hint":null},{"from_version":"0.4.19","to_version":"0.5.0","change_type":"breaking","description":"`Zip::new` to `multizip`","migration_hint":null},{"from_version":"0.4.19","to_version":"0.5.0","change_type":"breaking","description":"`PutBack::new`, `PutBackN::new` to `put_back`, `put_back_n`","migration_hint":null},{"from_version":"0.4.19","to_version":"0.5.0","change_type":"breaking","description":"[Release announcement](https://bluss.github.io/rust/2016/09/26/itertools-0.5.0/)","migration_hint":null},{"from_version":"0.4.19","to_version":"0.5.0","change_type":"breaking","description":"`combinations` is now `tuple_combinations`","migration_hint":null},{"from_version":"0.4.19","to_version":"0.5.0","change_type":"breaking","description":"`combinations_n` to `combinations`","migration_hint":null},{"from_version":"0.4.19","to_version":"0.5.0","change_type":"breaking","description":"`group_by_lazy`, `chunks_lazy` to `group_by`, `chunks`","migration_hint":null},{"from_version":"0.4.19","to_version":"0.5.0","change_type":"breaking","description":"`MultiPeek::new`, `.multipeek()` to `multipeek()`","migration_hint":null},{"from_version":"0.4.19","to_version":"0.5.0","change_type":"breaking","description":"`.into_rc()` to `rciter`","migration_hint":null},{"from_version":"0.4.19","to_version":"0.5.0","change_type":"breaking","description":"`Partition` enum is now `Either`","migration_hint":null},{"from_version":"0.4.19","to_version":"0.5.0","change_type":"breaking","description":"Module reorganization:","migration_hint":null},{"from_version":"0.4.19","to_version":"0.5.0","change_type":"breaking","description":"All iterator structs are under `itertools::structs` but also reexported to the top level, for backwards compatibility","migration_hint":null},{"from_version":"0.4.19","to_version":"0.5.0","change_type":"breaking","description":"`PutBack::with_value` is now a builder setter, not a constructor","migration_hint":null},{"from_version":"0.4.19","to_version":"0.5.0","change_type":"breaking","description":"`ZipSlices`, use `.zip()` instead","migration_hint":null},{"from_version":"0.4.19","to_version":"0.5.0","change_type":"breaking","description":"`.enumerate_from()`, `ZipTrusted`, due to being unstable","migration_hint":null},{"from_version":"0.4.19","to_version":"0.5.0","change_type":"breaking","description":"`.mend_slices()`, moved to crate `odds`","migration_hint":null},{"from_version":"0.4.19","to_version":"0.5.0","change_type":"breaking","description":"Stride, StrideMut, moved to crate `odds`","migration_hint":null},{"from_version":"0.4.19","to_version":"0.5.0","change_type":"breaking","description":"`linspace()`, moved to crate `itertools-num`","migration_hint":null},{"from_version":"0.4.19","to_version":"0.5.0","change_type":"breaking","description":"`.sort_by()`, use `.sorted_by()`","migration_hint":null},{"from_version":"0.4.19","to_version":"0.5.0","change_type":"breaking","description":"`.is_empty_hint()`, use `.size_hint()`","migration_hint":null},{"from_version":"0.4.19","to_version":"0.5.0","change_type":"removed","description":"All free functions are reexported at the root, `itertools::free` will be removed in the next version","migration_hint":null},{"from_version":"0.3.25","to_version":"0.4.0","change_type":"breaking","description":"`.merge()`, `.unique()` and `.dedup()` now perform better due to not using function pointers","migration_hint":null},{"from_version":"0.3.25","to_version":"0.4.0","change_type":"breaking","description":"Add free functions `enumerate()` and `rev()`","migration_hint":null},{"from_version":"0.3.25","to_version":"0.4.0","change_type":"breaking","description":"Breaking changes:","migration_hint":null},{"from_version":"0.3.25","to_version":"0.4.0","change_type":"breaking","description":"`.interleave_shortest()` is no longer guaranteed to act like fused","migration_hint":null},{"from_version":"0.3.25","to_version":"0.4.0","change_type":"breaking","description":"`.merge_by()` now takes a closure that returns bool.","migration_hint":null},{"from_version":"0.3.25","to_version":"0.4.0","change_type":"breaking","description":"Return type of `.dedup()` changed","migration_hint":null},{"from_version":"0.3.25","to_version":"0.4.0","change_type":"breaking","description":"Return type of `.mend_slices()` changed","migration_hint":null},{"from_version":"0.3.25","to_version":"0.4.0","change_type":"breaking","description":"Return type of `.unique()` changed","migration_hint":null},{"from_version":"0.3.25","to_version":"0.4.0","change_type":"removed","description":"Removed deprecated macro `icompr!()`","migration_hint":null},{"from_version":"0.3.25","to_version":"0.4.0","change_type":"removed","description":"Method `Merge::new` removed","migration_hint":null},{"from_version":"0.3.25","to_version":"0.4.0","change_type":"removed","description":"Removed deprecated `FnMap` and method `.fn_map()`: use `.map_fn()`","migration_hint":null},{"from_version":"0.3.25","to_version":"0.4.0","change_type":"removed","description":"Removed function `times()`, struct `Times`: use a range instead","migration_hint":null},{"from_version":"0.3.25","to_version":"0.4.0","change_type":"renamed","description":"Return types of `.merge()` and `.merge_by()` renamed and changed","migration_hint":null}],"total":36,"note":"Curated major-version breaking changes. Always verify against the package's official changelog before migrating.","_cache":"miss"}