Change Log

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.

Unreleased - ReleaseDate

1.0.7 - 2021-01-29

1.0.6 - 2020-12-28

Fixed

  • NamePredicate now adds itself to the Case returned by find_case.

1.0.5 - 2020-07-18

Fixed

  • Update float-cmp dependency

1.0.4 - 2020-03-04

Fixed

  • Upgrade normalize-line-endings

1.0.3 - 2020-02-25

1.0.2 - 2019-11-18

Fixed

  • BooleanPredicate now implements Predicate<T> where T: ?Sized (#84)

1.0.1 - 2019-04-22

Changed

  • BooleanPredicate is no longer generic, and is always Send and Sync.

1.0.0 - 2018-10-06

0.9.1 - 2018-10-05

Added

  • Created a predicate selection guide.

0.9.0 - 2018-07-30

Added

  • Support ?Sized types for FnPredicate.
  • Add str_pred.normalize() predicate.
  • Add reflection to Predicate.
  • Add support for predicates returning why they failed (find_case) which can be combined with the new predicates-tree crate.
  • Split out predicates-core for reducing ecosystem breaking changes.

Changed

  • Predicates must also implement PredicateReflection

0.5.2 - 2018-07-20

Added

0.5.1 - 2018-06-05

Added

0.5.0 - 2018-05-30

Added

  • trait:
    • Allow naming Predicate expressions
  • str:
    • Add regex repetition count, closes #27
    • from_utf8 adapter, closes #21
    • Trimming predicate decorator
  • path:
    • eq_file predicate to test a file-under-test with a fixture, closes #32.
      • eq_file(...).utf() adapter to do string comparisons with the fixture
    • Add a from_file_path extension method to Predicate<[u8]> that turns it into a Predicate<Path>, closes #31.

Breaking Changes

  • trait:
    • All Predicates are now Display (05216708, breaks #)
    • Decouple boxing from trait (f981fac3, breaks #)
    • Decouple boolean logic from trait (88b72f9e, breaks #)

0.4.0 - 2018-05-10

Added

  • Define oldest supported version of Rust as 1.22.
  • CI that ensures
    • works on Windows and Linux
    • works on 1.22 to nightly
  • float: is_close Predicate (see #11).
  • path:
    • File type predicates: is_file, is_dir, is_symlink (see #8).
    • Existence predicate: exists, missing (see #8).
  • str:
    • Basic string predicates: is_empty, starts_with, ends_with, and contains with optional count (see #25).
    • Regex predicate (see #12).
    • Edit-distance predicate (see #9).

Changed

  • Clearly delineate API from prelude (see #17).
  • Switch Predicate trait from Associated Types to Generics.
  • iter:
    • Renamed set predicates as iter predicates to clarify the intent from some implementation.
    • Remove ambiguity of predicate factories (see #24):
    • contains -> in_iter
    • contains_hashable -> in_hash
    • Turned contains_ord into a specialization of in_iter by adding a sort method.

0.3.0 - 2017-06-26

Added

  • BoxPredicate type that wraps a Predicate trait object to make it easier to store and work with predicates through a program. Also implements Debug and Display wrappers as a convenience.
  • FnPredicate type that wraps a function of the type Fn(&T) -> bool in a Predicate type.

Changed

  • The boxed function now returns a type BoxPredicate instead of a type alias.
  • The Item type parameter of Predicate no longer has the Sized restriction.

0.2.0 - 2017-06-02

Added

  • This changelog

Fixed

  • Made modules under predicate private, with their public interfaces exposed through pub use in the predicate mod.rs file.

0.1.0 - 2017-06-02

Added

  • Initial commit of functional code
  • Continuous integration with Travis (Linux) and AppVeyor (Windows)
  • Basic README