Clippy lints / Performance
Clippy lint · Performance · checked with Clippy 0.1.99
clippy::format_in_format_args: Detects format! within the arguments of another macro that does formatting such as format! itself, write! or println!
What it meansDetects format! within the arguments of another macro that does formatting such as format! itself, write! or println!. Suggests inlining the format! call. It is in the performance group and warns by default.
Does it matter?
The recommended code is both shorter and avoids a temporary allocation.
Code that could be written to run faster. Warns by default.
How to fix it
Clippy does not fix this one automatically. Change the code by hand:
Flagged
println!("error: {}", format!("something failed at {}", Location::caller()));
Write this instead
println!("error: something failed at {}", Location::caller());
Turn it off, or on
Allow it where it does not fit your code, as narrowly as you can:
On one item
#[allow(clippy::format_in_format_args)]
fn my_function() { /* ... */ }Whole crate (Cargo.toml)
[lints.clippy]
format_in_format_args = "allow"One run
cargo clippy -- -A clippy::format-in-format-argsThe [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
Detects format! within the arguments of another macro that does
formatting such as format! itself, write! or println!. Suggests
inlining the format! call.
Why is this bad?
The recommended code is both shorter and avoids a temporary allocation.
Example
println!("error: {}", format!("something failed at {}", Location::caller()));
Use instead:
println!("error: something failed at {}", Location::caller());
From the Clippy lint list (0.1.99), part of the Rust project, MIT or Apache-2.0. Official entry.
Related lints
- large_enum_variantlarge size difference between variants
- drain_collectdraining all elements of a collection into a new collection of the same type
- expect_fun_callChecks for calls to .expect(&format!(...)), .expect(foo(..)), etc., and suggests to use unwrap_or_else instead
- extend_with_drainuse of `extend` instead of `append` for adding the full range of a second vector
- iter_overeager_clonedChecks for usage of _.cloned().<func>() where call to .cloned() can be postponed
- large_const_arraysChecks for large const arrays that should be defined as static instead
All 847 Clippy lints · Rust compiler errors · Cargo.toml checker
Up next
Related lintclippy::large_enum_variantlarge size difference between variantsRead it next →Did this answer your question?