[INFO] updating cached repository dive2Pro/throw-apple [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/dive2Pro/throw-apple [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/dive2Pro/throw-apple" "work/ex/clippy-test-run/sources/stable/gh/dive2Pro/throw-apple"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/dive2Pro/throw-apple'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/dive2Pro/throw-apple" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/dive2Pro/throw-apple"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/dive2Pro/throw-apple'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 585043211bc990eeef709bc3900d4c46d8abe064 [INFO] sha for GitHub repo dive2Pro/throw-apple: 585043211bc990eeef709bc3900d4c46d8abe064 [INFO] validating manifest of dive2Pro/throw-apple 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 dive2Pro/throw-apple 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 dive2Pro/throw-apple [INFO] finished frobbing dive2Pro/throw-apple [INFO] frobbed toml for dive2Pro/throw-apple written to work/ex/clippy-test-run/sources/stable/gh/dive2Pro/throw-apple/Cargo.toml [INFO] started frobbing dive2Pro/throw-apple [INFO] finished frobbing dive2Pro/throw-apple [INFO] frobbed toml for dive2Pro/throw-apple written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/dive2Pro/throw-apple/Cargo.toml [INFO] crate dive2Pro/throw-apple 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 dive2Pro/throw-apple 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/dive2Pro/throw-apple:/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] a149b546becfb304a296256e2e92df4e3768cbc2f5e537a783e9c6f9c073f6e9 [INFO] running `"docker" "start" "-a" "a149b546becfb304a296256e2e92df4e3768cbc2f5e537a783e9c6f9c073f6e9"` [INFO] [stderr] Compiling x11-dl v2.18.2 [INFO] [stderr] Compiling num-derive v0.2.2 [INFO] [stderr] Checking pistoncore-input v0.21.0 [INFO] [stderr] Checking jpeg-decoder v0.1.15 [INFO] [stderr] Checking image v0.19.0 [INFO] [stderr] Checking pistoncore-window v0.32.0 [INFO] [stderr] Checking pistoncore-event_loop v0.37.0 [INFO] [stderr] Checking winit v0.12.0 [INFO] [stderr] Checking piston v0.37.0 [INFO] [stderr] Checking piston-gfx_texture v0.32.0 [INFO] [stderr] Checking glutin v0.14.0 [INFO] [stderr] Checking piston2d-gfx_graphics v0.51.0 [INFO] [stderr] Checking pistoncore-glutin_window v0.47.0 [INFO] [stderr] Checking piston_window v0.80.0 [INFO] [stderr] Checking piston-demo v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: unused import: `Instant` [INFO] [stderr] --> src/main.rs:8:17 [INFO] [stderr] | [INFO] [stderr] 8 | use std::time::{Instant, Duration}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::marker::PhantomData` [INFO] [stderr] --> src/main.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use std::marker::PhantomData; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cmp::PartialEq` [INFO] [stderr] --> src/main.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | use std::cmp::PartialEq; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:277:21 [INFO] [stderr] | [INFO] [stderr] 277 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:280:21 [INFO] [stderr] | [INFO] [stderr] 280 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:287:21 [INFO] [stderr] | [INFO] [stderr] 287 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `Instant` [INFO] [stderr] --> src/main.rs:8:17 [INFO] [stderr] | [INFO] [stderr] 8 | use std::time::{Instant, Duration}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::marker::PhantomData` [INFO] [stderr] --> src/main.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use std::marker::PhantomData; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cmp::PartialEq` [INFO] [stderr] --> src/main.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | use std::cmp::PartialEq; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:277:21 [INFO] [stderr] | [INFO] [stderr] 277 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:280:21 [INFO] [stderr] | [INFO] [stderr] 280 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:287:21 [INFO] [stderr] | [INFO] [stderr] 287 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/main.rs:403:21 [INFO] [stderr] | [INFO] [stderr] 403 | GameMode::END => { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_patterns)] on by default [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/main.rs:407:21 [INFO] [stderr] | [INFO] [stderr] 407 | _ => {} [INFO] [stderr] | ^ [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/main.rs:570:21 [INFO] [stderr] | [INFO] [stderr] 570 | _ => {} [INFO] [stderr] | ^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `ItemModel` [INFO] [stderr] --> src/main.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | struct ItemModel {} [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | self.y = self.y + self.v; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.y += self.v` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: comparison is useless due to type limits [INFO] [stderr] --> src/main.rs:104:24 [INFO] [stderr] | [INFO] [stderr] 104 | if (p_y > 3) | (p_y < 0) | (p_x < 0) | (p_x > 3) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_comparisons)] on by default [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/main.rs:104:24 [INFO] [stderr] | [INFO] [stderr] 104 | if (p_y > 3) | (p_y < 0) | (p_x < 0) | (p_x > 3) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::absurd_extreme_comparisons)] on by default [INFO] [stderr] = help: because 0 is the minimum value for this type, this comparison is always false [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: comparison is useless due to type limits [INFO] [stderr] --> src/main.rs:104:36 [INFO] [stderr] | [INFO] [stderr] 104 | if (p_y > 3) | (p_y < 0) | (p_x < 0) | (p_x > 3) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/main.rs:104:36 [INFO] [stderr] | [INFO] [stderr] 104 | if (p_y > 3) | (p_y < 0) | (p_x < 0) | (p_x > 3) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: because 0 is the minimum value for this type, this comparison is always false [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/main.rs:403:21 [INFO] [stderr] | [INFO] [stderr] 403 | GameMode::END => { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_patterns)] on by default [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/main.rs:407:21 [INFO] [stderr] | [INFO] [stderr] 407 | _ => {} [INFO] [stderr] | ^ [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/main.rs:570:21 [INFO] [stderr] | [INFO] [stderr] 570 | _ => {} [INFO] [stderr] | ^ [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:110:22 [INFO] [stderr] | [INFO] [stderr] 110 | let (x, y) = position.get(index).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `position[index]` [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:124:13 [INFO] [stderr] | [INFO] [stderr] 124 | self.p_y = self.p_y - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.p_y -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:131:13 [INFO] [stderr] | [INFO] [stderr] 131 | self.p_y = self.p_y + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.p_y += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:137:13 [INFO] [stderr] | [INFO] [stderr] 137 | self.p_x = self.p_x - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.p_x -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:143:13 [INFO] [stderr] | [INFO] [stderr] 143 | self.p_x = self.p_x + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.p_x += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:159:22 [INFO] [stderr] | [INFO] [stderr] 159 | let (x, y) = self.position.get(index).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.position[index]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:189:9 [INFO] [stderr] | [INFO] [stderr] 189 | self.x = self.x + self.speed; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.x += self.speed` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/main.rs:349:9 [INFO] [stderr] | [INFO] [stderr] 349 | let ref font = Path::new("assets/Amatic-Bold.ttf"); [INFO] [stderr] | ----^^^^^^^^--------------------------------------- help: try: `let font = &Path::new("assets/Amatic-Bold.ttf");` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/main.rs:361:25 [INFO] [stderr] | [INFO] [stderr] 361 | / match state { [INFO] [stderr] 362 | | ButtonState::Press => { [INFO] [stderr] 363 | | match button { [INFO] [stderr] 364 | | Button::Keyboard(key) => { [INFO] [stderr] ... | [INFO] [stderr] 376 | | _ => {} [INFO] [stderr] 377 | | } [INFO] [stderr] | |_________________________^ [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] help: try this [INFO] [stderr] | [INFO] [stderr] 361 | if let ButtonState::Press = state { [INFO] [stderr] 362 | match button { [INFO] [stderr] 363 | Button::Keyboard(key) => { [INFO] [stderr] 364 | match key { [INFO] [stderr] 365 | Key::P => { [INFO] [stderr] 366 | game = Game::new(10); [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/main.rs:363:33 [INFO] [stderr] | [INFO] [stderr] 363 | / match button { [INFO] [stderr] 364 | | Button::Keyboard(key) => { [INFO] [stderr] 365 | | match key { [INFO] [stderr] 366 | | Key::P => { [INFO] [stderr] ... | [INFO] [stderr] 373 | | _ => {} [INFO] [stderr] 374 | | } [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] 363 | if let Button::Keyboard(key) = button { [INFO] [stderr] 364 | match key { [INFO] [stderr] 365 | Key::P => { [INFO] [stderr] 366 | game = Game::new(10); [INFO] [stderr] 367 | game.start_game(); [INFO] [stderr] 368 | } [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/main.rs:365:41 [INFO] [stderr] | [INFO] [stderr] 365 | / match key { [INFO] [stderr] 366 | | Key::P => { [INFO] [stderr] 367 | | game = Game::new(10); [INFO] [stderr] 368 | | game.start_game(); [INFO] [stderr] 369 | | } [INFO] [stderr] 370 | | _ => {} [INFO] [stderr] 371 | | } [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] 365 | if let Key::P = key { [INFO] [stderr] 366 | game = Game::new(10); [INFO] [stderr] 367 | game.start_game(); [INFO] [stderr] 368 | } [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/main.rs:380:25 [INFO] [stderr] | [INFO] [stderr] 380 | / match state { [INFO] [stderr] 381 | | ButtonState::Press => { [INFO] [stderr] 382 | | match button { [INFO] [stderr] 383 | | Button::Keyboard(key) => { [INFO] [stderr] ... | [INFO] [stderr] 400 | | _ => {} [INFO] [stderr] 401 | | } [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] 380 | if let ButtonState::Press = state { [INFO] [stderr] 381 | match button { [INFO] [stderr] 382 | Button::Keyboard(key) => { [INFO] [stderr] 383 | match key { [INFO] [stderr] 384 | Key::A => { game.shooter.move_left(); } [INFO] [stderr] 385 | Key::D => { game.shooter.move_right(); } [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/main.rs:382:33 [INFO] [stderr] | [INFO] [stderr] 382 | / match button { [INFO] [stderr] 383 | | Button::Keyboard(key) => { [INFO] [stderr] 384 | | match key { [INFO] [stderr] 385 | | Key::A => { game.shooter.move_left(); } [INFO] [stderr] ... | [INFO] [stderr] 397 | | _ => {} [INFO] [stderr] 398 | | } [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] 382 | if let Button::Keyboard(key) = button { [INFO] [stderr] 383 | match key { [INFO] [stderr] 384 | Key::A => { game.shooter.move_left(); } [INFO] [stderr] 385 | Key::D => { game.shooter.move_right(); } [INFO] [stderr] 386 | Key::W => { game.shooter.move_up(); } [INFO] [stderr] 387 | Key::S => { game.shooter.move_down(); } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `ItemModel` [INFO] [stderr] --> src/main.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | struct ItemModel {} [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | self.y = self.y + self.v; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.y += self.v` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] warning: comparison is useless due to type limits [INFO] [stderr] --> src/main.rs:104:24 [INFO] [stderr] | [INFO] [stderr] 104 | if (p_y > 3) | (p_y < 0) | (p_x < 0) | (p_x > 3) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_comparisons)] on by default [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/main.rs:104:24 [INFO] [stderr] | [INFO] [stderr] 104 | if (p_y > 3) | (p_y < 0) | (p_x < 0) | (p_x > 3) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::absurd_extreme_comparisons)] on by default [INFO] [stderr] = help: because 0 is the minimum value for this type, this comparison is always false [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: comparison is useless due to type limits [INFO] [stderr] --> src/main.rs:104:36 [INFO] [stderr] | [INFO] [stderr] 104 | if (p_y > 3) | (p_y < 0) | (p_x < 0) | (p_x > 3) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/main.rs:104:36 [INFO] [stderr] | [INFO] [stderr] 104 | if (p_y > 3) | (p_y < 0) | (p_x < 0) | (p_x > 3) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: because 0 is the minimum value for this type, this comparison is always false [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:110:22 [INFO] [stderr] | [INFO] [stderr] 110 | let (x, y) = position.get(index).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `position[index]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:124:13 [INFO] [stderr] | [INFO] [stderr] 124 | self.p_y = self.p_y - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.p_y -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:131:13 [INFO] [stderr] | [INFO] [stderr] 131 | self.p_y = self.p_y + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.p_y += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:137:13 [INFO] [stderr] | [INFO] [stderr] 137 | self.p_x = self.p_x - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.p_x -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:143:13 [INFO] [stderr] | [INFO] [stderr] 143 | self.p_x = self.p_x + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.p_x += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:159:22 [INFO] [stderr] | [INFO] [stderr] 159 | let (x, y) = self.position.get(index).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.position[index]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:189:9 [INFO] [stderr] | [INFO] [stderr] 189 | self.x = self.x + self.speed; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.x += self.speed` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] error: Could not compile `piston-demo`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/main.rs:349:9 [INFO] [stderr] | [INFO] [stderr] 349 | let ref font = Path::new("assets/Amatic-Bold.ttf"); [INFO] [stderr] | ----^^^^^^^^--------------------------------------- help: try: `let font = &Path::new("assets/Amatic-Bold.ttf");` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/main.rs:361:25 [INFO] [stderr] | [INFO] [stderr] 361 | / match state { [INFO] [stderr] 362 | | ButtonState::Press => { [INFO] [stderr] 363 | | match button { [INFO] [stderr] 364 | | Button::Keyboard(key) => { [INFO] [stderr] ... | [INFO] [stderr] 376 | | _ => {} [INFO] [stderr] 377 | | } [INFO] [stderr] | |_________________________^ [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] help: try this [INFO] [stderr] | [INFO] [stderr] 361 | if let ButtonState::Press = state { [INFO] [stderr] 362 | match button { [INFO] [stderr] 363 | Button::Keyboard(key) => { [INFO] [stderr] 364 | match key { [INFO] [stderr] 365 | Key::P => { [INFO] [stderr] 366 | game = Game::new(10); [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/main.rs:363:33 [INFO] [stderr] | [INFO] [stderr] 363 | / match button { [INFO] [stderr] 364 | | Button::Keyboard(key) => { [INFO] [stderr] 365 | | match key { [INFO] [stderr] 366 | | Key::P => { [INFO] [stderr] ... | [INFO] [stderr] 373 | | _ => {} [INFO] [stderr] 374 | | } [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] 363 | if let Button::Keyboard(key) = button { [INFO] [stderr] 364 | match key { [INFO] [stderr] 365 | Key::P => { [INFO] [stderr] 366 | game = Game::new(10); [INFO] [stderr] 367 | game.start_game(); [INFO] [stderr] 368 | } [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/main.rs:365:41 [INFO] [stderr] | [INFO] [stderr] 365 | / match key { [INFO] [stderr] 366 | | Key::P => { [INFO] [stderr] 367 | | game = Game::new(10); [INFO] [stderr] 368 | | game.start_game(); [INFO] [stderr] 369 | | } [INFO] [stderr] 370 | | _ => {} [INFO] [stderr] 371 | | } [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] 365 | if let Key::P = key { [INFO] [stderr] 366 | game = Game::new(10); [INFO] [stderr] 367 | game.start_game(); [INFO] [stderr] 368 | } [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/main.rs:380:25 [INFO] [stderr] | [INFO] [stderr] 380 | / match state { [INFO] [stderr] 381 | | ButtonState::Press => { [INFO] [stderr] 382 | | match button { [INFO] [stderr] 383 | | Button::Keyboard(key) => { [INFO] [stderr] ... | [INFO] [stderr] 400 | | _ => {} [INFO] [stderr] 401 | | } [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] 380 | if let ButtonState::Press = state { [INFO] [stderr] 381 | match button { [INFO] [stderr] 382 | Button::Keyboard(key) => { [INFO] [stderr] 383 | match key { [INFO] [stderr] 384 | Key::A => { game.shooter.move_left(); } [INFO] [stderr] 385 | Key::D => { game.shooter.move_right(); } [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/main.rs:382:33 [INFO] [stderr] | [INFO] [stderr] 382 | / match button { [INFO] [stderr] 383 | | Button::Keyboard(key) => { [INFO] [stderr] 384 | | match key { [INFO] [stderr] 385 | | Key::A => { game.shooter.move_left(); } [INFO] [stderr] ... | [INFO] [stderr] 397 | | _ => {} [INFO] [stderr] 398 | | } [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] 382 | if let Button::Keyboard(key) = button { [INFO] [stderr] 383 | match key { [INFO] [stderr] 384 | Key::A => { game.shooter.move_left(); } [INFO] [stderr] 385 | Key::D => { game.shooter.move_right(); } [INFO] [stderr] 386 | Key::W => { game.shooter.move_up(); } [INFO] [stderr] 387 | Key::S => { game.shooter.move_down(); } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `piston-demo`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "a149b546becfb304a296256e2e92df4e3768cbc2f5e537a783e9c6f9c073f6e9"` [INFO] running `"docker" "rm" "-f" "a149b546becfb304a296256e2e92df4e3768cbc2f5e537a783e9c6f9c073f6e9"` [INFO] [stdout] a149b546becfb304a296256e2e92df4e3768cbc2f5e537a783e9c6f9c073f6e9