rust-lang / rust-lang/rust-clippy

New lint: `manual_open_range_patterns`

Open
#7,662 3 comments 0 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

Suggest using open range patterns instead of inclusive range patterns for integer types with upper bound equal to the maximum of that type.

Categories
  • Kind: Style
Advantages

The suggested code is shorter and more readable. The shorter syntax doesn't require the MAX constant and so the variables type doesn't need to be repeated.

Drawbacks

None.

Explicitly including the upper bound gives no additional information. It just repeats the type and confirms that it has an upper bound. I expect this lint to be uncontroversial.

Example
match x as u32 {
      0 => println!("zero!"),
      1..=u32::MAX => println!("positive number!"),
}

Could be written as:

match x as u32 {
      0 => println!("zero!"),
      1.. => println!("positive number!"),
}
Configuration

MSRV 1.55

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

The issue names the proposed manual_open_range_patterns lint but provides no file, test, or entry point. Start by locating existing Clippy lint implementations for range patterns, then use the Rust examples and MSRV 1.55 as the behavioral baseline; done means the lint suggests open ranges for the described integer bounds and has coverage for that behavior.

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
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.