All notable changes to frunk and its subcrates will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Implement Plucker/ByNameFieldPlucker for &HList (#240)
- Removed
proc-macro-hackmachinery (proc-macros-impl) (#214) - Add function for explicitly extending an hlist (#209)
- Documentation fix for
Hcons::sculpt(#194) - Optimise Semigroup for HashSet and HashMap (#196)
- Update to 2021 edition (#200)
- Add
extractto get value out of 1-type coproduct (#201) - Fix needless borrow (#202)
- Add
Coproduct::map(#204)
- [Breaking change] Rename
Hlist!type macro toHList!(#132) - [Breaking change] Remove deprecated
HList.length()(#125) - [Breaking change]
HFoldRightablerework: nowHFoldRightable::foldrdoes not differ fromHFoldLeftable::foldlin calling, likestd::iter::DoubleEndedIterator::rfolddoes not differ fromstd::iter::Iterator::fold. Note: thoughfoldrbehavior wasn't changed, all oldfoldrcalls 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
- Allow folding hlist with a single Poly (#170)
- Refactoring derives (#157)
- Add support for deriving LabelledGeneric on enums (#158)
- Added HZippable (#160)
- Add a type macro for paths (#161)
- More transmogrifications supported out of the box (#152)
Box,Option,Vecand 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
- Added
ToMuttrait, which allows borrowing mutably from a Coproduct or HList. - Added support for
#[derive(LabelledGeneric)]on tuple structs - Added
Pathmodel andPathTraversertrait, which allows for composable lens-like-usage
- Make macros call themselves recursively with
$crate::
- Skipped due to release mis-steps
- Added support for transmogrifying (recursively sculpting) one data type into another
- Upgraded to
syn0.15 andquoteto 0.6
0.2.0 - 2018-04-20
- 🎊 Forces joined with new collaborators @Centril and @ExpHP!
frunknow 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::preludefor extension traits and similar. - Methods
Coproduct::embedandCoproduct::subset. ...tailargument in each of the HList and Coproduct macros.- The
Functrait, an alternative toFnthat can be implemented on stable. - The
Polywrapper type andpoly_fn!macro, which useFuncto provide order-free mapping. map_reprandmap_internforGeneric, convenience methods for temporarily converting an object into its generic representation or a similar type.
- A general paradigm shift from per-module glob imports to the more
Rusty model of
usewhat you need. Many of the other changes listed help accomodate this. - Renamed the
with-serdefeature toserde, in line with convention. - Various unnecessary type parameters have been removed or replaced with
associated types. This affects
CoprodInjector,HMappable, andHFold{Left,Right}able. - Moved
hlist::IntoReverseto accompanyFuncin the newtraitsmodule. - Moved
hlist::{Here, There, Suffixed}to a newindicesmodule. - The zero index
Hereis no longer an empty type. We have... plans. 👹 - Character types were moved from
labelledtolabelled::chars. - Mapping/folding by reference is now written as
list.to_ref().map(...), where formerlyas_ref()was used. The newto_ref()trait composes orthogonally to many other features of HList and Coproduct, and relieves frunk from providing impls for&HConsthat can be susceptible to the dreaded "Overflow evaluating_: std::marker::Sized" error. - Lots of documentation improvements!
- The identity
AsRefimpls on HList and Coproduct, which were only present to support the oldas_ref().map(...)pattern.
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 andCoproducts, which serve as variadic product and sum types.- Many methods are provided through individual traits.
- The SYB traits
GenericandLabelledGenericfor conversions between similarly-shaped structs.- The
frunk_derivescrate provides#[derive(Generic, LabelledGeneric)].
- The
- The functional traits
SemigroupandMonoid, with a number of implementations.- A number of implementations are provided.
- The
frunk_lawscrate providesquickcheck-compatible predicates for testing custom impls.
- The convenience macros
hlist!,Hlist!,hlist_pat!,field!. - The
Validatedtype, a non-short-circuiting alternative toResult.
A raw overview of older versions is available in the form of commit logs:
- 0.1.36 - 2018-02-25
- 0.1.35 - 2018-02-11
- 0.1.34 - 2017-10-25
- 0.1.33 - 2017-09-27
- 0.1.32 - 2017-09-09
- 0.1.31 - 2017-09-04
- 0.1.30 - 2017-06-21
- 0.1.29 - 2017-06-03
- 0.1.28 - 2017-04-25
- 0.1.27 - 2017-04-23
- 0.1.25 - 2017-04-20
- 0.1.22 - 2017-03-22
- 0.1.20 - 2017-03-17
- 0.1.19 - 2017-03-16
- 0.1.18 - 2017-03-06
- 0.1.17 - 2017-03-04
- 0.1.16 - 2017-03-04
- 0.1.11 - 2017-03-01
- 0.1.10 - 2017-03-01