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-hack
machinery (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
extract
to 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]
HFoldRightable
rework: nowHFoldRightable::foldr
does not differ fromHFoldLeftable::foldl
in calling, likestd::iter::DoubleEndedIterator::rfold
does not differ fromstd::iter::Iterator::fold
. Note: thoughfoldr
behavior wasn't changed, all oldfoldr
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
- 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
,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
- Added
ToMut
trait, which allows borrowing mutably from a Coproduct or HList. - Added support for
#[derive(LabelledGeneric)]
on tuple structs - Added
Path
model andPathTraverser
trait, 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
syn
0.15 andquote
to 0.6
0.2.0 - 2018-04-20
- 🎊 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
andCoproduct::subset
. ...tail
argument in each of the HList and Coproduct macros.- The
Func
trait, an alternative toFn
that can be implemented on stable. - The
Poly
wrapper type andpoly_fn!
macro, which useFunc
to provide order-free mapping. map_repr
andmap_intern
forGeneric
, 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
use
what you need. Many of the other changes listed help accomodate this. - Renamed the
with-serde
feature 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::IntoReverse
to accompanyFunc
in the newtraits
module. - Moved
hlist::{Here, There, Suffixed}
to a newindices
module. - The zero index
Here
is no longer an empty type. We have... plans. 👹 - Character types were moved from
labelled
tolabelled::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&HCons
that can be susceptible to the dreaded "Overflow evaluating_: std::marker::Sized
" error. - Lots of documentation improvements!
- The identity
AsRef
impls 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
HList
s andCoproduct
s, which serve as variadic product and sum types.- Many methods are provided through individual traits.
- The SYB traits
Generic
andLabelledGeneric
for conversions between similarly-shaped structs.- The
frunk_derives
crate provides#[derive(Generic, LabelledGeneric)]
.
- The
- The functional traits
Semigroup
andMonoid
, with a number of implementations.- A number of implementations are provided.
- The
frunk_laws
crate providesquickcheck
-compatible predicates for testing custom impls.
- The convenience macros
hlist!
,Hlist!
,hlist_pat!
,field!
. - The
Validated
type, 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