PackageTrack
Sign in Get early access

joinery

A small crate for generically joining iterators with a separator

3.1.0 14M downloads/mo #2602 most downloaded on crates.io Lucretiel/joinery

What this package is like to depend on

Last release 4 years ago

no release in 18 months

Ships unpredictably

gaps range from 2 weeks to 2.3 years

Most releases are documented

notes for 11 of 16 stable releases

Nothing withdrawn

no release was ever pulled

8 years old

16 releases · first in 2018

0 releases in the last 12 months

see the full history below

Release timeline

16 releases · Jul 2018 to Sep 2022
2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 16
  1. 3.1.0 14 Sep 2022
    Release notes

    Internal

    • Added optimized implementations of Iterator::last and Iterator::count
    Open source →
  2. 3.0.0 17 Aug 2022
    Release notes

    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.

    Changed

    • More efficient implementation of JoinIter. No more reduntant states allows for a manual try_fold implementation, at the cost of the peek family of methods
    • Now using Edition 2021
    • No longer need to use the private::Display<'a> hack

    Removed

    • Removed peek and peek_item
    • Removed syn dependency
    Open source →
  3. 2.1.0 24 May 2021
    Release notes

    Added

    • Added token-stream feature which, when enabled, provides a ToTokens implementation to Join. This allows Join objects to be used as lazy token streams in quote.
    • 0-size Display type for Newline in separators.
    Open source →
  4. 2.0.0 10 Feb 2019
    Release notes

    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.

    Design notes:

    • 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 the CloneIterator adapter, which adds &T: IntoIterator to types that are T: 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.

    Changed

    • Split the library into various modules for the different functionality.
      • join contains the Join type and related traits.
      • iter contains the JoinIter type and related traits and structs.
      • separators contains various convenient 0-size Display types for common separators, like Comma and Space.

    Added

    • JoinableIterator trait, which allows joining iterators directly via iter_join_with, or adapting them into Join structs via join_with
    • Added numerous extra 0-size separator types, like Comma and Space, for common separators.
    • Advanced to Rust 2018 Edition.

    Removed

    • NoSeparator removed from the prelude, since it's generally preferable to use join_concat
    • Many methods on Join were deemed too niche and removed as part of the redesign, such as partial_clone and consume_fmt.
    Open source →
  5. 1.2.2 16 Sep 2018
    Release notes

    2018-09-15

    Minor

    • Various optimizations and simplifications
    • Extra test
    • Added cargo categories
    Open source →
  6. 1.2.1 11 Sep 2018
    Release notes

    2018-09-10

    Minor

    • Fixed broken documentation links
    Open source →
  7. 1.2.0 11 Sep 2018
    Release notes
    • Updated changelog
    • Updated version
    • Updated badge
    • Updated some docs
    Open source →
    Release notes

    2018-09-10

    Changed

    • Joinery is now #![no_std]
    Open source →
  8. 1.1.2 23 Aug 2018
    Release notes

    2018-08-23

    Minor

    • Fixed broken link in docs
    Open source →
  9. 1.1.1 23 Aug 2018
    Release notes

    2018-08-23

    Minor

    • Cleaned up the README badges
    Open source →
  10. 1.1.0 23 Aug 2018
    Release notes

    Added new feature version notice

    Open source →
    Release notes

    2018-08-23

    Added

    • 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.

    Removed

    • 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.

    Minor

    • Small documentation fix (#12)
    • Added README badges
    Open source →
  11. 1.0.0 10 Aug 2018
    Release notes

    2018-08-10

    First major release.

    Open source →
  12. 0.2.3 10 Aug 2018

    Nothing published for this version

  13. 0.2.2 10 Aug 2018

    Nothing published for this version

  14. 0.2.1 30 Jul 2018

    Nothing published for this version

  15. 0.2.0 30 Jul 2018

    Nothing published for this version

  16. 0.1.0 29 Jul 2018

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive