PackageTrack
Sign in Get early access

frunk

Frunk provides developers with a number of functional programming tools like HList, Coproduct, Generic, LabelledGeneric, Validated, Monoid, Semigroup and friends.

0.5.0 11M downloads/mo #2911 most downloaded on crates.io lloydmeta/frunk

What this package is like to depend on

Last release 1 months ago

04 Jul 2026

Ships fairly regularly

a new release about every 9 months

Some releases are documented

notes for 14 of 50 stable releases

Nothing withdrawn

no release was ever pulled

10 years old

50 releases · first in 2016

1 release in the last 12 months

see the full history below

Release timeline

50 releases · Oct 2016 to Jul 2026
2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 50
  1. 0.5.0 04 Jul 2026
    Release notes

    Bumped due to new quickcheck (1.x-based now!)

    Open source →
    Release notes

    Please see the changelog for details

    Open source →
    Release notes
    • Add Generic support for enum representations (https://github.com/lloydmeta/frunk/pull/252)
    Open source →
  2. 0.4.4 14 Jun 2025
    Release notes

    Please see the changelog for details

    Open source →
    Release notes
    • Implement Plucker/ByNameFieldPlucker for &HList (https://github.com/lloydmeta/frunk/pull/240)
    Open source →
  3. 0.4.3 31 Aug 2024
    Release notes

    Please see the changelog for details

    Open source →
    Release notes
    • avoid clippy::unneeded_field_pattern (https://github.com/lloydmeta/frunk/pull/216)
    • rework #![no_std] support, switch on alloc (https://github.com/lloydmeta/frunk/pull/236)
    Open source →
  4. 0.4.2 17 Jun 2023
    Release notes

    See changelog for details.

    Much thanks to the efforts of @CobaltCause.

    Open source →
    Release notes
    • Removed proc-macro-hack machinery (proc-macros-impl) (https://github.com/lloydmeta/frunk/pull/214)
    • Add function for explicitly extending an hlist (https://github.com/lloydmeta/frunk/pull/209)
    Open source →
  5. 0.4.1 03 Nov 2022
    Release notes

    Lots of good stuff thanks to team work from a number of contributors (incl steffahn, kpp, agluszak, rosefromthedead, and BGR360)

    From the Changelog

    • Documentation fix for Hcons::sculpt (#194)
    • Optimise Semigroup for HashSet and HashMap (#196)
    • Update to 2021 edition (#200)
    • Add extract to get value out of 1-type coproduct (#201)
    • Fix needless borrow (#202)
    • Add Coproduct::map (#204)
    Open source →
    Release notes
    • Documentation fix for Hcons::sculpt (https://github.com/lloydmeta/frunk/pull/194)
    • Optimise Semigroup for HashSet and HashMap (https://github.com/lloydmeta/frunk/pull/196)
    • Update to 2021 edition (https://github.com/lloydmeta/frunk/pull/200)
    • Add extract to get value out of 1-type coproduct (https://github.com/lloydmeta/frunk/pull/201)
    • Fix needless borrow (https://github.com/lloydmeta/frunk/pull/202)
    • Add Coproduct::map (https://github.com/lloydmeta/frunk/pull/204)
    Open source →
  6. 0.4.0 25 Jun 2021
    Release notes

    Lots of good stuff thanks to team work from a number of contributors (incl @mbrobbel, @ImmemorConsultrixContrarie , @ExpHP)

    From the Changelog

    • [Breaking change] Rename Hlist! type macro to HList! (#132)
    • [Breaking change] Remove deprecated HList.length() (#125)
    • [Breaking change] HFoldRightable rework: now HFoldRightable::foldr does not differ from HFoldLeftable::foldl in calling, like std::iter::DoubleEndedIterator::rfold does not differ from std::iter::Iterator::fold. Note: though foldr behavior wasn't changed, all old foldr calls would either stop compiling or produce wrong results (#171)
    • [Breaking change] Bump quote, syn and proc-macro2 to 1 (#183)
    • Fix unicode identifiers support #186
    Open source →
    Release notes
    • [Breaking change] Rename Hlist! type macro to HList! (https://github.com/lloydmeta/frunk/issues/132)
    • [Breaking change] Remove deprecated HList.length() (https://github.com/lloydmeta/frunk/issues/125)
    • [Breaking change] HFoldRightable rework: now HFoldRightable::foldr does not differ from HFoldLeftable::foldl in calling, like std::iter::DoubleEndedIterator::rfold does not differ from std::iter::Iterator::fold. Note: though foldr behavior wasn't changed, all old foldr calls would either stop compiling or produce wrong results (https://github.com/lloydmeta/frunk/issues/171)
    • [Breaking change] Bump quote, syn and proc-macro2 to 1 (https://github.com/lloydmeta/frunk/pull/183)
    • Fix unicode identifiers support https://github.com/lloydmeta/frunk/pull/186
    Open source →
  7. 0.3.2 16 Apr 2021
    Release notes
    • Allow folding hlist with a single Poly (#170)
    Open source →
    Release notes
    • Allow folding hlist with a single Poly (https://github.com/lloydmeta/frunk/pull/170)
    Open source →
  8. 0.3.1 21 Dec 2019
    Release notes
    • Refactoring derives (#157)
    • Add support for deriving LabelledGeneric on enums (#158)
    • Added HZippable (#160)
    • Add a type macro for paths (#161)
    Open source →
    Release notes
    • Refactoring derives (https://github.com/lloydmeta/frunk/pull/157)
    • Add support for deriving LabelledGeneric on enums (https://github.com/lloydmeta/frunk/pull/158)
    • Added HZippable (https://github.com/lloydmeta/frunk/pull/160)
    • Add a type macro for paths (https://github.com/lloydmeta/frunk/pull/161)
    Open source →
  9. 0.3.0 23 Mar 2019
    Release notes
    • More transmogrifications supported out of the box (#152)
      • Box, Option, Vec and more.
    • More idiomatic Debug impl for Field Debug impls should use DebugStruct #153
    • [no-std] support #148
      • Note: this is a breaking change, see the PR for details
    Open source →
    Release notes

    Added

    • More transmogrifications supported out of the box (https://github.com/lloydmeta/frunk/pull/152)
      • Box, Option, Vec and more.
    • More idiomatic Debug impl for Field Debug impls should use DebugStruct #153
    • [no-std] support https://github.com/lloydmeta/frunk/pull/148
      • Note: this is a breaking change, see the PR for details
    Open source →
  10. 0.2.4 09 Feb 2019
    Release notes

    Added

    • Added ToMut trait, which allows borrowing mutably from a Coproduct or HList.
    • Added support for #[derive(LabelledGeneric)] on tuple structs
    • Added Path model and PathTraverser trait, which allows for composable lens-like-usage

    Changed

    • Make macros call themselves recursively with $crate::
    Open source →
  11. 0.2.2 21 Oct 2018
    Release notes
    Open source →
  12. 0.2.1 28 Sep 2018
    Release notes
    • Upgraded to syn 0.15 and quote to 0.6
    Open source →
  13. 0.2.0 20 Apr 2018
    Release notes

    Added

    • :confetti_ball: Forces joined with new collaborators [@Centril] and [@ExpHP]!
    • frunk now adheres to semantic versioning!
    • Inherent method wrappers for many trait methods on HList and Coproduct.
    • Re-exports for a variety of essential items at the root level of frunk.
    • Module frunk::prelude for extension traits and similar.
    • Methods Coproduct::embed and Coproduct::subset.
    • ...tail argument in each of the HList and Coproduct macros.
    • The Func trait, an alternative to Fn that can be implemented on stable.
    • The Poly wrapper type and poly_fn! macro, which use Func to provide order-free mapping.
    • map_repr and map_intern for Generic, convenience methods for temporarily converting an object into its generic representation or a similar type.

    Changed

    • A general paradigm shift from per-module glob imports to the more Rusty model of use what you need. Many of the other changes listed help accomodate this.
    • Renamed the with-serde feature to serde, in line with convention.
    • Various unnecessary type parameters have been removed or replaced with associated types. This affects CoprodInjector, HMappable, and HFold{Left,Right}able.
    • Moved hlist::IntoReverse to accompany Func in the new traits module.
    • Moved hlist::{Here, There, Suffixed} to a new indices module.
    • The zero index Here is no longer an empty type. We have... plans. :japanese_ogre:
    • Character types were moved from labelled to labelled::chars.
    • Mapping/folding by reference is now written as list.to_ref().map(...), where formerly as_ref() was used. The new to_ref() trait composes orthogonally to many other features of HList and Coproduct, and relieves frunk from providing impls for &HCons that can be susceptible to the dreaded "Overflow evaluating _: std::marker::Sized" error.
    • Lots of documentation improvements!

    Removed

    • The identity AsRef impls on HList and Coproduct, which were only present to support the old as_ref().map(...) pattern.
    Open source →
  14. 0.1.36 25 Feb 2018
    Release notes

    Features present

    Prior to v0.2.0, frunk did not keep a detailed changelog, and did not adhere to semver. The following list is a modest attempt to summarize the features of v0.1.36.

    • The types HLists and Coproducts, which serve as variadic product and sum types.
      • Many methods are provided through individual traits.
    • The SYB traits Generic and LabelledGeneric for conversions between similarly-shaped structs.
      • The frunk_derives crate provides #[derive(Generic, LabelledGeneric)].
    • The functional traits Semigroup and Monoid, with a number of implementations.
      • A number of implementations are provided.
      • The frunk_laws crate provides quickcheck-compatible predicates for testing custom impls.
    • The convenience macros hlist!, Hlist!, hlist_pat!, field!.
    • The Validated type, a non-short-circuiting alternative to Result.
    Open source →
  15. 0.1.35 12 Feb 2018

    Nothing published for this version

  16. 0.1.34 26 Oct 2017

    Nothing published for this version

  17. 0.1.33 27 Sep 2017

    Nothing published for this version

  18. 0.1.32 09 Sep 2017

    Nothing published for this version

  19. 0.1.31 04 Sep 2017

    Nothing published for this version

  20. 0.1.30 21 Jun 2017

    Nothing published for this version

  21. 0.1.29 03 Jun 2017

    Nothing published for this version

  22. 0.1.28 25 Apr 2017

    Nothing published for this version

  23. 0.1.27 23 Apr 2017

    Nothing published for this version

  24. 0.1.26 23 Apr 2017

    Nothing published for this version

  25. 0.1.25 20 Apr 2017

    Nothing published for this version

  26. 0.1.24 19 Apr 2017

    Nothing published for this version

  27. 0.1.23 18 Apr 2017

    Nothing published for this version

  28. 0.1.22 22 Mar 2017

    Nothing published for this version

  29. 0.1.21 22 Mar 2017

    Nothing published for this version

  30. 0.1.20 17 Mar 2017

    Nothing published for this version

  31. 0.1.19 16 Mar 2017

    Nothing published for this version

  32. 0.1.18 06 Mar 2017

    Nothing published for this version

  33. 0.1.17 04 Mar 2017

    Nothing published for this version

  34. 0.1.16 04 Mar 2017

    Nothing published for this version

  35. 0.1.15 03 Mar 2017

    Nothing published for this version

  36. 0.1.14 02 Mar 2017

    Nothing published for this version

  37. 0.1.13 02 Mar 2017

    Nothing published for this version

  38. 0.1.12 01 Mar 2017

    Nothing published for this version

  39. 0.1.11 01 Mar 2017

    Nothing published for this version

  40. 0.1.10 01 Mar 2017

    Nothing published for this version

  41. 0.1.9 04 Feb 2017

    Nothing published for this version

  42. 0.1.8 03 Feb 2017

    Nothing published for this version

  43. 0.1.7 16 Nov 2016

    Nothing published for this version

  44. 0.1.6 11 Nov 2016

    Nothing published for this version

  45. 0.1.5 11 Nov 2016

    Nothing published for this version

  46. 0.1.4 22 Oct 2016

    Nothing published for this version

  47. 0.1.3 21 Oct 2016

    Nothing published for this version

  48. 0.1.2 21 Oct 2016

    Nothing published for this version

  49. 0.1.1 21 Oct 2016

    Nothing published for this version

  50. 0.1.0 20 Oct 2016

    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