RS.CLIPPY.ASSIGNING_CLONES
Assigning the result of cloning may be inefficient
This checker is a Clippy lint created by The Rust Project Contributors. The documentation shown here is a copy of the original documentation for: assigning_clones. Copyright ©2025 The Rust Team. All rights reserved.
What it does
Checks for code like foo = bar.clone();
Why is this bad?
Custom Clone::clone_from() or ToOwned::clone_into implementations allow the objects
to share resources and therefore avoid allocations.
Example
struct Thing;
impl Clone for Thing {
fn clone(&self) -> Self { todo!() }
fn clone_from(&mut self, other: &Self) { todo!() }
}
pub fn assign_to_ref(a: &mut Thing, b: Thing) {
*a = b.clone();
}
Use instead:
struct Thing;
impl Clone for Thing {
fn clone(&self) -> Self { todo!() }
fn clone_from(&mut self, other: &Self) { todo!() }
}
pub fn assign_to_ref(a: &mut Thing, b: Thing) {
a.clone_from(&b);
}
Configuration
-
msrv: The minimum rust version that the project supports. Defaults to therust-versionfield inCargo.toml(default:
current version)