Skip to content

Compiler errors after clippy fixes. Maybe issue with WebAssembly attribute. #12932

@PaulXiCao

Description

@PaulXiCao

Summary

I ran clippy on my code and it reported: "after fixes were automatically applied the compiler reported errors within these files: ...".

My code is available at: PaulXiCao/oxidized-turret@6ee2ffa.

Rust version:

$ rustc -Vv
rustc 1.79.0 (129f3b996 2024-06-10)
binary: rustc
commit-hash: 129f3b9964af4d4a709d1383930ade12dfe7c081
commit-date: 2024-06-10
host: x86_64-unknown-linux-gnu
release: 1.79.0
LLVM version: 18.1.7

Clippy output:

$ cargo clippy --fix
    Checking oxidized-turret v0.1.0 (/home/paul/info/oxidized-turret)
warning: failed to automatically apply fixes suggested by rustc to crate `oxidized_turret`

after fixes were automatically applied the compiler reported errors within these files:

  * src/lib.rs
  * src/path.rs
  * src/recycled_list.rs

This likely indicates a bug in either rustc or cargo itself,
and we would appreciate a bug report! You're likely to see
a number of compiler warnings after this message which cargo
attempted to fix but failed. If you could open an issue at
https://github.com/rust-lang/rust-clippy/issues
quoting the full output of this command we'd be very appreciative!
Note that you may be able to make some more progress in the near-term
fixing code with the `--broken-code` flag

The following errors were reported:
error: #[wasm_bindgen] trait impls are not supported
  --> src/lib.rs:63:6
   |
