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.
- Removed
proc-macro-hackmachinery (proc-macros-impl) (lloydmeta#214) - Add function for explicitly extending an hlist (lloydmeta#209)
- Documentation fix for
Hcons::sculpt(lloydmeta#194) - Optimise Semigroup for HashSet and HashMap (lloydmeta#196)
- Update to 2021 edition (lloydmeta#200)
- Add
extractto get value out of 1-type coproduct (lloydmeta#201) - Fix needless borrow (lloydmeta#202)
- Add
Coproduct::map(lloydmeta#204)
- [Breaking change] Rename
Hlist!type macro toHList!(lloydmeta#132) - [Breaking change] Remove deprecated
HList.length()(lloydmeta#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 (lloydmeta#171) - [Breaking change] Bump quote, syn and proc-macro2 to 1 (lloydmeta#183)
- Fix unicode identifiers support lloydmeta#186
- Allow folding hlist with a single Poly (lloydmeta#170)
- Refactoring derives (lloydmeta#157)
- Add support for deriving LabelledGeneric on enums (lloydmeta#158)
- Added HZippable (lloydmeta#160)
- Add a type macro for paths (lloydmeta#161)
- More transmogrifications supported out of the box (lloydmeta#152)
Box,Option,Vecand more.
- More idiomatic Debug impl for Field Debug impls should use DebugStruct #153
- [no-std] support lloydmeta#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