7 stable releases

Uses old Rust 2015

1.5.0 Feb 5, 2021
1.4.0 Oct 4, 2020
1.3.0 Jul 12, 2018
1.2.0 Mar 6, 2018
1.0.0 Feb 16, 2016

#90 in Rust patterns

Download history 318745/week @ 2025-06-16 342740/week @ 2025-06-23 281141/week @ 2025-06-30 320422/week @ 2025-07-07 308419/week @ 2025-07-14 308328/week @ 2025-07-21 330162/week @ 2025-07-28 356293/week @ 2025-08-04 346267/week @ 2025-08-11 382134/week @ 2025-08-18 361230/week @ 2025-08-25 378680/week @ 2025-09-01 407234/week @ 2025-09-08 433612/week @ 2025-09-15 441277/week @ 2025-09-22 450379/week @ 2025-09-29

1,748,966 downloads per month
Used in 1,891 crates (1,026 directly)

MIT/Apache

14KB
209 lines

Provides a macro, assert_matches!, which tests whether a value matches a given pattern, causing a panic if the match fails.

See the macro assert_matches! documentation for more information.

Also provides a debug-only counterpart, debug_assert_matches!.

See the macro debug_assert_matches! documentation for more information about this macro.


assert_matches

Provides a macro, assert_matches, which tests whether a value matches a given pattern, causing a panic if the match fails.

Documentation

#[macro_use] extern crate assert_matches;

#[derive(Debug)]
enum Foo {
    A(i32),
    B(i32),
}

let a = Foo::A(1);

assert_matches!(a, Foo::A(_));

assert_matches!(a, Foo::A(i) if i > 0);

To include in your project, only when tests are compiled, add the following to your Cargo.toml:

[dev-dependencies]
assert_matches = "1.5"

And add the following to your crate root:

#[cfg(test)] #[macro_use]
extern crate assert_matches;

License

assert_matches is distributed under the terms of both the MIT license and the Apache License (Version 2.0).

See LICENSE-APACHE and LICENSE-MIT for details.

No runtime deps