All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
-
Breaking: The
Sortable
trait now returnsstd::io::Result
on bothencode
anddecode
methods, exposing underlying errors. -
Breaking: The
SortedIterator
iterator now returnsstd::io::Result<T>
instead ofT
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 areClone
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.
- Added
sort_by
andsort_by_key
(by @NieDzejkob #10)
-
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) The trait also requires the implementer to beSend
to support the new parallel sorting feature. -
Breaking: replaced setter styles methods with builder style methods (see PR #9)
set_max_size
is nowwith_segment_size
set_sort_dir
is nowwith_sort_dir