rust-lang / rust-lang/rust-clippy

Warn if the order of impl trait functions is not the same as in trait definition

Open
#13,346 1 comment 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

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

Description

What it does

In the following example, the ordering of trait functions is different from implementation. It is usually better for consistency when all implementations follow the same fn order as defined in the trait. Probably pedantic?

Advantage
  • the ordering is consistent between all trait implementations, making it easier to read
Drawbacks
  • code churn if not done right from the start
Example
trait Animal {
    fn make_sound(&self);
    fn eat(&self);
}

struct Cow;

impl Animal for Cow {
    fn eat(&self) { println!("grass"); }
    fn make_sound(&self) { println!("moo"); }
}

Could be written as (change fn ordering)

impl Animal for Cow {
    fn make_sound(&self) { println!("moo"); }
    fn eat(&self) { println!("grass"); }
}

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 with the trait and implementation examples in the issue and review how Clippy lints inspect trait implementations. Determine the appropriate lint scope and whether it belongs under pedantic; done means a differing function order produces the intended warning without false positives.

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.