assert-rs 0.1.0

An assertion library that uses types and data to fail tests instead of panicking.
Documentation
Construct a group of assertions that will all be tested simultaneously. If one assertion fails, the group as a whole will fail.

```no_run
#[test]
fn multi_assert() -> impl Assertion {
    multi_assert!(
        assert_that!(1 + 2).is_equal_to(3),
        assert_that!(3 + 4).is_equal_to(7),
        assert_that!(23).is_equal_to(10 * 2 + 3),
        assert_that!(7).is_greater_than(5),
        assert_that!(42).is_not_equal_to(6),
    )
}
```

Note that the assertions passed into `multi_assert` must (by default) have the same type, but it is possible to use varying types by first supplying the `#[dyn]` attribute:

```no_run
#[test]
fn multi_assert_dyn() -> impl Assertion {
    multi_assert!(#[dyn] // <- casts assertions to `dyn Assertion`
        assert_that!(1 + 2).is_equal_to(3), // <- BinaryAssertion<i32, i32>
        assert_that!(true).is_true(), // <- UnaryAssertion<bool>
        assert_that!(true).is_false().should_fail(), // <- ShouldFail<UnaryAssertion<bool>>
    )
}
```

The `#[dyn]` attribute is only available if the `alloc` feature is enabled, as it requires [`Box`] to work.