[INFO] cloning repository https://github.com/ttaomae/tet-rs [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ttaomae/tet-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fttaomae%2Ftet-rs", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fttaomae%2Ftet-rs'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 5cd6dceda2969fb24b22bfc9ba270e1d1044319d [INFO] linting ttaomae/tet-rs against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fttaomae%2Ftet-rs" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/ttaomae/tet-rs [INFO] finished tweaking git repo https://github.com/ttaomae/tet-rs [INFO] tweaked toml for git repo https://github.com/ttaomae/tet-rs written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/ttaomae/tet-rs on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/ttaomae/tet-rs already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded pistoncore-window v0.32.0 [INFO] [stderr] Downloaded shader_version v0.3.0 [INFO] [stderr] Downloaded serde_derive v1.0.79 [INFO] [stderr] Downloaded pistoncore-input v0.21.0 [INFO] [stderr] Downloaded piston-gfx_texture v0.32.0 [INFO] [stderr] Downloaded pistoncore-glutin_window v0.47.0 [INFO] [stderr] Downloaded rand_core v0.2.1 [INFO] [stderr] Downloaded interpolation v0.1.0 [INFO] [stderr] Downloaded piston-shaders_graphics2d v0.3.1 [INFO] [stderr] Downloaded cfg-if v0.1.5 [INFO] [stderr] Downloaded redox_syscall v0.1.40 [INFO] [stderr] Downloaded pistoncore-event_loop v0.37.0 [INFO] [stderr] Downloaded memmap v0.6.2 [INFO] [stderr] Downloaded gfx_gl v0.5.0 [INFO] [stderr] Downloaded gfx v0.17.1 [INFO] [stderr] Downloaded gif v0.10.0 [INFO] [stderr] Downloaded jpeg-decoder v0.1.15 [INFO] [stderr] Downloaded gfx_device_gl v0.15.3 [INFO] [stderr] Downloaded wayland-kbd v0.13.1 [INFO] [stderr] Downloaded piston2d-graphics v0.26.0 [INFO] [stderr] Downloaded wayland-protocols v0.12.5 [INFO] [stderr] Downloaded deflate v0.7.18 [INFO] [stderr] Downloaded rayon v1.0.2 [INFO] [stderr] Downloaded image v0.19.0 [INFO] [stderr] Downloaded winit v0.12.0 [INFO] [stderr] Downloaded syn v0.15.4 [INFO] [stderr] Downloaded x11-dl v2.18.3 [INFO] [stderr] Downloaded serde v1.0.79 [INFO] [stderr] Downloaded gfx_core v0.8.2 [INFO] [stderr] Downloaded log v0.4.5 [INFO] [stderr] Downloaded piston2d-gfx_graphics v0.51.0 [INFO] [stderr] Downloaded objc v0.2.5 [INFO] [stderr] Downloaded khronos_api v2.2.0 [INFO] [stderr] Downloaded wayland-client v0.12.5 [INFO] [stderr] Downloaded cc v1.0.25 [INFO] [stderr] Downloaded glutin v0.14.0 [INFO] [stderr] Downloaded stb_truetype v0.2.4 [INFO] [stderr] Downloaded rusttype v0.4.3 [INFO] [stderr] Downloaded gleam v0.6.0 [INFO] [stderr] Downloaded gl_generator v0.9.0 [INFO] [stderr] Downloaded cocoa v0.14.0 [INFO] [stderr] Downloaded tempfile v3.0.4 [INFO] [stderr] Downloaded wayland-scanner v0.12.5 [INFO] [stderr] Downloaded lazy_static v1.1.0 [INFO] [stderr] Downloaded proc-macro2 v0.4.19 [INFO] [stderr] Downloaded png v0.12.0 [INFO] [stderr] Downloaded piston_window v0.80.0 [INFO] [stderr] Downloaded core-graphics v0.13.0 [INFO] [stderr] Downloaded num-derive v0.2.2 [INFO] [stderr] Downloaded inflate v0.4.3 [INFO] [stderr] Downloaded core-foundation v0.5.1 [INFO] [stderr] Downloaded token_store v0.1.2 [INFO] [stderr] Downloaded wayland-sys v0.12.5 [INFO] [stderr] Downloaded wayland-window v0.13.3 [INFO] [stderr] Downloaded quote v0.6.8 [INFO] [stderr] Downloaded piston-viewport v0.3.0 [INFO] [stderr] Downloaded piston v0.37.0 [INFO] [stderr] Downloaded piston-texture v0.6.0 [INFO] [stderr] Downloaded byteorder v1.2.6 [INFO] [stderr] Downloaded piston-float v0.3.0 [INFO] [stderr] Downloaded read_color v1.0.0 [INFO] [stderr] Downloaded vecmath v0.3.1 [INFO] [stderr] Downloaded gl v0.10.0 [INFO] [stderr] Downloaded version_check v0.1.4 [INFO] [stderr] Downloaded ordered-float v0.5.2 [INFO] [stderr] Downloaded winapi v0.3.5 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] ec099523315683c46908d0b462eb12033e81ec8aeddcfabbe0bb441ac7ad894e [INFO] running `Command { std: "docker" "start" "-a" "ec099523315683c46908d0b462eb12033e81ec8aeddcfabbe0bb441ac7ad894e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "ec099523315683c46908d0b462eb12033e81ec8aeddcfabbe0bb441ac7ad894e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ec099523315683c46908d0b462eb12033e81ec8aeddcfabbe0bb441ac7ad894e", kill_on_drop: false }` [INFO] [stdout] ec099523315683c46908d0b462eb12033e81ec8aeddcfabbe0bb441ac7ad894e [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] c5ffb10e037639a591d09940776afe958686df5b5b7582b1f4d1ee2ffbd0c26d [INFO] running `Command { std: "docker" "start" "-a" "c5ffb10e037639a591d09940776afe958686df5b5b7582b1f4d1ee2ffbd0c26d", kill_on_drop: false }` [INFO] [stderr] Compiling bitflags v1.0.4 [INFO] [stderr] Compiling version_check v0.1.4 [INFO] [stderr] Checking libc v0.2.43 [INFO] [stderr] Checking cfg-if v0.1.5 [INFO] [stderr] Compiling num-traits v0.2.6 [INFO] [stderr] Compiling proc-macro2 v0.4.19 [INFO] [stderr] Compiling khronos_api v2.2.0 [INFO] [stderr] Compiling cc v1.0.25 [INFO] [stderr] Checking nodrop v0.1.12 [INFO] [stderr] Checking piston-float v0.3.0 [INFO] [stderr] Checking byteorder v1.2.6 [INFO] [stderr] Compiling num-integer v0.1.39 [INFO] [stderr] Compiling rayon-core v1.4.1 [INFO] [stderr] Compiling quote v0.3.15 [INFO] [stderr] Compiling xml-rs v0.7.0 [INFO] [stderr] Compiling log v0.4.5 [INFO] [stderr] Checking token_store v0.1.2 [INFO] [stderr] Compiling serde v1.0.79 [INFO] [stderr] Checking crossbeam-utils v0.2.2 [INFO] [stderr] Checking piston-viewport v0.3.0 [INFO] [stderr] Checking arrayvec v0.4.7 [INFO] [stderr] Compiling unicode-xid v0.0.4 [INFO] [stderr] Compiling either v1.5.0 [INFO] [stderr] Checking rand_core v0.2.1 [INFO] [stderr] Compiling rayon v1.0.2 [INFO] [stderr] Compiling num-iter v0.1.37 [INFO] [stderr] Compiling pkg-config v0.3.14 [INFO] [stderr] Checking adler32 v1.0.3 [INFO] [stderr] Compiling syn v0.10.8 [INFO] [stderr] Compiling lazy_static v1.1.0 [INFO] [stderr] Compiling itertools v0.5.10 [INFO] [stderr] Checking draw_state v0.8.0 [INFO] [stderr] Checking shader_version v0.3.0 [INFO] [stderr] Checking remove_dir_all v0.5.1 [INFO] [stderr] Checking inflate v0.4.3 [INFO] [stderr] Checking deflate v0.7.18 [INFO] [stderr] Compiling quote v0.6.8 [INFO] [stderr] Compiling wayland-scanner v0.12.5 [INFO] [stderr] Compiling gl_generator v0.9.0 [INFO] [stderr] Checking crossbeam-epoch v0.3.1 [INFO] [stderr] Compiling syn v0.15.4 [INFO] [stderr] Checking num_cpus v1.8.0 [INFO] [stderr] Checking rand v0.5.5 [INFO] [stderr] Checking memmap v0.6.2 [INFO] [stderr] Compiling x11-dl v2.18.3 [INFO] [stderr] Compiling syn v0.14.9 [INFO] [stderr] Checking crossbeam-deque v0.2.0 [INFO] [stderr] Checking lzw v0.10.0 [INFO] [stderr] Checking color_quant v1.0.1 [INFO] [stderr] Compiling wayland-client v0.12.5 [INFO] [stderr] Compiling wayland-protocols v0.12.5 [INFO] [stderr] Compiling libloading v0.5.0 [INFO] [stderr] Checking shared_library v0.1.9 [INFO] [stderr] Checking stb_truetype v0.2.4 [INFO] [stderr] Compiling gfx_gl v0.5.0 [INFO] [stderr] Compiling gl v0.10.0 [INFO] [stderr] Compiling glutin v0.14.0 [INFO] [stderr] Checking gif v0.10.0 [INFO] [stderr] Checking scoped_threadpool v0.1.9 [INFO] [stderr] Checking piston-texture v0.6.0 [INFO] [stderr] Checking osmesa-sys v0.1.2 [INFO] [stderr] Checking tempfile v3.0.4 [INFO] [stderr] Checking vecmath v0.3.1 [INFO] [stderr] Checking interpolation v0.1.0 [INFO] [stderr] Checking dlib v0.4.1 [INFO] [stderr] Checking read_color v1.0.0 [INFO] [stderr] Checking wayland-sys v0.12.5 [INFO] [stderr] Checking piston-shaders_graphics2d v0.3.1 [INFO] [stderr] Checking num-traits v0.1.43 [INFO] [stderr] Checking ordered-float v0.5.2 [INFO] [stderr] Checking num-rational v0.1.42 [INFO] [stderr] Checking png v0.12.0 [INFO] [stderr] Checking rusttype v0.4.3 [INFO] [stderr] Checking piston2d-graphics v0.26.0 [INFO] [stderr] Compiling num-derive v0.2.2 [INFO] [stderr] Compiling derivative v1.0.0 [INFO] [stderr] Checking wayland-kbd v0.13.1 [INFO] [stderr] Compiling serde_derive v1.0.79 [INFO] [stderr] Checking jpeg-decoder v0.1.15 [INFO] [stderr] Checking image v0.19.0 [INFO] [stderr] Checking gfx_core v0.8.2 [INFO] [stderr] Checking wayland-window v0.13.3 [INFO] [stderr] Checking winit v0.12.0 [INFO] [stderr] Checking gfx v0.17.1 [INFO] [stderr] Checking gfx_device_gl v0.15.3 [INFO] [stderr] Checking piston-gfx_texture v0.32.0 [INFO] [stderr] Checking piston2d-gfx_graphics v0.51.0 [INFO] [stderr] Checking pistoncore-input v0.21.0 [INFO] [stderr] Checking pistoncore-window v0.32.0 [INFO] [stderr] Checking pistoncore-event_loop v0.37.0 [INFO] [stderr] Checking pistoncore-glutin_window v0.47.0 [INFO] [stderr] Checking piston v0.37.0 [INFO] [stderr] Checking piston_window v0.80.0 [INFO] [stderr] Checking tet-rs v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused variable: `t_spin` [INFO] [stdout] --> src/engine/base.rs:188:23 [INFO] [stdout] | [INFO] [stdout] 188 | fn on_lock(&self, t_spin: TSpin) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_t_spin` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `n_rows` [INFO] [stdout] --> src/engine/base.rs:189:28 [INFO] [stdout] | [INFO] [stdout] 189 | fn on_soft_drop(&self, n_rows: u8) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_rows` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `n_rows` [INFO] [stdout] --> src/engine/base.rs:190:28 [INFO] [stdout] | [INFO] [stdout] 190 | fn on_hard_drop(&self, n_rows: u8) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_rows` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `n_rows` [INFO] [stdout] --> src/engine/base.rs:191:29 [INFO] [stdout] | [INFO] [stdout] 191 | fn on_line_clear(&self, n_rows: u8) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_rows` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_score` is never used [INFO] [stdout] --> src/engine/single.rs:100:8 [INFO] [stdout] | [INFO] [stdout] 86 | impl SinglePlayerEngine { [INFO] [stdout] | ----------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 100 | fn get_score(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/engine/base.rs:313:61 [INFO] [stdout] | [INFO] [stdout] 313 | if self.current_tick_inputs.borrow_mut().remove(&action) { [INFO] [stdout] | ^^^^^^^ help: change this to: `action` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/engine/base.rs:314:51 [INFO] [stdout] | [INFO] [stdout] 314 | match self.current_inputs.get_mut(&action) { [INFO] [stdout] | ^^^^^^^ help: change this to: `action` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/engine/base.rs:322:51 [INFO] [stdout] | [INFO] [stdout] 322 | match self.current_inputs.get_mut(&action) { [INFO] [stdout] | ^^^^^^^ help: change this to: `action` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/engine/base.rs:362:32 [INFO] [stdout] | [INFO] [stdout] 362 | ... && (*duration - AUTO_REPEAT_DELAY) % AUTO_REPEAT_RATE == 0 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `(*duration - AUTO_REPEAT_DELAY).is_multiple_of(AUTO_REPEAT_RATE)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/engine/base.rs:386:54 [INFO] [stdout] | [INFO] [stdout] 386 | let applied_actions = self.apply_actions(&actions); [INFO] [stdout] | ^^^^^^^^ help: change this to: `actions` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/engine/base.rs:395:50 [INFO] [stdout] | [INFO] [stdout] 395 | let dropped = self.apply_gravity(&actions); [INFO] [stdout] | ^^^^^^^^ help: change this to: `actions` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/engine/base.rs:418:58 [INFO] [stdout] | [INFO] [stdout] 418 | let applied_actions = self.apply_actions(&actions); [INFO] [stdout] | ^^^^^^^^ help: change this to: `actions` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/engine/base.rs:464:28 [INFO] [stdout] | [INFO] [stdout] 464 | if self.apply_hold(&actions) { [INFO] [stdout] | ^^^^^^^^ help: change this to: `actions` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/engine/base.rs:468:65 [INFO] [stdout] | [INFO] [stdout] 468 | if let Option::Some(action) = self.apply_piece_move(&actions) { [INFO] [stdout] | ^^^^^^^^ help: change this to: `actions` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/engine/base.rs:471:69 [INFO] [stdout] | [INFO] [stdout] 471 | if let Option::Some(action) = self.apply_piece_rotation(&actions) { [INFO] [stdout] | ^^^^^^^^ help: change this to: `actions` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/engine/base.rs:474:64 [INFO] [stdout] | [INFO] [stdout] 474 | if let Option::Some(action) = self.apply_hard_drop(&actions) { [INFO] [stdout] | ^^^^^^^^ help: change this to: `actions` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/engine/base.rs:632:20 [INFO] [stdout] | [INFO] [stdout] 632 | if bb_space == &Space::Block [INFO] [stdout] | ____________________^ [INFO] [stdout] 633 | | // Collision occurs if block is outside playfield. [INFO] [stdout] 634 | | && ((row < 1 || col < 1 || col > Playfield::WIDTH as i8) [INFO] [stdout] ... | [INFO] [stdout] 638 | | && self.playfield.get(row as u8, col as u8) == Space::Block)) [INFO] [stdout] | |_____________________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 632 - if bb_space == &Space::Block [INFO] [stdout] 633 - // Collision occurs if block is outside playfield. [INFO] [stdout] 634 - && ((row < 1 || col < 1 || col > Playfield::WIDTH as i8) [INFO] [stdout] 635 - // Or if block is inside playfield ... [INFO] [stdout] 636 - || (row >= 1 && col >= 1 [INFO] [stdout] 637 - // ... and there is already a block in that position. [INFO] [stdout] 638 - && self.playfield.get(row as u8, col as u8) == Space::Block)) [INFO] [stdout] 632 + if !(bb_space != &Space::Block || row >= 1 && col >= 1 && col <= Playfield::WIDTH as i8 && self.playfield.get(row as u8, col as u8) != Space::Block) [INFO] [stdout] | [INFO] [stdout] 632 - if bb_space == &Space::Block [INFO] [stdout] 633 - // Collision occurs if block is outside playfield. [INFO] [stdout] 634 - && ((row < 1 || col < 1 || col > Playfield::WIDTH as i8) [INFO] [stdout] 635 - // Or if block is inside playfield ... [INFO] [stdout] 636 - || (row >= 1 && col >= 1 [INFO] [stdout] 637 - // ... and there is already a block in that position. [INFO] [stdout] 638 - && self.playfield.get(row as u8, col as u8) == Space::Block)) [INFO] [stdout] 632 + if (self.playfield.get(row as u8, col as u8) == Space::Block || col > Playfield::WIDTH as i8 || col < 1 || row < 1) && bb_space == &Space::Block [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/engine/base.rs:634:24 [INFO] [stdout] | [INFO] [stdout] 634 | && ((row < 1 || col < 1 || col > Playfield::WIDTH as i8) [INFO] [stdout] | ________________________^ [INFO] [stdout] 635 | | // Or if block is inside playfield ... [INFO] [stdout] 636 | | || (row >= 1 && col >= 1 [INFO] [stdout] 637 | | // ... and there is already a block in that position. [INFO] [stdout] 638 | | && self.playfield.get(row as u8, col as u8) == Space::Block)) [INFO] [stdout] | |_____________________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 634 - && ((row < 1 || col < 1 || col > Playfield::WIDTH as i8) [INFO] [stdout] 635 - // Or if block is inside playfield ... [INFO] [stdout] 636 - || (row >= 1 && col >= 1 [INFO] [stdout] 637 - // ... and there is already a block in that position. [INFO] [stdout] 638 - && self.playfield.get(row as u8, col as u8) == Space::Block)) [INFO] [stdout] 634 + && !(row >= 1 && col >= 1 && col <= Playfield::WIDTH as i8 && self.playfield.get(row as u8, col as u8) != Space::Block) [INFO] [stdout] | [INFO] [stdout] 634 - && ((row < 1 || col < 1 || col > Playfield::WIDTH as i8) [INFO] [stdout] 635 - // Or if block is inside playfield ... [INFO] [stdout] 636 - || (row >= 1 && col >= 1 [INFO] [stdout] 637 - // ... and there is already a block in that position. [INFO] [stdout] 638 - && self.playfield.get(row as u8, col as u8) == Space::Block)) [INFO] [stdout] 634 + && row < 1 || col < 1 || col > Playfield::WIDTH as i8 || self.playfield.get(row as u8, col as u8) == Space::Block [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u8` -> `u8`) [INFO] [stdout] --> src/engine/base.rs:684:40 [INFO] [stdout] | [INFO] [stdout] 684 | self.playfield.set(row as u8, col as u8); [INFO] [stdout] | ^^^^^^^^^ help: try: `row` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u8` -> `u8`) [INFO] [stdout] --> src/engine/base.rs:684:51 [INFO] [stdout] | [INFO] [stdout] 684 | self.playfield.set(row as u8, col as u8); [INFO] [stdout] | ^^^^^^^^^ help: try: `col` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting the result of `i8::abs()` to u8 [INFO] [stdout] --> src/engine/base.rs:759:9 [INFO] [stdout] | [INFO] [stdout] 759 | col_offset.abs() as u8 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `col_offset.unsigned_abs()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_abs_to_unsigned [INFO] [stdout] = note: `#[warn(clippy::cast_abs_to_unsigned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `!RangeInclusive::contains` implementation [INFO] [stdout] --> src/engine/core.rs:48:12 [INFO] [stdout] | [INFO] [stdout] 48 | if row < 1 || row > Playfield::TOTAL_HEIGHT { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `!(1..=Playfield::TOTAL_HEIGHT).contains(&row)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `!RangeInclusive::contains` implementation [INFO] [stdout] --> src/engine/core.rs:51:12 [INFO] [stdout] | [INFO] [stdout] 51 | if col < 1 || col > Playfield::WIDTH { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `!(1..=Playfield::WIDTH).contains(&col)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `t_spin` [INFO] [stdout] --> src/engine/base.rs:188:23 [INFO] [stdout] | [INFO] [stdout] 188 | fn on_lock(&self, t_spin: TSpin) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_t_spin` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `n_rows` [INFO] [stdout] --> src/engine/base.rs:189:28 [INFO] [stdout] | [INFO] [stdout] 189 | fn on_soft_drop(&self, n_rows: u8) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_rows` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `n_rows` [INFO] [stdout] --> src/engine/base.rs:190:28 [INFO] [stdout] | [INFO] [stdout] 190 | fn on_hard_drop(&self, n_rows: u8) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_rows` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `n_rows` [INFO] [stdout] --> src/engine/base.rs:191:29 [INFO] [stdout] | [INFO] [stdout] 191 | fn on_line_clear(&self, n_rows: u8) {} [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_n_rows` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `O`, `Z`, `J`, and `L` are never constructed [INFO] [stdout] --> src/engine/base.rs:1015:9 [INFO] [stdout] | [INFO] [stdout] 1013 | enum SingleTetrominoGenerator { [INFO] [stdout] | ------------------------ variants in this enum [INFO] [stdout] 1014 | I, [INFO] [stdout] 1015 | O, [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 1018 | Z, [INFO] [stdout] | ^ [INFO] [stdout] 1019 | J, [INFO] [stdout] | ^ [INFO] [stdout] 1020 | L, [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `get_score` is never used [INFO] [stdout] --> src/engine/single.rs:100:8 [INFO] [stdout] | [INFO] [stdout] 86 | impl SinglePlayerEngine { [INFO] [stdout] | ----------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 100 | fn get_score(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/engine/base.rs:313:61 [INFO] [stdout] | [INFO] [stdout] 313 | if self.current_tick_inputs.borrow_mut().remove(&action) { [INFO] [stdout] | ^^^^^^^ help: change this to: `action` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/engine/base.rs:314:51 [INFO] [stdout] | [INFO] [stdout] 314 | match self.current_inputs.get_mut(&action) { [INFO] [stdout] | ^^^^^^^ help: change this to: `action` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/engine/base.rs:322:51 [INFO] [stdout] | [INFO] [stdout] 322 | match self.current_inputs.get_mut(&action) { [INFO] [stdout] | ^^^^^^^ help: change this to: `action` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/engine/base.rs:362:32 [INFO] [stdout] | [INFO] [stdout] 362 | ... && (*duration - AUTO_REPEAT_DELAY) % AUTO_REPEAT_RATE == 0 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `(*duration - AUTO_REPEAT_DELAY).is_multiple_of(AUTO_REPEAT_RATE)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/engine/base.rs:386:54 [INFO] [stdout] | [INFO] [stdout] 386 | let applied_actions = self.apply_actions(&actions); [INFO] [stdout] | ^^^^^^^^ help: change this to: `actions` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/engine/base.rs:395:50 [INFO] [stdout] | [INFO] [stdout] 395 | let dropped = self.apply_gravity(&actions); [INFO] [stdout] | ^^^^^^^^ help: change this to: `actions` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/engine/base.rs:418:58 [INFO] [stdout] | [INFO] [stdout] 418 | let applied_actions = self.apply_actions(&actions); [INFO] [stdout] | ^^^^^^^^ help: change this to: `actions` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/engine/base.rs:464:28 [INFO] [stdout] | [INFO] [stdout] 464 | if self.apply_hold(&actions) { [INFO] [stdout] | ^^^^^^^^ help: change this to: `actions` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/engine/base.rs:468:65 [INFO] [stdout] | [INFO] [stdout] 468 | if let Option::Some(action) = self.apply_piece_move(&actions) { [INFO] [stdout] | ^^^^^^^^ help: change this to: `actions` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/engine/base.rs:471:69 [INFO] [stdout] | [INFO] [stdout] 471 | if let Option::Some(action) = self.apply_piece_rotation(&actions) { [INFO] [stdout] | ^^^^^^^^ help: change this to: `actions` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/engine/base.rs:474:64 [INFO] [stdout] | [INFO] [stdout] 474 | if let Option::Some(action) = self.apply_hard_drop(&actions) { [INFO] [stdout] | ^^^^^^^^ help: change this to: `actions` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/engine/base.rs:632:20 [INFO] [stdout] | [INFO] [stdout] 632 | if bb_space == &Space::Block [INFO] [stdout] | ____________________^ [INFO] [stdout] 633 | | // Collision occurs if block is outside playfield. [INFO] [stdout] 634 | | && ((row < 1 || col < 1 || col > Playfield::WIDTH as i8) [INFO] [stdout] ... | [INFO] [stdout] 638 | | && self.playfield.get(row as u8, col as u8) == Space::Block)) [INFO] [stdout] | |_____________________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 632 - if bb_space == &Space::Block [INFO] [stdout] 633 - // Collision occurs if block is outside playfield. [INFO] [stdout] 634 - && ((row < 1 || col < 1 || col > Playfield::WIDTH as i8) [INFO] [stdout] 635 - // Or if block is inside playfield ... [INFO] [stdout] 636 - || (row >= 1 && col >= 1 [INFO] [stdout] 637 - // ... and there is already a block in that position. [INFO] [stdout] 638 - && self.playfield.get(row as u8, col as u8) == Space::Block)) [INFO] [stdout] 632 + if !(bb_space != &Space::Block || row >= 1 && col >= 1 && col <= Playfield::WIDTH as i8 && self.playfield.get(row as u8, col as u8) != Space::Block) [INFO] [stdout] | [INFO] [stdout] 632 - if bb_space == &Space::Block [INFO] [stdout] 633 - // Collision occurs if block is outside playfield. [INFO] [stdout] 634 - && ((row < 1 || col < 1 || col > Playfield::WIDTH as i8) [INFO] [stdout] 635 - // Or if block is inside playfield ... [INFO] [stdout] 636 - || (row >= 1 && col >= 1 [INFO] [stdout] 637 - // ... and there is already a block in that position. [INFO] [stdout] 638 - && self.playfield.get(row as u8, col as u8) == Space::Block)) [INFO] [stdout] 632 + if (self.playfield.get(row as u8, col as u8) == Space::Block || col > Playfield::WIDTH as i8 || col < 1 || row < 1) && bb_space == &Space::Block [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/engine/base.rs:634:24 [INFO] [stdout] | [INFO] [stdout] 634 | && ((row < 1 || col < 1 || col > Playfield::WIDTH as i8) [INFO] [stdout] | ________________________^ [INFO] [stdout] 635 | | // Or if block is inside playfield ... [INFO] [stdout] 636 | | || (row >= 1 && col >= 1 [INFO] [stdout] 637 | | // ... and there is already a block in that position. [INFO] [stdout] 638 | | && self.playfield.get(row as u8, col as u8) == Space::Block)) [INFO] [stdout] | |_____________________________________________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 634 - && ((row < 1 || col < 1 || col > Playfield::WIDTH as i8) [INFO] [stdout] 635 - // Or if block is inside playfield ... [INFO] [stdout] 636 - || (row >= 1 && col >= 1 [INFO] [stdout] 637 - // ... and there is already a block in that position. [INFO] [stdout] 638 - && self.playfield.get(row as u8, col as u8) == Space::Block)) [INFO] [stdout] 634 + && !(row >= 1 && col >= 1 && col <= Playfield::WIDTH as i8 && self.playfield.get(row as u8, col as u8) != Space::Block) [INFO] [stdout] | [INFO] [stdout] 634 - && ((row < 1 || col < 1 || col > Playfield::WIDTH as i8) [INFO] [stdout] 635 - // Or if block is inside playfield ... [INFO] [stdout] 636 - || (row >= 1 && col >= 1 [INFO] [stdout] 637 - // ... and there is already a block in that position. [INFO] [stdout] 638 - && self.playfield.get(row as u8, col as u8) == Space::Block)) [INFO] [stdout] 634 + && row < 1 || col < 1 || col > Playfield::WIDTH as i8 || self.playfield.get(row as u8, col as u8) == Space::Block [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u8` -> `u8`) [INFO] [stdout] --> src/engine/base.rs:684:40 [INFO] [stdout] | [INFO] [stdout] 684 | self.playfield.set(row as u8, col as u8); [INFO] [stdout] | ^^^^^^^^^ help: try: `row` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u8` -> `u8`) [INFO] [stdout] --> src/engine/base.rs:684:51 [INFO] [stdout] | [INFO] [stdout] 684 | self.playfield.set(row as u8, col as u8); [INFO] [stdout] | ^^^^^^^^^ help: try: `col` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting the result of `i8::abs()` to u8 [INFO] [stdout] --> src/engine/base.rs:759:9 [INFO] [stdout] | [INFO] [stdout] 759 | col_offset.abs() as u8 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `col_offset.unsigned_abs()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_abs_to_unsigned [INFO] [stdout] = note: `#[warn(clippy::cast_abs_to_unsigned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Tetromino` which implements the `Copy` trait [INFO] [stdout] --> src/engine/base.rs:1416:29 [INFO] [stdout] | [INFO] [stdout] 1416 | let current_piece = engine.current_piece.piece.get_shape().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*engine.current_piece.piece.get_shape()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `!RangeInclusive::contains` implementation [INFO] [stdout] --> src/engine/core.rs:48:12 [INFO] [stdout] | [INFO] [stdout] 48 | if row < 1 || row > Playfield::TOTAL_HEIGHT { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `!(1..=Playfield::TOTAL_HEIGHT).contains(&row)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `!RangeInclusive::contains` implementation [INFO] [stdout] --> src/engine/core.rs:51:12 [INFO] [stdout] | [INFO] [stdout] 51 | if col < 1 || col > Playfield::WIDTH { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `!(1..=Playfield::WIDTH).contains(&col)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 18.61s [INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: glutin v0.14.0, syn v0.10.8, syn v0.14.9, winit v0.12.0 [INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 4` [INFO] running `Command { std: "docker" "inspect" "c5ffb10e037639a591d09940776afe958686df5b5b7582b1f4d1ee2ffbd0c26d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c5ffb10e037639a591d09940776afe958686df5b5b7582b1f4d1ee2ffbd0c26d", kill_on_drop: false }` [INFO] [stdout] c5ffb10e037639a591d09940776afe958686df5b5b7582b1f4d1ee2ffbd0c26d