rust-lang / rust-lang/rust-clippy
New lint suggestion: detect `HashMap/Set::iter()` followed by `take_while()/skip_while()/map_while()`.
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
Detects usage of HashMap/Set::iter() (or other iterator) followed by take_while()/skip_while()/map_while().
Categories (optional)
- Kind:
suspicious, maybecorrectness?
What is the advantage of the recommended code over the original code
iter() in HashMap/Set iterates in arbitrary order, and _while() methods usually make sense where is there some kind of order in the iterator. This would catch using a e.g. HashMap where a sorted structure would be required.
Drawbacks
False positives, but it seems unlikely.
Example
Note sure if anything useful can be suggested other than detecting the issue.
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 by reviewing how rust-clippy implements existing iterator-related lints and their tests, then compare the proposed HashMap/Set::iter() patterns with take_while(), skip_while(), and map_while(). Resolve the lint category and false-positive boundaries; done means the intended patterns are detected consistently with appropriate coverage.
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