pub static DEFAULT_OVERRIDES_DEFAULT_FIELDS: &LintExpand description
The default_overrides_default_fields lint checks for manual impl blocks of the
Default trait of types with default field values.
§Example
ⓘ
#![feature(default_field_values)]
struct Foo {
x: i32 = 101,
y: NonDefault,
}
struct NonDefault;
#[deny(default_overrides_default_fields)]
impl Default for Foo {
fn default() -> Foo {
Foo { x: 100, y: NonDefault }
}
}{{produces}}
§Explanation
Manually writing a Default implementation for a type that has
default field values runs the risk of diverging behavior between
Type { .. } and <Type as Default>::default(), which would be a
foot-gun for users of that type that would expect these to be
equivalent. If Default can’t be derived due to some fields not
having a Default implementation, we encourage the use of .. for
the fields that do have a default field value.