rust-lang / rust-lang/rust-clippy
Lint to suggest reusing already allocated strings
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 13.5k
- Forks
- 2.2k
- Avg merge
- 2d 10h
- Merged PRs (30d)
- 32
Description
Worded for strings, but also works with other types:
Essentially, if you have a String which is not used by the point that a new string it created in a way that doesn't involve the previous string, suggest calling clear instead of making a new string.
Code example:
let s1: String = "something".into();
let n2: String = s.nfc().collect();
// doesn't use s1 any more…
let s2: String = "something else".into();
should become:
let s1: String = "something".into();
let n2: String = s.nfc().collect();
// doesn't use s1 any more…
let s2: String = "something else".clone_into(s1);
And potentially more complicated examples could involve clear and push, or clear and extend instead of collect.
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
The issue names no files, tests, or entry points. Start by resolving the intended lint behavior from the String examples, including clone_into versus clear, push, and extend, then define tests for when reuse should and should not be suggested.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 32/100