### What it does Detects manual `std::default::Default` implementations that are identical to a derived implementation. ### Why is this bad? It is less concise. ### Example ``` struct Foo { bar: bool } impl Default for Foo { fn default() -> Self { Self { bar: false } } } ``` Use instead: ``` #[derive(Default)] struct Foo { bar: bool } ``` ### Known problems Derive macros [sometimes use incorrect bounds](https://github.com/rust-lang/rust/issues/26925) in generic types and the user defined `impl` may be more generalized or specialized than what derive will produce. This lint can't detect the manual `impl` has exactly equal bounds, and therefore this lint is disabled for types with generic parameters.