extsort 0.5.0

External sorting (i.e. on disk sorting) capability on arbitrarily sized iterator
Documentation
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.5.0] - 2024-02-23

- Breaking: The `Sortable` trait now returns `std::io::Result` on both `encode`
  and `decode` methods, exposing underlying errors.

- Breaking: The `SortedIterator` iterator now returns `std::io::Result<T>`
  instead of `T` directly, allowing propagation of underlying errors.

- Breaking change: The comparator methods or key extractor now require being
  `Clone`. This change should not affect most users, as closures are `Clone` if
   they don't capture any variables.

- Added a new "pushed" iterator, which allows pushing new elements instead of
  consuming them through an iterator. This is particularly useful when the data is
  not readily available as an iterator.

- Methods accepting iterators now accept `IntoIterator` for flexibility.

## [0.4.2] - 2021-02-04

- Added `sort_by` and `sort_by_key` (by @NieDzejkob [#10]https://github.com/appaquet/extsort-rs/pull/10)

## [0.4.0] - 2020-12-23

- Added support for parallel sorting of the in-memory buffer (see `ExternalSorter::with_parallel_sort`).
  This feature is not always beneficial if the in-memory buffer is not big enough for parallelism to
  have an impact, so benchmark your workload.

- Breaking: cleaner `Sortable` trait ([commit]https://github.com/appaquet/extsort-rs/commit/6ab89a2c1a981c5715235c293d9a1122f22bd2dc)
  The trait also requires the implementer to be `Send` to support the new parallel sorting feature.

- Breaking: replaced setter styles methods with builder style methods (see [PR #9]https://github.com/appaquet/extsort-rs/pull/9)
  - `set_max_size` is now `with_segment_size`
  - `set_sort_dir` is now `with_sort_dir`