You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
BTreeSet, BTreeMap, and LinkedList subjects, including BTreeSet and BTreeMap assertions in no_std builds.
contains_all for every collection and into_iter_contains_all for streaming iterators.
Sets gained contains_matching, contains_satisfying, does_not_contain_matching, does_not_contain_satisfying,
and the whole contains_exactly_in_any_order{,_matching,_satisfying} family.
Maps gained contains_entry_satisfying, contains_exactly_entries_matching, and contains_exactly_entries_satisfying.
Structured captured failures through the public AssertionFailure type.
assert_that_owned! for consuming assertions; assert_that! now borrows its subject.
Reusable borrowed conditions and the fluent be(condition) alias.
Fluent aliases for iterator, async function, program, command, and reqwest response assertions.
AssertThat::track_assertion and AssertThat::fail_with_details for custom assertions.
Complete public API documentation and dual-license files in both packages.
Floating-point is_normal() and is_subnormal() assertions.
TokioMutexAssertions::has_value_satisfying.
reqwest status-class, header, text-body, and JSON-body assertions and projections.
Separate serde-json and serde-toml features; serde still enables both.
Changed
Breaking: Generic container traits replace the per-type traits, and map assertions use native borrowed lookup.
Prelude calls are mostly unchanged; sets use contains_exactly_in_any_order, while custom implementors may need the
new Collection, Sequence, Set, Map, MapLookup, or MapKeyQuery traits.
Breaking: Capture mode is closure-scoped and returns Vec<AssertionFailure>. Mode is sealed, mid-chain mode
conversions are gone, and unused chains use #[must_use] warnings instead of panicking destructors.
Breaking: Variant checks such as is_some, is_ok, and is_ready no longer extract. Use get_some, get_ok, get_err, get_ready, or get_ascii before asserting on the contained value.
Breaking: Borrowing is now the default for assert_that!, projections, and satisfying callbacks. Consuming
assertions and owned mappers use assert_that_owned!, must_owned, verify_owned, satisfies_owned, satisfy_owned, or derive_owned.
Breaking:Condition was renamed to AssertrCondition; negated fluent aliases put not first; and need_drop
now requires fluent (otherwise use needs_drop).
Breaking: Generic StrAssertions replaces StringAssertions and StrSliceAssertions. Prelude users are
unaffected.
Breaking: The reqwest and rootcause integrations now use version 0.13. assertr also stops enabling reqwest defaults, tokio/full, and serde/derive for downstream builds.
Breaking: With default features disabled, std and libm no longer imply num; enable num explicitly when
needed. The default feature set is unchanged.
Breaking:AssertionRenderer<T> was renamed to ValueRenderer<T>, and renderer bounds moved to individual
assertion methods. Direct trait implementors and generic callers may need new renderer bounds or associated types.
Collection, string, and path assertions preserve subject names and require fewer renderer capabilities.
Negative and condition failures now provide clearer structured details, including failing element indexes.
Dependency selection is narrower: the default build drops from 24 dependencies to 2, and the all-features build from
141 to 99. Async panic assertions no longer require UnwindSafe futures.
Documentation was reorganized around the rustdoc assertion index and API-owned guides.
assertr-derive: Bumped to 0.4.0.
Removed
Breaking:AssertThat::with_capture, AssertThat::capture_failures, AssertThat::take_failures, AssertThat::without_capture, and capture-mode unwrap_inner.
Breaking: The free functions assert_that(&value) and assert_that_owned(value), deprecated since 0.4.4, were
removed. Use the assert_that! / assert_that_owned! macros or the fluent must() / must_owned() entry points.
Breaking: The empty public modules details, tracking, and util are private now.
Breaking: The hidden, unused EqContext::add_field_difference_rendered_with method was removed.
Fixed
References to arrays now implement HasLength.
Custom assertion descriptions no longer run into the closing failure banner.
is_in_range, is_not_in_range, Command::has_arg, reqwest::Response::has_status_code, the http::HeaderValue
assertions, Tokio watch assertions, and async panic assertions now report the caller's location.
Fixed standalone jiff, program, reqwest, serde*, and tokio feature builds.
Corrected unnamed time-zone diagnostics and absent path-component checks.
Exact collection, iterator, and map comparisons now handle multiplicity, duplicate keys, and overlapping custom
equality relations correctly.
Failure details no longer leak into later failures in the chain.
Corrected Result variant spelling, erased Box<dyn Any> type names, and fluent alias generation edge cases.
Async panic assertions now catch panics raised while invoking the function, before it returns a future.