Clippy lints / Complexity
Clippy lint · Complexity · checked with Clippy 0.1.99
clippy::deref_addrof: Checks for usage of *& and *&mut in expressions
What it meansChecks for usage of *& and *&mut in expressions. It is in the complexity group and warns by default.
Does it matter?
Immediately dereferencing a reference is no-op and makes the code less clear.
Code that does something simple in a complicated way. Warns by default.
How to fix it
Clippy can fix this one for you: run cargo clippy --fix (add --allow-dirty if you have uncommitted changes). Review the diff before you commit.
Flagged
let a = f(*&mut b);
let c = *&d;
Write this instead
let a = f(b);
let c = d;
Turn it off, or on
Allow it where it does not fit your code, as narrowly as you can:
On one item
#[allow(clippy::deref_addrof)]
fn my_function() { /* ... */ }Whole crate (Cargo.toml)
[lints.clippy]
deref_addrof = "allow"One run
cargo clippy -- -A clippy::deref-addrofThe [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 usage of *& and *&mut in expressions.
Why is this bad?
Immediately dereferencing a reference is no-op and makes the code less clear.
Known problems
Multiple dereference/addrof pairs are not handled so
the suggested fix for x = **&&y is x = *&y, which is still incorrect.
Example
let a = f(*&mut b);
let c = *&d;
Use instead:
let a = f(b);
let c = d;
From the Clippy lint list (0.1.99), part of the Rust project, MIT or Apache-2.0. Official entry.
Related lints
- too_many_argumentsChecks for functions with too many parameters
- clone_on_copyusing `clone` on type `u64` which implements the `Copy` trait
- type_complexityChecks for types used in structs, parameters and let declarations above a certain complexity threshold
- default_constructed_unit_structsChecks for construction on unit struct using default
- deprecated_cfg_attr`cfg_attr` is deprecated for rustfmt and got replaced by tool attributes
- derivable_implsthis `impl` can be derived
- diverging_sub_expressionChecks for diverging calls that are not match arms or statements
- double_comparisonsChecks for double comparisons that could be simplified to a single expression
All 847 Clippy lints · Rust compiler errors · Cargo.toml checker
Up next
Related lintclippy::too_many_argumentsChecks for functions with too many parametersRead it next →Did this answer your question?