rust-lang / rust-lang/rust-clippy

Lint unnecessary conversion of OsString or CString to String

Open
#2,259 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

E-medium L-unnecessary T-middle
Dominant language
Rust
Stars
13.5k
Forks
2.2k
Avg merge
2d 10h
Merged PRs (30d)
32

Description

For example, something along the lines of:

let files = Vec::new();
for arg in env::args() {
    files.push(File::open(arg));
}

should be suggested as:

let files = Vec::new();
for arg in env::args_os() {
    files.push(File::open(arg));
}

This would also include something like:

let files = Vec::new();
for arg in env::args() {
    files.push(File::open(arg.to_string_lossy()));
}

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

Start by examining existing rust-clippy lint implementations and tests for patterns involving env::args, env::args_os, OsString, and CString. Use the examples in the issue to define the cases, and consider the work complete when unnecessary conversions are diagnosed with a suitable suggestion and covered by tests.

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.