The sequence foo = bar; bar = foo looks like a failed attempt to swap the values of two variables. This code mistakenly reassigns both
variables, leading to incorrect and unintended behavior. Using std::mem::swap ensures a correct and intended swap.
let mut foo = 1; let mut bar = 2; foo = bar; // Noncompliant bar = foo; // Noncompliant
let mut foo = 1; let mut bar = 2; std::mem::swap(&mut foo, &mut bar); // Compliant