# Changelog # v 0.8.0 - The `Solver` trait's `load_test` method now takes a boolean indicating which part is being tested. (The constants `PART_ONE` and `PART_TWO` from the prelude can be used when branching on this value.) # v 0.7.2 - Improved precision of the `Timing` type's `Display` implementation; measurements are displayed as floats and in the closest correct unit, rather than as integers and in micros/nanos only. # v 0.7.1 - Added the `solution_array` macro, which generates an array of solution closures. This is useful if you'd like to defer picking which solution to execute until runtime. # v 0.7.0 - Tests generated by the `derive_tests` macro now only execute the part of the solution under scrutiny. - Type definitions for `Solution::Output` must now implement `Display` instead of `Debug`, in order to better support string solutions (especially multiline ones.) - `Solution::part_one` and `Solution::part_two` now return a value of type `Self::Output` directly, rather than requiring that it be wrapped in an `Option`. Detection of unimplemented solutions is now performed using panicking and `std::panic::catch_unwind`. - The `testing` parameter has been removed from the `Solver::display` and `Solver::finalize` methods, as these methods are now only called in non-test contexts. - Added the `Split` type for handling problems with answer types that differ between parts. ## v 0.6.1/0.6.2 - Fixed a (very silly) bug with the display implementation of `Timings`. ## v 0.6.0 - The `Test` trait's `expected` method now takes a boolean indicating which part is being requested and returns a single instance of `Self::Output`. - The prelude now contains the constants `PART_ONE` and `PART_TWO` (corresponding to `false` and `true` respectively) that can be used when implementing the aformentioned `expected` method. - The `Solver` trait's `load` method has been split into `load` and `load_test`, with each method now only taking the requested day (as a `u8`.) `load_test` has a panicking default implementation. - `Outcome` now exposes benchmark durations via the `Timings` type.