All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Fixes an inability to build using the
stabletoolchain caused by indiscriminate usage of the unstabledoc_cfgfeature
- Adds the
allocfeature flag, providing support forno_stdwithout requiring the use of an allocator
-
Removes
Cloneconstraints for all structs and traits; thanks to yjhmelody -
Adds
no_stdsupport; thanks to yjhmelody -
Adds an
optimizefunction to thePredicateandStatefulPredicatetraits to prevent possible downstream soundness problems from being unintentionally introduced; thanks to Scott Taylor and Nuutti Kotivuori for their input!Note that v0.1.0 had to be skipped due to a mistake in the initial release in the library that led to a bogus v0.1.0 being yanked.
- Adds the
Regexpredicate (and stateful implementation) tostring - Adds the
RefinementOpstrait, which is used internally to provide refinement generically - Adds the
StatefulPredicateandStatefulRefinementOpstraits to allow for stateful refinement - Adds the
arithmeticfeature, allowing for simple arithmetic operations onRefinement - Refactors
NamedRefinementinto a genericNamedwrapper - Deprecates
Refinement::extractin favor ofRefinement::take(viaRefinementOps) - Adds the
optimizedfeature to allow enabling unsafe optimizations - Adds
CONTRIBUTING.md
- Updates documentation and readme to improve discoverability of provided refinements
- Adds documentation of "smart equality" under implication
There are no functional changes in this release. The version was bumped to update crates.io metadata and documentation for a proper release.
As the initial release, the "core" functionality of the library is all included:
- The
Predicatetrait - The
Refinementstruct - The
serdefeature - The
implicationfeature (and the associatedImpliestrait) - An initial suite of shared refinements:
Boundablefor both signed and unsigned typesStringCharBoolean