mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-27 15:11:30 +00:00
296dcf09fb
This lint makes Clippy warn about situations where an owned struct is essentially recreated by moving all its fields into a new instance of the struct. Until now this lint only triggered for structs recreated from a base struct. NB: The new functionality too will cause false positives for the situation where a non-copy struct consisting of all copy members is touched again in subsequent code.
77 lines
2.5 KiB
Text
77 lines
2.5 KiB
Text
error: unnecessary struct building
|
|
--> tests/ui/unnecessary_struct_initialization.rs:37:9
|
|
|
|
|
LL | Self { ..*self }
|
|
| ^^^^^^^^^^^^^^^^ help: replace with: `*self`
|
|
|
|
|
= note: `-D clippy::unnecessary-struct-initialization` implied by `-D warnings`
|
|
= help: to override `-D warnings` add `#[allow(clippy::unnecessary_struct_initialization)]`
|
|
|
|
error: unnecessary struct building
|
|
--> tests/ui/unnecessary_struct_initialization.rs:44:17
|
|
|
|
|
LL | let mut b = S { ..a };
|
|
| ^^^^^^^^^ help: replace with: `a`
|
|
|
|
error: unnecessary struct building
|
|
--> tests/ui/unnecessary_struct_initialization.rs:47:18
|
|
|
|
|
LL | let c = &mut S { ..b };
|
|
| ^^^^^^^^^ help: replace with: `b`
|
|
|
|
error: unnecessary struct building
|
|
--> tests/ui/unnecessary_struct_initialization.rs:55:14
|
|
|
|
|
LL | let g = &S { ..f };
|
|
| ^^^^^^^^^ help: replace with: `f`
|
|
|
|
error: unnecessary struct building
|
|
--> tests/ui/unnecessary_struct_initialization.rs:58:18
|
|
|
|
|
LL | let h = &mut S {
|
|
| __________________^
|
|
LL | | ..*Box::new(S { f: String::from("foo") })
|
|
LL | | };
|
|
| |_____^ help: replace with: `*Box::new(S { f: String::from("foo") })`
|
|
|
|
error: unnecessary struct building
|
|
--> tests/ui/unnecessary_struct_initialization.rs:77:18
|
|
|
|
|
LL | let p = &mut T {
|
|
| __________________^
|
|
LL | | ..*Box::new(T { f: 5 })
|
|
LL | | };
|
|
| |_____^ help: replace with: `*Box::new(T { f: 5 })`
|
|
|
|
error: unnecessary struct building
|
|
--> tests/ui/unnecessary_struct_initialization.rs:83:13
|
|
|
|
|
LL | let r = W { f1: q.f1, f2: q.f2 };
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `q`
|
|
|
|
error: unnecessary struct building
|
|
--> tests/ui/unnecessary_struct_initialization.rs:94:13
|
|
|
|
|
LL | let w = W { f1: v.f1, ..v };
|
|
| ^^^^^^^^^^^^^^^^^^^ help: replace with: `v`
|
|
|
|
error: unnecessary struct building
|
|
--> tests/ui/unnecessary_struct_initialization.rs:102:14
|
|
|
|
|
LL | let r2 = r1.start..r1.end;
|
|
| ^^^^^^^^^^^^^^^^ help: replace with: `r1`
|
|
|
|
error: unnecessary struct building
|
|
--> tests/ui/unnecessary_struct_initialization.rs:115:14
|
|
|
|
|
LL | let d = &W { f1: c.f1, f2: c.f2 };
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `c`
|
|
|
|
error: unnecessary struct building
|
|
--> tests/ui/unnecessary_struct_initialization.rs:123:14
|
|
|
|
|
LL | let h = &W { f1: g.f1, ..g };
|
|
| ^^^^^^^^^^^^^^^^^^^ help: replace with: `g`
|
|
|
|
error: aborting due to 11 previous errors
|
|
|