The format is based on Keep a Changelog, and this project adheres to Semantic Versioning 2.0.0.
This changelog was added after the release of 1.0.0; changes before that are left undocumented.
- Minor style improvement to
join_size
helper function
- Added optimized implementations of
Iterator::last
andIterator::count
Removed some methods to allow for a more efficient implementation of JoinIter
. If you weren't using peek
or peek_item
you should be able to upgrade without issue.
- More efficient implementation of
JoinIter
. No more reduntant states allows for a manualtry_fold
implementation, at the cost of thepeek
family of methods - Now using Edition 2021
- No longer need to use the
private::Display<'a>
hack
- Removed
peek
andpeek_item
- Removed
syn
dependency
- Added
token-stream
feature which, when enabled, provides aToTokens
implementation toJoin
. This allowsJoin
objects to be used as lazy token streams inquote
. - 0-size
Display
type forNewline
inseparators
.
2019-02-10
Major redesign of library. Most idiomatic joinery code should continue to work, but most of the library's traits and structs have been completely redesigned. The most significant change is that joinery is no longer primarily based on cloneable iterators, but rather on referentially iterable collections; that is, types for which &'a Container: IntoIterator
. This means that we can get rid of a lot of the weird cruft related to partial_clone
, etc.
- Iterators and collections are now treated separately. The
Join
struct is now based on collections, which are types which implement referential iteration (that is, for which&T: IntoIterator
). - Iterators can be adapted into
Join
instances via theCloneIterator
adapter, which adds&T: IntoIterator
to types that areT: Clone + Iterator
. - While the types have drastically changed, idiomatic code (which imports the prelude and uses mainly the
join_with
method) should continue to function correctly.
- Split the library into various modules for the different functionality.
join
contains theJoin
type and related traits.iter
contains theJoinIter
type and related traits and structs.separators
contains various convenient 0-sizeDisplay
types for common separators, likeComma
andSpace
.
JoinableIterator
trait, which allows joining iterators directly viaiter_join_with
, or adapting them intoJoin
structs viajoin_with
- Added numerous extra 0-size separator types, like
Comma
andSpace
, for common separators. - Advanced to Rust 2018 Edition.
NoSeparator
removed from the prelude, since it's generally preferable to usejoin_concat
- Many methods on
Join
were deemed too niche and removed as part of the redesign, such aspartial_clone
andconsume_fmt
.
2018-09-15
- Various optimizations and simplifications
- Extra test
- Added cargo categories
2018-09-10
- Fixed broken documentation links
2018-09-10
- Joinery is now
#![no_std]
2018-08-23
- Fixed broken link in docs
2018-08-23
- Cleaned up the README badges
2018-08-23
- Empty separators:
- Added
NoSeparator
, a zero-size type which allows users to idiomatically join an iterator without any separator. - Added
join_concat
, a helper method for separator-free joins.
- Added
- Removed
try_fold
after discovering serious implementation bug.- Added test demonstrating this bug
- Would like to re-add someday, but seems difficult or impossible.
- Note that Iterator still provides
try_fold
; the only thing being removed is the specialized implementation.
- Small documentation fix (#12)
- Added README badges
2018-08-10
First major release.