rust-lang / rust-lang/rust-clippy

Lint to suggest reusing already allocated strings

Open
#2,110 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

A-lint E-medium L-perf T-middle
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

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 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.