rust-lang / rust-lang/rust-clippy

Lint trait impls whose body accesses `self.field` instead of `let Self { field } = self`

Open
#3,724 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

A-lint E-medium L-complexity L-correctness
Dominant language
Rust
Stars
13.5k
Forks
2.2k
Avg merge
2d 10h
Merged PRs (30d)
32

Description

If the type is ever extended to contain more fields, the trait impl could be left behind and accidentally break the runtime behaviour. Using the let Self { field } syntax allows one to use a pattern that covers all fields (and ignores unneeded fields with field: _ explicitly).

In tandem the lint should complain about let Self { field, .. } and suggest to fill in other_field: _ patterns for the missing fields

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

No files, tests, or entry points are named in the issue. Start by locating the lint implementation and its tests for trait implementations; done means the lint covers direct self.field access and incomplete Self patterns, with suggestions for explicit ignored fields.

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
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.