Clippy lints / Suspicious
Clippy lint · Suspicious · checked with Clippy 0.1.99
clippy::multi_assignments: assignments don't nest intuitively
What it meansChecks for nested assignments. It is in the suspicious group and warns by default.
What you see
warning: assignments don't nest intuitively --> main.rs:3:1 | 3 | a = b = 42; | ^^^^^^^^^^ | = help: for further information visit https://rust-lang.github.io/rust-clippy/stable/index.html#multi_assignments = note: `#[warn(clippy::multi_assignments)]` 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?
While this is in most cases already a type mismatch, the result of an assignment being () can throw off people coming from languages like python or C, where such assignments return a copy of the assigned value.
Code that is most likely wrong or useless. Warns by default.
How to fix it
Clippy does not fix this one automatically. Change the code by hand:
Flagged
a = b = 42;
Write this instead
b = 42;
a = b;
Turn it off, or on
Allow it where it does not fit your code, as narrowly as you can:
On one item
#[allow(clippy::multi_assignments)]
fn my_function() { /* ... */ }Whole crate (Cargo.toml)
[lints.clippy]
multi_assignments = "allow"One run
cargo clippy -- -A clippy::multi-assignmentsThe [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 nested assignments.
Why is this bad?
While this is in most cases already a type mismatch,
the result of an assignment being () can throw off people coming from languages like python or C,
where such assignments return a copy of the assigned value.
Example
a = b = 42;
Use instead:
b = 42;
a = b;
From the Clippy lint list (0.1.99), part of the Rust project, MIT or Apache-2.0. Official entry.
Related lints
- misnamed_gettersgetter function appears to return the wrong field
- misrefactored_assign_opvariable appears on both sides of an assignment operation
- missing_transmute_annotationsChecks if transmute calls have all generics specified
- mut_range_boundattempt to mutate range bound within loop
- mutable_key_typeChecks for sets/maps with mutable key types
- needless_character_iterationchecking if a string is ascii using iterators
All 847 Clippy lints · Rust compiler errors · Cargo.toml checker
Up next
Related lintclippy::misnamed_gettersgetter function appears to return the wrong fieldRead it next →Did this answer your question?