rust-lang / rust-lang/rust-clippy
new lint: find length comparisons after access by index in ANDded if-chains
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 13.5k
- Forks
- 2.2k
- Avg merge
- 2d 10h
- Merged PRs (30d)
- 32
Description
What it does
Check for code like
fn a(v1: Vec<_>, v2: Vec<_>, x: usize) {
if v1[x] == v2[x] &&
v1.len() == v2.len() {}
}
The length-check is probably intended to guard against index-out-of-bounds access however it was (most likely mistakenly) placed AFTER the access by index. It should be at the front.
Categories (optional)
- Kind: correctness
Inspired by https://github.com/rust-lang/rust-clippy/issues/5780 and https://github.com/rust-lang/rust-clippy/pull/5784
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the Rust example in the issue and locate the existing Clippy lint entry points and tests for index access and length comparisons. Confirm the lint handles AND-chained conditions where an index access precedes its length guard, and add coverage showing the intended ordering is diagnosed.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- devtools
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100