- `inline_always`: Warns on `#[inline(always)]`, because in most cases it is a bad idea
- `collapsible_if`: Warns on cases where two nested `if`-expressions can be collapsed into one, e.g. `if x { if y { foo() } }` can be written as `if x && y { foo() }`
- `zero_width_space`: Warns on encountering a unicode zero-width space
- - `string_add_assign`: Warns on `x = x + ..` where `x` is a `String` and suggests using `push_str(..)` instead.
+ - `string_add_assign`: Warns on `x = x + ..` where `x` is a `String` and suggests using `push_str(..)` instead. Allowed by default.
- `string_add`: Matches `x + ..` where `x` is a `String` and where `string_add_assign` doesn't warn. Allowed by default.
- `needless_return`: Warns on using `return expr;` when a simple `expr` would suffice.
- `let_and_return`: Warns on doing `let x = expr; x` at the end of a function.
declare_lint! {
pub STRING_ADD_ASSIGN,
- Warn,
- "Warn on `x = x + ..` where x is a `String`"
+ Allow,
+ "expressions of the form `x = x + ..` where x is a `String`"
}
declare_lint! {
pub STRING_ADD,
Allow,
- "Warn on `x + ..` where x is a `String`"
+ "expressions of the form `x + ..` where x is a `String` \
+ unless `string_add_assign` matches"
}
#[derive(Copy, Clone)]