rust-lang / rust-lang/rust-clippy

unnecessary binding in if-let statement

Open
#13,071 0 comments 4 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

What it does

Checks for if-let statements that bind a variable where a single value could be specified instead.

Advantage

Improves readability by replacing a variable with its value and potentially removing a nested if statement.

Drawbacks

Somewhat niche use case, could be prone to false negatives.

Example
let x = Some(("foo", true));

if let Some((message, enabled)) = x {
    if enabled {
        println!("{message}");
    }
}

Could be written as:

let x = Some(("foo", true));

if let Some((message, true)) = x {
    println!("{message}");
}

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.

Research direction

No files, tests, or entry points are named. Start by locating existing Clippy lints for if-let patterns and their tests, then verify the supplied example and potential false positives; done means the lint recognizes the described binding and replacement case.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
tooling
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.