Clippy lints / Suspicious
Clippy lint · Suspicious · checked with Clippy 0.1.99
clippy::misnamed_getters: getter function appears to return the wrong field
What it meansChecks for getter methods that return a field that doesn’t correspond to the name of the method, when there is a field’s whose name matches that of the method. It is in the suspicious group and warns by default.
What you see
warning: getter function appears to return the wrong field --> main.rs:9:5 | 9 | / fn a(&self) -> &str{ 10 | | &self.b | | ------- help: consider using: `&self.a` 11 | | } | |_____^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/stable/index.html#misnamed_getters = note: `#[warn(clippy::misnamed_getters)]` on by default
Real output of Clippy 0.1.99 (Rust 1.99) on the example below. Names and line numbers in yours will differ.
Does it matter?
It is most likely that such a method is a bug caused by a typo or by copy-pasting.
Code that is most likely wrong or useless. Warns by default.
How to fix it
Clippy does not fix this one automatically (its suggestion may change behaviour, so it only shows it). Change the code by hand:
Flagged
struct A {
a: String,
b: String,
}
impl A {
fn a(&self) -> &str{
&self.b
}
}
Write this instead
struct A {
a: String,
b: String,
}
impl A {
fn a(&self) -> &str{
&self.a
}
}
Turn it off, or on
Allow it where it does not fit your code, as narrowly as you can:
On one item
#[allow(clippy::misnamed_getters)]
fn my_function() { /* ... */ }Whole crate (Cargo.toml)
[lints.clippy]
misnamed_getters = "allow"One run
cargo clippy -- -A clippy::misnamed-gettersThe [lints] table needs Rust 1.74 or newer. In a workspace, put it under [workspace.lints.clippy] and add [lints] workspace = true to each member.
Clippy's own documentation
What it does
Checks for getter methods that return a field that doesn’t correspond to the name of the method, when there is a field’s whose name matches that of the method.
Why is this bad?
It is most likely that such a method is a bug caused by a typo or by copy-pasting.
Example
struct A {
a: String,
b: String,
}
impl A {
fn a(&self) -> &str{
&self.b
}
}
Use instead:
struct A {
a: String,
b: String,
}
impl A {
fn a(&self) -> &str{
&self.a
}
}
From the Clippy lint list (0.1.99), part of the Rust project, MIT or Apache-2.0. Official entry.
Related lints
- macro_metavars_in_unsafeLooks for macros that expand metavariables in an unsafe block
- manual_unwrap_or_defaultmatch can be simplified with `.unwrap_or_default()`
- mismatched_bit_width_typepossible buggy implementation of `bit_width`
- misrefactored_assign_opvariable appears on both sides of an assignment operation
- missing_transmute_annotationsChecks if transmute calls have all generics specified
- multi_assignmentsassignments don't nest intuitively
All 847 Clippy lints · Rust compiler errors · Cargo.toml checker
Up next
Related lintclippy::macro_metavars_in_unsafeLooks for macros that expand metavariables in an unsafe blockRead it next →Did this answer your question?