rust-lang / rust-lang/rust-clippy

manual_exhaustive_pattern

Open
#14,518 4 comments 0 reactions 1 assignee View on GitHub

@QuarkNerd is already working on this.

Since Apr 1, 2025.

A-lint
Dominant language
Rust
Stars
13.5k
Forks
2.2k
Avg merge
2d 10h
Merged PRs (30d)
32

Description

What it does

Detects an exhaustive pattern match and suggests replacing it with _

e.g.
`fn main() {
let b = A::B;

match b {
    A::B | A::C => println!("Pattern is verbose")
}

}

#[derive(PartialEq)]
enum A {
B, C
}`

In the above case it's a little simple but when doing things with nested tuples something might be missed

Advantage
  • _ is easier to read, epecially in cases of mathicng with nested tuples
Drawbacks

No response

Example
<code>
fn main() {
    let b = A::B;
    let a = 11;
    
    match (a, b) {
        (10, A::B | A::C) => println!("Pattern is verbose"),
        _ => println!("Pattern is verbose")
    }
}

#[derive(PartialEq)]
enum A {
    B, C
}

Could be written as:

<code>
fn main() {
    let b = A::B;
    let a = 11;
    
    match (a, b) {
        (10,  _) => println!("Pattern is verbose"),
        _ => println!("Pattern is verbose")
    }
}

#[derive(PartialEq)]
enum A {
    B, C
}

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.