### What it does Detects cases where the result of a `format!` call is appended to an existing `String`. ### Why is this bad? Introduces an extra, avoidable heap allocation. ### Known problems `format!` returns a `String` but `write!` returns a `Result`. Thus you are forced to ignore the `Err` variant to achieve the same API. While using `write!` in the suggested way should never fail, this isn't necessarily clear to the programmer. ### Example ``` let mut s = String::new(); s += &format!("0x{:X}", 1024); s.push_str(&format!("0x{:X}", 1024)); ``` Use instead: ``` use std::fmt::Write as _; // import without risk of name clashing let mut s = String::new(); let _ = write!(s, "0x{:X}", 1024); ```