63 | impl Default for Game {
   |      ^^^^^^^

warning: redundant field names in struct initialization
  --> src/path.rs:23:58
   |
23 |                 successors.push(GridPosition { x: x - 1, y: y });
   |                                                          ^^^^ help: replace it with: `y`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names
   = note: `#[warn(clippy::redundant_field_names)]` on by default

warning: redundant field names in struct initialization
  --> src/path.rs:26:48
   |
26 |                 successors.push(GridPosition { x: x, y: y - 1 });
   |                                                ^^^^ help: replace it with: `x`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names

warning: redundant field names in struct initialization
  --> src/path.rs:29:58
   |
29 |                 successors.push(GridPosition { x: x + 1, y: y });
   |                                                          ^^^^ help: replace it with: `y`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names

warning: redundant field names in struct initialization
  --> src/path.rs:32:48
   |
32 |                 successors.push(GridPosition { x: x, y: y + 1 });
   |                                                ^^^^ help: replace it with: `x`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names

warning: redundant field names in struct initialization
  --> src/recycled_list.rs:99:17
   |
99 |                 item_ref: item_ref,
   |                 ^^^^^^^^^^^^^^^^^^ help: replace it with: `item_ref`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names

warning: redundant field names in struct initialization
   --> src/recycled_list.rs:110:17
    |
110 |                 item_ref: item_ref,
    |                 ^^^^^^^^^^^^^^^^^^ help: replace it with: `item_ref`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names

error: aborting due to 1 previous error; 6 warnings emitted

Original diagnostics will follow.

warning: unused import: `ExternalTurret`
 --> src/lib.rs:9:71
  |
9 |     to_external_turret, to_external_turret_with_stats, ExternalState, ExternalTurret, GameResult,
  |                                                                       ^^^^^^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: fields `crit_chance` and `crit_multiplier` are never read
   --> src/entities.rs:214:9
    |
208 | pub struct StaticSniperData {
    |            ---------------- fields in this struct
...
214 |     pub crit_chance: f32,
    |         ^^^^^^^^^^^
215 |     pub crit_multiplier: f32,
    |         ^^^^^^^^^^^^^^^
    |
    = note: `StaticSniperData` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
    = note: `#[warn(dead_code)]` on by default

warning: using `clone` on type `RecycledListRef` which implements the `Copy` trait
   --> src/entities.rs:199:25
    |
199 |                 target: self.target.clone(),
    |                         ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.target`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
    = note: `#[warn(clippy::clone_on_copy)]` on by default

warning: called `map_or(None, ..)` on an `Option` value
   --> src/entities.rs:426:12
    |
426 |       return creeps
    |  ____________^
427 | |         .enumerate()
428 | |         .map(|creep_item| (distance(creep_item.data.pos, turret_pos), creep_item))
429 | |         .filter(|(d, _item_ref)| *d < turret_range)
430 | |         .min_by_key(|(d, _item_ref)| (*d * 100.0) as i32)
431 | |         .map_or(None, |x| Some(x.1));
    | |____________________________________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_or_none
    = note: `#[warn(clippy::option_map_or_none)]` on by default
help: consider using `map`
    |
426 ~     return creeps
427 +         .enumerate()
428 +         .map(|creep_item| (distance(creep_item.data.pos, turret_pos), creep_item))
429 +         .filter(|(d, _item_ref)| *d < turret_range)
430 ~         .min_by_key(|(d, _item_ref)| (*d * 100.0) as i32).map(|x| x.1);
    |

warning: this operation has no effect
  --> src/path.rs:23:61
   |
23 |                 successors.push(GridPosition { x: x - 1, y: y + 0 });
   |                                                             ^^^^^ help: consider reducing it to: `y`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op
   = note: `#[warn(clippy::identity_op)]` on by default

warning: this operation has no effect
  --> src/path.rs:26:51
   |
26 |                 successors.push(GridPosition { x: x + 0, y: y - 1 });
   |                                                   ^^^^^ help: consider reducing it to: `x`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op

warning: this operation has no effect
  --> src/path.rs:29:61
   |
29 |                 successors.push(GridPosition { x: x + 1, y: y + 0 });
   |                                                             ^^^^^ help: consider reducing it to: `y`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op

warning: this operation has no effect
  --> src/path.rs:32:51
   |
32 |                 successors.push(GridPosition { x: x + 0, y: y + 1 });
   |                                                   ^^^^^ help: consider reducing it to: `x`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op

warning: you should consider adding a `Default` implementation for `RecycledList<T>`
  --> src/recycled_list.rs:30:5
   |
30 | /     pub fn new() -> Self {
31 | |         RecycledList {
32 | |             current_id: 0,
33 | |             items: vec![],
34 | |             free_list: vec![],
35 | |         }
36 | |     }
   | |_____^
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default
   = note: `#[warn(clippy::new_without_default)]` on by default
help: try adding this
   |
29 + impl<T> Default for RecycledList<T> {
30 +     fn default() -> Self {
31 +         Self::new()
32 +     }
33 + }
   |

warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
  --> src/recycled_list.rs:74:9
   |
74 | /         match item {
75 | |             Some(item) => {
76 | |                 if item.item_ref.id == item_ref.id {
77 | |                     item.item_ref.id = 0;
...  |
81 | |             _ => (),
82 | |         }
   | |_________^
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match
   = note: `#[warn(clippy::single_match)]` on by default
help: try
   |
74 ~         if let Some(item) = item {
75 +             if item.item_ref.id == item_ref.id {
76 +                 item.item_ref.id = 0;
77 +                 self.free_list.push(item_ref.index);
78 +             }
79 +         }
   |

warning: unneeded `return` statement
  --> src/recycled_list.rs:96:13
   |
96 |             return item_ref;
   |             ^^^^^^^^^^^^^^^
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
   = note: `#[warn(clippy::needless_return)]` on by default
help: remove `return`
   |
96 -             return item_ref;
96 +             item_ref
   |

warning: unneeded `return` statement
   --> src/recycled_list.rs:107:13
    |
107 |             return item_ref;
    |             ^^^^^^^^^^^^^^^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return
help: remove `return`
    |
107 -             return item_ref;
107 +             item_ref
    |

warning: using `clone` on type `RecycledListRef` which implements the `Copy` trait
  --> src/recycled_list.rs:93:27
   |
93 |                 item_ref: item_ref.clone(),
   |                           ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `item_ref`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy

warning: using `clone` on type `RecycledListRef` which implements the `Copy` trait
   --> src/recycled_list.rs:104:27
    |
104 |                 item_ref: item_ref.clone(),
    |                           ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `item_ref`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy

warning: call to `reserve` immediately after creation
   --> src/recycled_list.rs:119:9
    |
119 | /         let mut items_to_remove: Vec<RecycledListRef> = vec![];
120 | |         items_to_remove.reserve(self.items.len() - self.free_list.len());
    | |_________________________________________________________________________^ help: consider using `Vec::with_capacity(/* Space hint */)`: `let mut items_to_remove: Vec<RecycledListRef> = Vec::with_capacity(self.items.len() - self.free_list.len());`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#reserve_after_initialization
    = note: `#[warn(clippy::reserve_after_initialization)]` on by default

warning: using `clone` on type `GridPosition` which implements the `Copy` trait
  --> src/lib.rs:28:21
   |
28 |     let mut start = game.state.creep_spawn.clone();
   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `game.state.creep_spawn`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy

warning: you should consider adding a `Default` implementation for `Game`
  --> src/lib.rs:64:5
   |
64 | /     pub fn new() -> Self {
65 | |         utils::set_panic_hook();
66 | |
67 | |         let state = State {
...  |
94 | |         game
95 | |     }
   | |_____^
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default
help: try adding this
   |
63 + impl Default for Game {
64 +     fn default() -> Self {
65 +         Self::new()
66 +     }
67 + }
   |

warning: you are using an explicit closure for copying elements
   --> src/lib.rs:123:24
    |
123 |             particles: state.particles.iter().map(|x| *x).collect(),
    |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `state.particles.iter().copied()`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone
    = note: `#[warn(clippy::map_clone)]` on by default

warning: you are using an explicit closure for copying elements
   --> src/lib.rs:124:21
    |
124 |             creeps: state.creeps.iter().map(|x| *x).collect(),
    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `state.creeps.iter().copied()`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone

warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
   --> src/lib.rs:136:9
    |
136 | /         match self.state.game_phase {
137 | |             GamePhase::Fighting => return,
138 | |             _ => (),
139 | |         }
    | |_________^ help: try: `if let GamePhase::Fighting = self.state.game_phase { return }`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match

warning: called `is_some()` after searching an `Iterator` with `find`
   --> src/lib.rs:164:14
    |
164 |               .find(|x| x.general_data.pos == grid_pos)
    |  ______________^
165 | |             .is_some()
    | |______________________^ help: consider using: `any(|x| x.general_data.pos == grid_pos)`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some
    = note: `#[warn(clippy::search_is_some)]` on by default

warning: manual implementation of `Option::map`
   --> src/lib.rs:205:9
    |
205 | /         match value {
206 | |             None => None,
207 | |             Some(x) => Some(TurretRef {
208 | |                 data: to_external_turret_with_stats(&x.data, &self.state),
209 | |                 turret_ref: x.item_ref.clone(),
210 | |             }),
211 | |         }
    | |_________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map
    = note: `#[warn(clippy::manual_map)]` on by default
help: try
    |
205 ~         value.map(|x| TurretRef {
206 +                 data: to_external_turret_with_stats(&x.data, &self.state),
207 +                 turret_ref: x.item_ref.clone(),
208 +             })
    |

warning: using `clone` on type `RecycledListRef` which implements the `Copy` trait
   --> src/lib.rs:209:29
    |
209 |                 turret_ref: x.item_ref.clone(),
    |                             ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `x.item_ref`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy

warning: manual implementation of `Option::map`
   --> src/lib.rs:215:9
    |
215 | /         match self.turret_state.get(turret_ref) {
216 | |             Some(turret) => Some(TurretRef {
217 | |                 data: to_external_turret_with_stats(turret, &self.state),
218 | |                 turret_ref,
219 | |             }),
220 | |             None => None,
221 | |         }
    | |_________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_map
help: try
    |
215 ~         self.turret_state.get(turret_ref).map(|turret| TurretRef {
216 +                 data: to_external_turret_with_stats(turret, &self.state),
217 +                 turret_ref,
218 +             })
    |

warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
   --> src/lib.rs:268:9
    |
268 | /         match self.state.game_phase {
269 | |             GamePhase::Building => {
270 | |                 self.state.game_phase = GamePhase::Fighting;
271 | |             }
272 | |             _ => (),
273 | |         }
    | |_________^
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match
help: try
    |
268 ~         if let GamePhase::Building = self.state.game_phase {
269 +             self.state.game_phase = GamePhase::Fighting;
270 +         }
    |

warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let`
   --> src/lib.rs:280:9
    |
280 | /         match self.state.game_phase {
281 | |             GamePhase::Building => return,
282 | |             _ => (),
283 | |         }
    | |_________^ help: try: `if let GamePhase::Building = self.state.game_phase { return }`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match

warning: using `clone` on type `RecycledListRef` which implements the `Copy` trait
   --> src/lib.rs:313:39
    |
313 |                 creeps_to_remove.push(creep_item.item_ref.clone());
    |                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `creep_item.item_ref`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy

warning: using `clone` on type `RecycledListRef` which implements the `Copy` trait
   --> src/lib.rs:332:38
    |
332 |             self.state.creeps.remove(creep_to_remove.clone());
    |                                      ^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*creep_to_remove`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy

warning: using `clone` on type `RecycledListRef` which implements the `Copy` trait
   --> src/lib.rs:372:46
    |
372 |                     self.state.creeps.remove(particle.target.clone());
    |                                              ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `particle.target`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy

warning: using `clone` on type `RecycledListRef` which implements the `Copy` trait
   --> src/lib.rs:383:41
    |
383 |             self.state.particles.remove(particle_to_remove.clone());
    |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*particle_to_remove`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy

warning: `oxidized-turret` (lib) generated 30 warnings (run `cargo clippy --fix --lib -p oxidized-turret` to apply 24 suggestions)
warning: failed to automatically apply fixes suggested by rustc to crate `oxidized_turret`

after fixes were automatically applied the compiler reported errors within these files:

  * src/lib.rs
  * src/path.rs
  * src/recycled_list.rs

This likely indicates a bug in either rustc or cargo itself,
and we would appreciate a bug report! You're likely to see
a number of compiler warnings after this message which cargo
attempted to fix but failed. If you could open an issue at
https://github.com/rust-lang/rust-clippy/issues
quoting the full output of this command we'd be very appreciative!
Note that you may be able to make some more progress in the near-term
fixing code with the `--broken-code` flag

The following errors were reported:
error: #[wasm_bindgen] trait impls are not supported
  --> src/lib.rs:63:6
   |
63 | impl Default for Game {
   |      ^^^^^^^

warning: redundant field names in struct initialization
  --> src/path.rs:23:58
   |
23 |                 successors.push(GridPosition { x: x - 1, y: y });
   |                                                          ^^^^ help: replace it with: `y`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names
   = note: `#[warn(clippy::redundant_field_names)]` on by default

warning: redundant field names in struct initialization
  --> src/path.rs:26:48
   |
26 |                 successors.push(GridPosition { x: x, y: y - 1 });
   |                                                ^^^^ help: replace it with: `x`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names

warning: redundant field names in struct initialization
  --> src/path.rs:29:58
   |
29 |                 successors.push(GridPosition { x: x + 1, y: y });
   |                                                          ^^^^ help: replace it with: `y`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names

warning: redundant field names in struct initialization
  --> src/path.rs:32:48
   |
32 |                 successors.push(GridPosition { x: x, y: y + 1 });
   |                                                ^^^^ help: replace it with: `x`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names

warning: redundant field names in struct initialization
  --> src/recycled_list.rs:99:17
   |
99 |                 item_ref: item_ref,
   |                 ^^^^^^^^^^^^^^^^^^ help: replace it with: `item_ref`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names

warning: redundant field names in struct initialization
   --> src/recycled_list.rs:110:17
    |
110 |                 item_ref: item_ref,
    |                 ^^^^^^^^^^^^^^^^^^ help: replace it with: `item_ref`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names

error: aborting due to 1 previous error; 6 warnings emitted

Original diagnostics will follow.

warning: using `clone` on type `RecycledListRef` which implements the `Copy` trait
   --> src/recycled_list.rs:149:14
    |
149 |     v.remove(ref1.clone());
    |              ^^^^^^^^^^^^ help: try removing the `clone` call: `ref1`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy

warning: using `clone` on type `RecycledListRef` which implements the `Copy` trait
   --> src/recycled_list.rs:151:27
    |
151 |     assert_eq!(*v.get_mut(ref2.clone()).unwrap(), String::from("test2"));
    |                           ^^^^^^^^^^^^ help: try removing the `clone` call: `ref2`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy

warning: using `clone` on type `RecycledListRef` which implements the `Copy` trait
   --> src/recycled_list.rs:156:27
    |
156 |     assert_eq!(*v.get_mut(ref2.clone()).unwrap(), String::from("test2"));
    |                           ^^^^^^^^^^^^ help: try removing the `clone` call: `ref2`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy

warning: using `clone` on type `RecycledListRef` which implements the `Copy` trait
   --> src/recycled_list.rs:157:27
    |
157 |     assert_eq!(*v.get_mut(ref3.clone()).unwrap(), String::from("test3"));
    |                           ^^^^^^^^^^^^ help: try removing the `clone` call: `ref3`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy

warning: using `clone` on type `RecycledListRef` which implements the `Copy` trait
   --> src/recycled_list.rs:158:27
    |
158 |     assert_eq!(*v.get_mut(ref4.clone()).unwrap(), String::from("test4"));
    |                           ^^^^^^^^^^^^ help: try removing the `clone` call: `ref4`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy

warning: `oxidized-turret` (lib test) generated 35 warnings (30 duplicates) (run `cargo clippy --fix --lib -p oxidized-turret --tests` to apply 5 suggestions)
warning: failed to automatically apply fixes suggested by rustc to crate `oxidized_turret`

after fixes were automatically applied the compiler reported errors within these files:

  * src/lib.rs
  * src/path.rs
  * src/recycled_list.rs

This likely indicates a bug in either rustc or cargo itself,
and we would appreciate a bug report! You're likely to see
a number of compiler warnings after this message which cargo
attempted to fix but failed. If you could open an issue at
https://github.com/rust-lang/rust-clippy/issues
quoting the full output of this command we'd be very appreciative!
Note that you may be able to make some more progress in the near-term
fixing code with the `--broken-code` flag

The following errors were reported:
error: #[wasm_bindgen] trait impls are not supported
  --> src/lib.rs:63:6
   |
63 | impl Default for Game {
   |      ^^^^^^^

warning: redundant field names in struct initialization
  --> src/path.rs:23:58
   |
23 |                 successors.push(GridPosition { x: x - 1, y: y });
   |                                                          ^^^^ help: replace it with: `y`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names
   = note: `#[warn(clippy::redundant_field_names)]` on by default

warning: redundant field names in struct initialization
  --> src/path.rs:26:48
   |
26 |                 successors.push(GridPosition { x: x, y: y - 1 });
   |                                                ^^^^ help: replace it with: `x`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names

warning: redundant field names in struct initialization
  --> src/path.rs:29:58
   |
29 |                 successors.push(GridPosition { x: x + 1, y: y });
   |                                                          ^^^^ help: replace it with: `y`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names

warning: redundant field names in struct initialization
  --> src/path.rs:32:48
   |
32 |                 successors.push(GridPosition { x: x, y: y + 1 });
   |                                                ^^^^ help: replace it with: `x`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names

warning: redundant field names in struct initialization
  --> src/recycled_list.rs:99:17
   |
99 |                 item_ref: item_ref,
   |                 ^^^^^^^^^^^^^^^^^^ help: replace it with: `item_ref`
   |
   = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names

warning: redundant field names in struct initialization
   --> src/recycled_list.rs:110:17
    |
110 |                 item_ref: item_ref,
    |                 ^^^^^^^^^^^^^^^^^^ help: replace it with: `item_ref`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names

error: aborting due to 1 previous error; 6 warnings emitted

Original diagnostics will follow.

warning: `oxidized-turret` (lib) generated 30 warnings (30 duplicates)
    Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.53s

Reproducer

I tried this code:

<code>

I expected to see this happen:

Instead, this happened:

Version

No response

Additional Labels

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: Clippy is not doing the correct thingI-suggestion-causes-errorIssue: The suggestions provided by this Lint cause an ICE/error when applied

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions