### What it does Checks for all instances of `x + _` where `x` is of type `String`, but only if [`string_add_assign`](#string_add_assign) does *not* match. ### Why is this bad? It's not bad in and of itself. However, this particular `Add` implementation is asymmetric (the other operand need not be `String`, but `x` does), while addition as mathematically defined is symmetric, also the `String::push_str(_)` function is a perfectly good replacement. Therefore, some dislike it and wish not to have it in their code. That said, other people think that string addition, having a long tradition in other languages is actually fine, which is why we decided to make this particular lint `allow` by default. ### Example ``` let x = "Hello".to_owned(); x + ", World"; ``` Use instead: ``` let mut x = "Hello".to_owned(); x.push_str(", World"); ```