Skip to content

Add assert_matches! based on matches! to mirror assert_eq!? #72991

Closed
@anp

Description

@anp

The matches! macro is really useful, but like others I'm interested in std getting an assert_matches! macro to mirror assert_eq!. While it's nice for readability and concision, my main desire is to get better error messages for tests which assert properties on types that don't implement PartialEq.

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=745f68d5c14ab80b8b1a9be509fd8f26 illustrates an example that produces this error message:

thread 'main' panicked at 'assertion failed: matches!(bar, Some (x) if x < 2)', src/main.rs:7:1

If this were assert_matches!(bar, Some(x) if x < 2), it could have error output like this:

thread 'main' panicked at 'assertion failed: assert_matches!(Some(4), Some (x) if x < 2)', src/main.rs:7:1

I don't think it's possible to achieve error messages on par with assert_eq without this approach -- could be wrong though.

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-feature-requestCategory: A feature request, i.e: not implemented / a PR.T-libs-apiRelevant to the library API team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions