rust-lang / rust-lang/rust-clippy
Warn if the order of impl trait functions is not the same as in trait definition
Open
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
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
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