[INFO] updating cached repository lhernandezcruz/hit_n_run [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/lhernandezcruz/hit_n_run [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/lhernandezcruz/hit_n_run" "work/ex/clippy-test-run/sources/stable/gh/lhernandezcruz/hit_n_run"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/lhernandezcruz/hit_n_run'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/lhernandezcruz/hit_n_run" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/lhernandezcruz/hit_n_run"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/lhernandezcruz/hit_n_run'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] f8e9d046c4aaec0f48285f03d6f7c3500d3f750d [INFO] sha for GitHub repo lhernandezcruz/hit_n_run: f8e9d046c4aaec0f48285f03d6f7c3500d3f750d [INFO] validating manifest of lhernandezcruz/hit_n_run on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of lhernandezcruz/hit_n_run on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing lhernandezcruz/hit_n_run [INFO] finished frobbing lhernandezcruz/hit_n_run [INFO] frobbed toml for lhernandezcruz/hit_n_run written to work/ex/clippy-test-run/sources/stable/gh/lhernandezcruz/hit_n_run/Cargo.toml [INFO] started frobbing lhernandezcruz/hit_n_run [INFO] finished frobbing lhernandezcruz/hit_n_run [INFO] frobbed toml for lhernandezcruz/hit_n_run written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/lhernandezcruz/hit_n_run/Cargo.toml [INFO] crate lhernandezcruz/hit_n_run has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting lhernandezcruz/hit_n_run against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/lhernandezcruz/hit_n_run:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] b62bd006d697472f70e27fa6dc8c5420416238133126f4707918661b2360366f [INFO] running `"docker" "start" "-a" "b62bd006d697472f70e27fa6dc8c5420416238133126f4707918661b2360366f"` [INFO] [stderr] warning: An explicit [[bin]] section is specified in Cargo.toml which currently [INFO] [stderr] disables Cargo from automatically inferring other binary targets. [INFO] [stderr] This inference behavior will change in the Rust 2018 edition and the following [INFO] [stderr] files will be included as a binary target: [INFO] [stderr] [INFO] [stderr] * /opt/crater/workdir/src/main.rs [INFO] [stderr] [INFO] [stderr] This is likely to break cargo build or cargo test as these files may not be [INFO] [stderr] ready to be compiled as a binary target today. You can future-proof yourself [INFO] [stderr] and disable this warning by adding `autobins = false` to your [package] [INFO] [stderr] section. You may also move the files to a location where Cargo would not [INFO] [stderr] automatically infer them to be a target, such as in subfolders. [INFO] [stderr] [INFO] [stderr] For more information on this warning you can consult [INFO] [stderr] https://github.com/rust-lang/cargo/issues/5330 [INFO] [stderr] warning: path `/opt/crater/workdir/src/main.rs` was erroneously implicitly accepted for binary `main`, [INFO] [stderr] please set bin.path in Cargo.toml [INFO] [stderr] Checking shader_version v0.2.1 [INFO] [stderr] Checking nodrop v0.1.8 [INFO] [stderr] Checking stb_truetype v0.2.0 [INFO] [stderr] Checking pistoncore-input v0.17.1 [INFO] [stderr] Compiling gl v0.6.1 [INFO] [stderr] Checking arrayvec v0.3.20 [INFO] [stderr] Checking rusttype v0.2.1 [INFO] [stderr] Checking pistoncore-window v0.26.2 [INFO] [stderr] Checking pistoncore-event_loop v0.31.3 [INFO] [stderr] Checking piston v0.31.3 [INFO] [stderr] Checking pistoncore-glutin_window v0.35.0 [INFO] [stderr] Checking piston2d-opengl_graphics v0.40.0 [INFO] [stderr] Checking hit_n_run v0.1.5 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/vector/mod.rs:12:18 [INFO] [stderr] | [INFO] [stderr] 12 | Vector { x: x, y: y } [INFO] [stderr] | ^^^^ help: replace it with: `x` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/vector/mod.rs:12:24 [INFO] [stderr] | [INFO] [stderr] 12 | Vector { x: x, y: y } [INFO] [stderr] | ^^^^ help: replace it with: `y` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/vector/mod.rs:12:18 [INFO] [stderr] | [INFO] [stderr] 12 | Vector { x: x, y: y } [INFO] [stderr] | ^^^^ help: replace it with: `x` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/vector/mod.rs:12:24 [INFO] [stderr] | [INFO] [stderr] 12 | Vector { x: x, y: y } [INFO] [stderr] | ^^^^ help: replace it with: `y` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/game.rs:348:16 [INFO] [stderr] | [INFO] [stderr] 348 | mut window: &mut Window, [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/weapons/bullet.rs:40:38 [INFO] [stderr] | [INFO] [stderr] 40 | fn friendly_mov(&mut self, args: &UpdateArgs, width: f64, height: f64) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/weapons/bullet.rs:53:35 [INFO] [stderr] | [INFO] [stderr] 53 | fn enemy_mov(&mut self, args: &UpdateArgs, width: f64, height: f64) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/weapons/bullet.rs:89:36 [INFO] [stderr] | [INFO] [stderr] 89 | pub fn update(&mut self, args: &UpdateArgs, dimensions: &[f64; 2]) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: `ref` directly on a function argument is ignored. Consider using a reference type instead. [INFO] [stderr] --> src/models/enemy.rs:54:27 [INFO] [stderr] | [INFO] [stderr] 54 | pub fn hit(&mut self, ref mut b: &mut Bullet) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/models/enemy.rs:108:25 [INFO] [stderr] | [INFO] [stderr] 108 | args: &UpdateArgs, [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: `ref` directly on a function argument is ignored. Consider using a reference type instead. [INFO] [stderr] --> src/models/player.rs:62:31 [INFO] [stderr] | [INFO] [stderr] 62 | pub fn collide(&mut self, ref mut enemy: &mut Enemy) { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` directly on a function argument is ignored. Consider using a reference type instead. [INFO] [stderr] --> src/models/player.rs:74:27 [INFO] [stderr] | [INFO] [stderr] 74 | pub fn hit(&mut self, ref mut b: &mut Bullet) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/models/player.rs:129:36 [INFO] [stderr] | [INFO] [stderr] 129 | pub fn update(&mut self, args: &UpdateArgs, dimensions: &[f64; 2]) -> Option { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/models/player.rs:190:9 [INFO] [stderr] | [INFO] [stderr] 190 | / match self.texture { [INFO] [stderr] 191 | | Ok(ref t) => image(t, bodytrans, gl), [INFO] [stderr] 192 | | _ => {} [INFO] [stderr] 193 | | } [INFO] [stderr] | |_________^ help: try this: `if let Ok(ref t) = self.texture { image(t, bodytrans, gl) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/models/player.rs:197:37 [INFO] [stderr] | [INFO] [stderr] 197 | let slength = PLAYERD / (STARTSHOTS as f64) * (self.shots as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(STARTSHOTS)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/models/player.rs:197:59 [INFO] [stderr] | [INFO] [stderr] 197 | let slength = PLAYERD / (STARTSHOTS as f64) * (self.shots as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.shots)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: `ref` directly on a function argument is ignored. Consider using a reference type instead. [INFO] [stderr] --> src/models/boss.rs:40:27 [INFO] [stderr] | [INFO] [stderr] 40 | pub fn hit(&mut self, ref mut b: &mut Bullet) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/models/boss.rs:57:23 [INFO] [stderr] | [INFO] [stderr] 57 | let rot = x as f64 * 2.0 * f64::consts::PI / TOTBULL+ self.rotation; [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/models/boss.rs:64:36 [INFO] [stderr] | [INFO] [stderr] 64 | pub fn update(&mut self, args: &UpdateArgs) -> Option> { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game.rs:75:35 [INFO] [stderr] | [INFO] [stderr] 75 | fn on_update(&mut self, args: &UpdateArgs) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/game.rs:77:9 [INFO] [stderr] | [INFO] [stderr] 77 | / match self.player.update(args, &self.dimensions) { [INFO] [stderr] 78 | | Some(bullet) => self.player_bullets.push(bullet), [INFO] [stderr] 79 | | None => {} [INFO] [stderr] 80 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(bullet) = self.player.update(args, &self.dimensions) { self.player_bullets.push(bullet) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/game.rs:99:13 [INFO] [stderr] | [INFO] [stderr] 99 | / match shot { [INFO] [stderr] 100 | | Some(bullet) => self.enemy_bullets.push(bullet), [INFO] [stderr] 101 | | None => {} [INFO] [stderr] 102 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(bullet) = shot { self.enemy_bullets.push(bullet) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/game.rs:112:13 [INFO] [stderr] | [INFO] [stderr] 112 | / match shots { [INFO] [stderr] 113 | | Some(mut vec) => self.enemy_bullets.append(&mut vec), [INFO] [stderr] 114 | | None => {} [INFO] [stderr] 115 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(mut vec) = shots { self.enemy_bullets.append(&mut vec) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/game.rs:247:22 [INFO] [stderr] | [INFO] [stderr] 247 | format!("RIP. R to Reset").as_str(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"RIP. R to Reset".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game.rs:282:45 [INFO] [stderr] | [INFO] [stderr] 282 | fn on_resize(&mut self, new_dimensions: &[u32; 2]) { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `[u32; 2]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/game.rs:283:30 [INFO] [stderr] | [INFO] [stderr] 283 | self.dimensions[0] = new_dimensions[0] as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(new_dimensions[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/game.rs:284:30 [INFO] [stderr] | [INFO] [stderr] 284 | self.dimensions[1] = new_dimensions[1] as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(new_dimensions[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/game.rs:334:9 [INFO] [stderr] | [INFO] [stderr] 334 | / match key { [INFO] [stderr] 335 | | Key::Space => { [INFO] [stderr] 336 | | self.player.stop_shooting(); [INFO] [stderr] 337 | | } [INFO] [stderr] 338 | | _ => {} [INFO] [stderr] 339 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 334 | if let Key::Space = key { [INFO] [stderr] 335 | self.player.stop_shooting(); [INFO] [stderr] 336 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/game.rs:370:21 [INFO] [stderr] | [INFO] [stderr] 370 | / match k { [INFO] [stderr] 371 | | Button::Keyboard(key) => self.on_key_release(key), [INFO] [stderr] 372 | | _ => {} [INFO] [stderr] 373 | | } [INFO] [stderr] | |_____________________^ help: try this: `if let Button::Keyboard(key) = k { self.on_key_release(key) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/game.rs:389:17 [INFO] [stderr] | [INFO] [stderr] 389 | / match k { [INFO] [stderr] 390 | | Button::Keyboard(key) => self.on_key_press(key), [INFO] [stderr] 391 | | _ => {} [INFO] [stderr] 392 | | } [INFO] [stderr] | |_________________^ help: try this: `if let Button::Keyboard(key) = k { self.on_key_press(key) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/game.rs:348:16 [INFO] [stderr] | [INFO] [stderr] 348 | mut window: &mut Window, [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/weapons/bullet.rs:40:38 [INFO] [stderr] | [INFO] [stderr] 40 | fn friendly_mov(&mut self, args: &UpdateArgs, width: f64, height: f64) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/weapons/bullet.rs:53:35 [INFO] [stderr] | [INFO] [stderr] 53 | fn enemy_mov(&mut self, args: &UpdateArgs, width: f64, height: f64) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/weapons/bullet.rs:89:36 [INFO] [stderr] | [INFO] [stderr] 89 | pub fn update(&mut self, args: &UpdateArgs, dimensions: &[f64; 2]) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: `ref` directly on a function argument is ignored. Consider using a reference type instead. [INFO] [stderr] --> src/models/enemy.rs:54:27 [INFO] [stderr] | [INFO] [stderr] 54 | pub fn hit(&mut self, ref mut b: &mut Bullet) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/models/enemy.rs:108:25 [INFO] [stderr] | [INFO] [stderr] 108 | args: &UpdateArgs, [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: `ref` directly on a function argument is ignored. Consider using a reference type instead. [INFO] [stderr] --> src/models/player.rs:62:31 [INFO] [stderr] | [INFO] [stderr] 62 | pub fn collide(&mut self, ref mut enemy: &mut Enemy) { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` directly on a function argument is ignored. Consider using a reference type instead. [INFO] [stderr] --> src/models/player.rs:74:27 [INFO] [stderr] | [INFO] [stderr] 74 | pub fn hit(&mut self, ref mut b: &mut Bullet) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/models/player.rs:129:36 [INFO] [stderr] | [INFO] [stderr] 129 | pub fn update(&mut self, args: &UpdateArgs, dimensions: &[f64; 2]) -> Option { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/models/player.rs:190:9 [INFO] [stderr] | [INFO] [stderr] 190 | / match self.texture { [INFO] [stderr] 191 | | Ok(ref t) => image(t, bodytrans, gl), [INFO] [stderr] 192 | | _ => {} [INFO] [stderr] 193 | | } [INFO] [stderr] | |_________^ help: try this: `if let Ok(ref t) = self.texture { image(t, bodytrans, gl) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/models/player.rs:197:37 [INFO] [stderr] | [INFO] [stderr] 197 | let slength = PLAYERD / (STARTSHOTS as f64) * (self.shots as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(STARTSHOTS)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/models/player.rs:197:59 [INFO] [stderr] | [INFO] [stderr] 197 | let slength = PLAYERD / (STARTSHOTS as f64) * (self.shots as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.shots)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: `ref` directly on a function argument is ignored. Consider using a reference type instead. [INFO] [stderr] --> src/models/boss.rs:40:27 [INFO] [stderr] | [INFO] [stderr] 40 | pub fn hit(&mut self, ref mut b: &mut Bullet) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/models/boss.rs:57:23 [INFO] [stderr] | [INFO] [stderr] 57 | let rot = x as f64 * 2.0 * f64::consts::PI / TOTBULL+ self.rotation; [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/models/boss.rs:64:36 [INFO] [stderr] | [INFO] [stderr] 64 | pub fn update(&mut self, args: &UpdateArgs) -> Option> { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game.rs:75:35 [INFO] [stderr] | [INFO] [stderr] 75 | fn on_update(&mut self, args: &UpdateArgs) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/game.rs:77:9 [INFO] [stderr] | [INFO] [stderr] 77 | / match self.player.update(args, &self.dimensions) { [INFO] [stderr] 78 | | Some(bullet) => self.player_bullets.push(bullet), [INFO] [stderr] 79 | | None => {} [INFO] [stderr] 80 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(bullet) = self.player.update(args, &self.dimensions) { self.player_bullets.push(bullet) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/game.rs:99:13 [INFO] [stderr] | [INFO] [stderr] 99 | / match shot { [INFO] [stderr] 100 | | Some(bullet) => self.enemy_bullets.push(bullet), [INFO] [stderr] 101 | | None => {} [INFO] [stderr] 102 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(bullet) = shot { self.enemy_bullets.push(bullet) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/game.rs:112:13 [INFO] [stderr] | [INFO] [stderr] 112 | / match shots { [INFO] [stderr] 113 | | Some(mut vec) => self.enemy_bullets.append(&mut vec), [INFO] [stderr] 114 | | None => {} [INFO] [stderr] 115 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(mut vec) = shots { self.enemy_bullets.append(&mut vec) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/game.rs:247:22 [INFO] [stderr] | [INFO] [stderr] 247 | format!("RIP. R to Reset").as_str(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"RIP. R to Reset".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game.rs:282:45 [INFO] [stderr] | [INFO] [stderr] 282 | fn on_resize(&mut self, new_dimensions: &[u32; 2]) { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `[u32; 2]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/game.rs:283:30 [INFO] [stderr] | [INFO] [stderr] 283 | self.dimensions[0] = new_dimensions[0] as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(new_dimensions[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/game.rs:284:30 [INFO] [stderr] | [INFO] [stderr] 284 | self.dimensions[1] = new_dimensions[1] as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(new_dimensions[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/game.rs:334:9 [INFO] [stderr] | [INFO] [stderr] 334 | / match key { [INFO] [stderr] 335 | | Key::Space => { [INFO] [stderr] 336 | | self.player.stop_shooting(); [INFO] [stderr] 337 | | } [INFO] [stderr] 338 | | _ => {} [INFO] [stderr] 339 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 334 | if let Key::Space = key { [INFO] [stderr] 335 | self.player.stop_shooting(); [INFO] [stderr] 336 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/game.rs:370:21 [INFO] [stderr] | [INFO] [stderr] 370 | / match k { [INFO] [stderr] 371 | | Button::Keyboard(key) => self.on_key_release(key), [INFO] [stderr] 372 | | _ => {} [INFO] [stderr] 373 | | } [INFO] [stderr] | |_____________________^ help: try this: `if let Button::Keyboard(key) = k { self.on_key_release(key) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/game.rs:389:17 [INFO] [stderr] | [INFO] [stderr] 389 | / match k { [INFO] [stderr] 390 | | Button::Keyboard(key) => self.on_key_press(key), [INFO] [stderr] 391 | | _ => {} [INFO] [stderr] 392 | | } [INFO] [stderr] | |_________________^ help: try this: `if let Button::Keyboard(key) = k { self.on_key_press(key) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/vector/mod.rs:12:18 [INFO] [stderr] | [INFO] [stderr] 12 | Vector { x: x, y: y } [INFO] [stderr] | ^^^^ help: replace it with: `x` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/vector/mod.rs:12:24 [INFO] [stderr] | [INFO] [stderr] 12 | Vector { x: x, y: y } [INFO] [stderr] | ^^^^ help: replace it with: `y` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/vector/mod.rs:12:18 [INFO] [stderr] | [INFO] [stderr] 12 | Vector { x: x, y: y } [INFO] [stderr] | ^^^^ help: replace it with: `x` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/vector/mod.rs:12:24 [INFO] [stderr] | [INFO] [stderr] 12 | Vector { x: x, y: y } [INFO] [stderr] | ^^^^ help: replace it with: `y` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/game.rs:348:16 [INFO] [stderr] | [INFO] [stderr] 348 | mut window: &mut Window, [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game.rs:75:35 [INFO] [stderr] | [INFO] [stderr] 75 | fn on_update(&mut self, args: &UpdateArgs) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/game.rs:77:9 [INFO] [stderr] | [INFO] [stderr] 77 | / match self.player.update(args, &self.dimensions) { [INFO] [stderr] 78 | | Some(bullet) => self.player_bullets.push(bullet), [INFO] [stderr] 79 | | None => {} [INFO] [stderr] 80 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(bullet) = self.player.update(args, &self.dimensions) { self.player_bullets.push(bullet) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/game.rs:99:13 [INFO] [stderr] | [INFO] [stderr] 99 | / match shot { [INFO] [stderr] 100 | | Some(bullet) => self.enemy_bullets.push(bullet), [INFO] [stderr] 101 | | None => {} [INFO] [stderr] 102 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(bullet) = shot { self.enemy_bullets.push(bullet) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/game.rs:112:13 [INFO] [stderr] | [INFO] [stderr] 112 | / match shots { [INFO] [stderr] 113 | | Some(mut vec) => self.enemy_bullets.append(&mut vec), [INFO] [stderr] 114 | | None => {} [INFO] [stderr] 115 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(mut vec) = shots { self.enemy_bullets.append(&mut vec) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/game.rs:247:22 [INFO] [stderr] | [INFO] [stderr] 247 | format!("RIP. R to Reset").as_str(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"RIP. R to Reset".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game.rs:282:45 [INFO] [stderr] | [INFO] [stderr] 282 | fn on_resize(&mut self, new_dimensions: &[u32; 2]) { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `[u32; 2]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/game.rs:283:30 [INFO] [stderr] | [INFO] [stderr] 283 | self.dimensions[0] = new_dimensions[0] as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(new_dimensions[0])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/game.rs:284:30 [INFO] [stderr] | [INFO] [stderr] 284 | self.dimensions[1] = new_dimensions[1] as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(new_dimensions[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/game.rs:334:9 [INFO] [stderr] | [INFO] [stderr] 334 | / match key { [INFO] [stderr] 335 | | Key::Space => { [INFO] [stderr] 336 | | self.player.stop_shooting(); [INFO] [stderr] 337 | | } [INFO] [stderr] 338 | | _ => {} [INFO] [stderr] 339 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 334 | if let Key::Space = key { [INFO] [stderr] 335 | self.player.stop_shooting(); [INFO] [stderr] 336 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/game.rs:370:21 [INFO] [stderr] | [INFO] [stderr] 370 | / match k { [INFO] [stderr] 371 | | Button::Keyboard(key) => self.on_key_release(key), [INFO] [stderr] 372 | | _ => {} [INFO] [stderr] 373 | | } [INFO] [stderr] | |_____________________^ help: try this: `if let Button::Keyboard(key) = k { self.on_key_release(key) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/game.rs:389:17 [INFO] [stderr] | [INFO] [stderr] 389 | / match k { [INFO] [stderr] 390 | | Button::Keyboard(key) => self.on_key_press(key), [INFO] [stderr] 391 | | _ => {} [INFO] [stderr] 392 | | } [INFO] [stderr] | |_________________^ help: try this: `if let Button::Keyboard(key) = k { self.on_key_press(key) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: `ref` directly on a function argument is ignored. Consider using a reference type instead. [INFO] [stderr] --> src/models/enemy.rs:54:27 [INFO] [stderr] | [INFO] [stderr] 54 | pub fn hit(&mut self, ref mut b: &mut Bullet) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/models/enemy.rs:108:25 [INFO] [stderr] | [INFO] [stderr] 108 | args: &UpdateArgs, [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: `ref` directly on a function argument is ignored. Consider using a reference type instead. [INFO] [stderr] --> src/models/player.rs:62:31 [INFO] [stderr] | [INFO] [stderr] 62 | pub fn collide(&mut self, ref mut enemy: &mut Enemy) { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` directly on a function argument is ignored. Consider using a reference type instead. [INFO] [stderr] --> src/models/player.rs:74:27 [INFO] [stderr] | [INFO] [stderr] 74 | pub fn hit(&mut self, ref mut b: &mut Bullet) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/models/player.rs:129:36 [INFO] [stderr] | [INFO] [stderr] 129 | pub fn update(&mut self, args: &UpdateArgs, dimensions: &[f64; 2]) -> Option { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/models/player.rs:190:9 [INFO] [stderr] | [INFO] [stderr] 190 | / match self.texture { [INFO] [stderr] 191 | | Ok(ref t) => image(t, bodytrans, gl), [INFO] [stderr] 192 | | _ => {} [INFO] [stderr] 193 | | } [INFO] [stderr] | |_________^ help: try this: `if let Ok(ref t) = self.texture { image(t, bodytrans, gl) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/models/player.rs:197:37 [INFO] [stderr] | [INFO] [stderr] 197 | let slength = PLAYERD / (STARTSHOTS as f64) * (self.shots as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(STARTSHOTS)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/models/player.rs:197:59 [INFO] [stderr] | [INFO] [stderr] 197 | let slength = PLAYERD / (STARTSHOTS as f64) * (self.shots as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.shots)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: `ref` directly on a function argument is ignored. Consider using a reference type instead. [INFO] [stderr] --> src/models/boss.rs:40:27 [INFO] [stderr] | [INFO] [stderr] 40 | pub fn hit(&mut self, ref mut b: &mut Bullet) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/models/boss.rs:57:23 [INFO] [stderr] | [INFO] [stderr] 57 | let rot = x as f64 * 2.0 * f64::consts::PI / TOTBULL+ self.rotation; [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/models/boss.rs:64:36 [INFO] [stderr] | [INFO] [stderr] 64 | pub fn update(&mut self, args: &UpdateArgs) -> Option> { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/weapons/bullet.rs:40:38 [INFO] [stderr] | [INFO] [stderr] 40 | fn friendly_mov(&mut self, args: &UpdateArgs, width: f64, height: f64) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/weapons/bullet.rs:53:35 [INFO] [stderr] | [INFO] [stderr] 53 | fn enemy_mov(&mut self, args: &UpdateArgs, width: f64, height: f64) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/weapons/bullet.rs:89:36 [INFO] [stderr] | [INFO] [stderr] 89 | pub fn update(&mut self, args: &UpdateArgs, dimensions: &[f64; 2]) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:32:33 [INFO] [stderr] | [INFO] [stderr] 32 | let mut g = game::Game::new(sizes::INITWIDTH as f64, sizes::INITHEIGHT as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(sizes::INITWIDTH)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:32:58 [INFO] [stderr] | [INFO] [stderr] 32 | let mut g = game::Game::new(sizes::INITWIDTH as f64, sizes::INITHEIGHT as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(sizes::INITHEIGHT)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/game.rs:348:16 [INFO] [stderr] | [INFO] [stderr] 348 | mut window: &mut Window, [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game.rs:75:35 [INFO] [stderr] | [INFO] [stderr] 75 | fn on_update(&mut self, args: &UpdateArgs) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/game.rs:77:9 [INFO] [stderr] | [INFO] [stderr] 77 | / match self.player.update(args, &self.dimensions) { [INFO] [stderr] 78 | | Some(bullet) => self.player_bullets.push(bullet), [INFO] [stderr] 79 | | None => {} [INFO] [stderr] 80 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(bullet) = self.player.update(args, &self.dimensions) { self.player_bullets.push(bullet) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/game.rs:99:13 [INFO] [stderr] | [INFO] [stderr] 99 | / match shot { [INFO] [stderr] 100 | | Some(bullet) => self.enemy_bullets.push(bullet), [INFO] [stderr] 101 | | None => {} [INFO] [stderr] 102 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(bullet) = shot { self.enemy_bullets.push(bullet) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/game.rs:112:13 [INFO] [stderr] | [INFO] [stderr] 112 | / match shots { [INFO] [stderr] 113 | | Some(mut vec) => self.enemy_bullets.append(&mut vec), [INFO] [stderr] 114 | | None => {} [INFO] [stderr] 115 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(mut vec) = shots { self.enemy_bullets.append(&mut vec) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/game.rs:247:22 [INFO] [stderr] | [INFO] [stderr] 247 | format!("RIP. R to Reset").as_str(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"RIP. R to Reset".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game.rs:282:45 [INFO] [stderr] | [INFO] [stderr] 282 | fn on_resize(&mut self, new_dimensions: &[u32; 2]) { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `[u32; 2]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/game.rs:283:30 [INFO] [stderr] | [INFO] [stderr] 283 | self.dimensions[0] = new_dimensions[0] as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(new_dimensions[0])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/game.rs:284:30 [INFO] [stderr] | [INFO] [stderr] 284 | self.dimensions[1] = new_dimensions[1] as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(new_dimensions[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/game.rs:334:9 [INFO] [stderr] | [INFO] [stderr] 334 | / match key { [INFO] [stderr] 335 | | Key::Space => { [INFO] [stderr] 336 | | self.player.stop_shooting(); [INFO] [stderr] 337 | | } [INFO] [stderr] 338 | | _ => {} [INFO] [stderr] 339 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 334 | if let Key::Space = key { [INFO] [stderr] 335 | self.player.stop_shooting(); [INFO] [stderr] 336 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/game.rs:370:21 [INFO] [stderr] | [INFO] [stderr] 370 | / match k { [INFO] [stderr] 371 | | Button::Keyboard(key) => self.on_key_release(key), [INFO] [stderr] 372 | | _ => {} [INFO] [stderr] 373 | | } [INFO] [stderr] | |_____________________^ help: try this: `if let Button::Keyboard(key) = k { self.on_key_release(key) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/game.rs:389:17 [INFO] [stderr] | [INFO] [stderr] 389 | / match k { [INFO] [stderr] 390 | | Button::Keyboard(key) => self.on_key_press(key), [INFO] [stderr] 391 | | _ => {} [INFO] [stderr] 392 | | } [INFO] [stderr] | |_________________^ help: try this: `if let Button::Keyboard(key) = k { self.on_key_press(key) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: `ref` directly on a function argument is ignored. Consider using a reference type instead. [INFO] [stderr] --> src/models/enemy.rs:54:27 [INFO] [stderr] | [INFO] [stderr] 54 | pub fn hit(&mut self, ref mut b: &mut Bullet) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/models/enemy.rs:108:25 [INFO] [stderr] | [INFO] [stderr] 108 | args: &UpdateArgs, [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: `ref` directly on a function argument is ignored. Consider using a reference type instead. [INFO] [stderr] --> src/models/player.rs:62:31 [INFO] [stderr] | [INFO] [stderr] 62 | pub fn collide(&mut self, ref mut enemy: &mut Enemy) { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` directly on a function argument is ignored. Consider using a reference type instead. [INFO] [stderr] --> src/models/player.rs:74:27 [INFO] [stderr] | [INFO] [stderr] 74 | pub fn hit(&mut self, ref mut b: &mut Bullet) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/models/player.rs:129:36 [INFO] [stderr] | [INFO] [stderr] 129 | pub fn update(&mut self, args: &UpdateArgs, dimensions: &[f64; 2]) -> Option { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/models/player.rs:190:9 [INFO] [stderr] | [INFO] [stderr] 190 | / match self.texture { [INFO] [stderr] 191 | | Ok(ref t) => image(t, bodytrans, gl), [INFO] [stderr] 192 | | _ => {} [INFO] [stderr] 193 | | } [INFO] [stderr] | |_________^ help: try this: `if let Ok(ref t) = self.texture { image(t, bodytrans, gl) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/models/player.rs:197:37 [INFO] [stderr] | [INFO] [stderr] 197 | let slength = PLAYERD / (STARTSHOTS as f64) * (self.shots as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(STARTSHOTS)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/models/player.rs:197:59 [INFO] [stderr] | [INFO] [stderr] 197 | let slength = PLAYERD / (STARTSHOTS as f64) * (self.shots as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.shots)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: `ref` directly on a function argument is ignored. Consider using a reference type instead. [INFO] [stderr] --> src/models/boss.rs:40:27 [INFO] [stderr] | [INFO] [stderr] 40 | pub fn hit(&mut self, ref mut b: &mut Bullet) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/models/boss.rs:57:23 [INFO] [stderr] | [INFO] [stderr] 57 | let rot = x as f64 * 2.0 * f64::consts::PI / TOTBULL+ self.rotation; [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/models/boss.rs:64:36 [INFO] [stderr] | [INFO] [stderr] 64 | pub fn update(&mut self, args: &UpdateArgs) -> Option> { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/weapons/bullet.rs:40:38 [INFO] [stderr] | [INFO] [stderr] 40 | fn friendly_mov(&mut self, args: &UpdateArgs, width: f64, height: f64) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/weapons/bullet.rs:53:35 [INFO] [stderr] | [INFO] [stderr] 53 | fn enemy_mov(&mut self, args: &UpdateArgs, width: f64, height: f64) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/weapons/bullet.rs:89:36 [INFO] [stderr] | [INFO] [stderr] 89 | pub fn update(&mut self, args: &UpdateArgs, dimensions: &[f64; 2]) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:32:33 [INFO] [stderr] | [INFO] [stderr] 32 | let mut g = game::Game::new(sizes::INITWIDTH as f64, sizes::INITHEIGHT as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(sizes::INITWIDTH)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:32:58 [INFO] [stderr] | [INFO] [stderr] 32 | let mut g = game::Game::new(sizes::INITWIDTH as f64, sizes::INITHEIGHT as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(sizes::INITHEIGHT)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 22.26s [INFO] running `"docker" "inspect" "b62bd006d697472f70e27fa6dc8c5420416238133126f4707918661b2360366f"` [INFO] running `"docker" "rm" "-f" "b62bd006d697472f70e27fa6dc8c5420416238133126f4707918661b2360366f"` [INFO] [stdout] b62bd006d697472f70e27fa6dc8c5420416238133126f4707918661b2360366f