Skip to content

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

Closed
@anp

Description

@anp
Member

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.

Activity

tamird

tamird commented on Jun 4, 2020

@tamird
Contributor

Sounds like #59260 just went stale. Perhaps a similar CL can be considered.

added
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.
on Jun 4, 2020
joshtriplett

joshtriplett commented on Mar 8, 2021

@joshtriplett
Member

We now have an assert_matches!: #82770

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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

        Participants

        @joshtriplett@tamird@jonas-schievink@anp

        Issue actions

          Add `assert_matches!` based on `matches!` to mirror `assert_eq!`? · Issue #72991 · rust-lang/rust