[INFO] cloning repository https://github.com/eckshton/snake [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/eckshton/snake" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Feckshton%2Fsnake", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Feckshton%2Fsnake'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 0664a0a2f8fe4c2ca5753692614a7798f46aa409 [INFO] linting eckshton/snake/0664a0a2f8fe4c2ca5753692614a7798f46aa409 against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Feckshton%2Fsnake" "/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/eckshton/snake [INFO] finished tweaking git repo https://github.com/eckshton/snake [INFO] tweaked toml for git repo https://github.com/eckshton/snake written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/eckshton/snake 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/eckshton/snake 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] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded crossfont v0.5.1 [INFO] [stderr] Downloaded exr v1.7.0 [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] 3ba34c0f1a318b8bcdadeb3fd9ffbbe9efd754c08ef63b427cacb4924d6d0f81 [INFO] running `Command { std: "docker" "start" "-a" "3ba34c0f1a318b8bcdadeb3fd9ffbbe9efd754c08ef63b427cacb4924d6d0f81", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "3ba34c0f1a318b8bcdadeb3fd9ffbbe9efd754c08ef63b427cacb4924d6d0f81", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3ba34c0f1a318b8bcdadeb3fd9ffbbe9efd754c08ef63b427cacb4924d6d0f81", kill_on_drop: false }` [INFO] [stdout] 3ba34c0f1a318b8bcdadeb3fd9ffbbe9efd754c08ef63b427cacb4924d6d0f81 [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] aa4b969a3e25b241d31a0613f7cf44a378b7e7bdb6eb2d035f3f6b17ac1aaa13 [INFO] running `Command { std: "docker" "start" "-a" "aa4b969a3e25b241d31a0613f7cf44a378b7e7bdb6eb2d035f3f6b17ac1aaa13", kill_on_drop: false }` [INFO] [stderr] Compiling syn v2.0.29 [INFO] [stderr] Compiling wayland-sys v0.29.5 [INFO] [stderr] Checking once_cell v1.18.0 [INFO] [stderr] Checking dlib v0.5.2 [INFO] [stderr] Compiling wayland-client v0.29.5 [INFO] [stderr] Checking memchr v2.6.2 [INFO] [stderr] Compiling cc v1.0.83 [INFO] [stderr] Checking bytemuck v1.13.1 [INFO] [stderr] Compiling gl_generator v0.14.0 [INFO] [stderr] Checking nix v0.24.3 [INFO] [stderr] Compiling servo-fontconfig-sys v5.1.0 [INFO] [stderr] Compiling slotmap v1.0.6 [INFO] [stderr] Compiling wayland-protocols v0.29.5 [INFO] [stderr] Checking nix v0.25.1 [INFO] [stderr] Compiling crossfont v0.5.1 [INFO] [stderr] Compiling smithay-client-toolkit v0.16.0 [INFO] [stderr] Checking num_cpus v1.16.0 [INFO] [stderr] Checking foreign-types-shared v0.3.1 [INFO] [stderr] Checking tiny-skia-path v0.7.0 [INFO] [stderr] Checking safe_arch v0.5.2 [INFO] [stderr] Checking rayon-core v1.11.0 [INFO] [stderr] Checking memmap2 v0.5.10 [INFO] [stderr] Compiling futures-core v0.3.28 [INFO] [stderr] Checking arrayvec v0.5.2 [INFO] [stderr] Checking x11-dl v2.21.0 [INFO] [stderr] Checking parking_lot_core v0.9.8 [INFO] [stderr] Checking getrandom v0.2.10 [INFO] [stderr] Checking nom v7.1.3 [INFO] [stderr] Checking mio v0.8.8 [INFO] [stderr] Checking shared_library v0.1.9 [INFO] [stderr] Compiling cmake v0.1.50 [INFO] [stderr] Compiling glutin_egl_sys v0.1.6 [INFO] [stderr] Compiling glutin_glx_sys v0.1.8 [INFO] [stderr] Checking rayon v1.7.0 [INFO] [stderr] Checking parking_lot v0.12.1 [INFO] [stderr] Checking nanorand v0.7.0 [INFO] [stderr] Checking futures-sink v0.3.28 [INFO] [stderr] Checking gimli v0.28.0 [INFO] [stderr] Checking tiny-skia v0.7.0 [INFO] [stderr] Checking osmesa-sys v0.1.2 [INFO] [stderr] Compiling glium v0.32.1 [INFO] [stderr] Checking object v0.32.0 [INFO] [stderr] Checking rustc-demangle v0.1.23 [INFO] [stderr] Checking wayland-commons v0.29.5 [INFO] [stderr] Checking qoi v0.4.1 [INFO] [stderr] Compiling freetype-sys v0.13.1 [INFO] [stderr] Compiling expat-sys v2.1.6 [INFO] [stderr] Compiling backtrace v0.3.69 [INFO] [stderr] Checking freetype-rs v0.26.0 [INFO] [stderr] Checking servo-fontconfig v0.5.1 [INFO] [stderr] Checking xcursor v0.3.4 [INFO] [stderr] Checking wayland-cursor v0.29.5 [INFO] [stderr] Checking wayland-egl v0.29.5 [INFO] [stderr] Checking jpeg-decoder v0.3.0 [INFO] [stderr] Compiling thiserror-impl v1.0.47 [INFO] [stderr] Compiling foreign-types-macros v0.2.3 [INFO] [stderr] Compiling pin-project-internal v1.1.3 [INFO] [stderr] Checking addr2line v0.21.0 [INFO] [stderr] Checking foreign-types v0.5.0 [INFO] [stderr] Checking tiff v0.9.0 [INFO] [stderr] Checking thiserror v1.0.47 [INFO] [stderr] Checking calloop v0.10.6 [INFO] [stderr] Checking pin-project v1.1.3 [INFO] [stderr] Checking flume v0.10.14 [INFO] [stderr] Checking exr v1.7.0 [INFO] [stderr] Checking image v0.24.7 [INFO] [stderr] Checking sctk-adwaita v0.4.3 [INFO] [stderr] Checking winit v0.27.5 [INFO] [stderr] Checking glutin v0.29.1 [INFO] [stderr] Checking snakebot v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/GLium.rs:58:23 [INFO] [stdout] | [INFO] [stdout] 58 | pub fn new_colbuf(self: &Self, v: &[ColVert], i: &[u16]) -> ColBuffer { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] = note: `#[warn(clippy::needless_arbitrary_self_type)]` on by default [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 58 - pub fn new_colbuf(self: &Self, v: &[ColVert], i: &[u16]) -> ColBuffer { [INFO] [stdout] 58 + pub fn new_colbuf(&self, v: &[ColVert], i: &[u16]) -> ColBuffer { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/GLium.rs:64:27 [INFO] [stdout] | [INFO] [stdout] 64 | pub fn new_colbuf_dyn(self: &Self, v: &[ColVert], i: &[u16]) -> ColBuffer { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 64 - pub fn new_colbuf_dyn(self: &Self, v: &[ColVert], i: &[u16]) -> ColBuffer { [INFO] [stdout] 64 + pub fn new_colbuf_dyn(&self, v: &[ColVert], i: &[u16]) -> ColBuffer { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/GLium.rs:70:17 [INFO] [stdout] | [INFO] [stdout] 70 | pub fn draw(self: &Self, colbufs: &[&ColBuffer]) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 70 - pub fn draw(self: &Self, colbufs: &[&ColBuffer]) { [INFO] [stdout] 70 + pub fn draw(&self, colbufs: &[&ColBuffer]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/game.rs:116:18 [INFO] [stdout] | [INFO] [stdout] 116 | fn eat_apple(self: &mut Self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 116 - fn eat_apple(self: &mut Self) { [INFO] [stdout] 116 + fn eat_apple(&mut self) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/game.rs:140:17 [INFO] [stdout] | [INFO] [stdout] 140 | pub fn step(self: &mut Self, i: Option) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 140 - pub fn step(self: &mut Self, i: Option) { [INFO] [stdout] 140 + pub fn step(&mut self, i: Option) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/GLium.rs:58:23 [INFO] [stdout] | [INFO] [stdout] 58 | pub fn new_colbuf(self: &Self, v: &[ColVert], i: &[u16]) -> ColBuffer { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] = note: `#[warn(clippy::needless_arbitrary_self_type)]` on by default [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 58 - pub fn new_colbuf(self: &Self, v: &[ColVert], i: &[u16]) -> ColBuffer { [INFO] [stdout] 58 + pub fn new_colbuf(&self, v: &[ColVert], i: &[u16]) -> ColBuffer { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/GLium.rs:64:27 [INFO] [stdout] | [INFO] [stdout] 64 | pub fn new_colbuf_dyn(self: &Self, v: &[ColVert], i: &[u16]) -> ColBuffer { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 64 - pub fn new_colbuf_dyn(self: &Self, v: &[ColVert], i: &[u16]) -> ColBuffer { [INFO] [stdout] 64 + pub fn new_colbuf_dyn(&self, v: &[ColVert], i: &[u16]) -> ColBuffer { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/GLium.rs:70:17 [INFO] [stdout] | [INFO] [stdout] 70 | pub fn draw(self: &Self, colbufs: &[&ColBuffer]) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 70 - pub fn draw(self: &Self, colbufs: &[&ColBuffer]) { [INFO] [stdout] 70 + pub fn draw(&self, colbufs: &[&ColBuffer]) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/game.rs:116:18 [INFO] [stdout] | [INFO] [stdout] 116 | fn eat_apple(self: &mut Self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 116 - fn eat_apple(self: &mut Self) { [INFO] [stdout] 116 + fn eat_apple(&mut self) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/game.rs:140:17 [INFO] [stdout] | [INFO] [stdout] 140 | pub fn step(self: &mut Self, i: Option) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 140 - pub fn step(self: &mut Self, i: Option) { [INFO] [stdout] 140 + pub fn step(&mut self, i: Option) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Coords` is never constructed [INFO] [stdout] --> src/main.rs:14:8 [INFO] [stdout] | [INFO] [stdout] 14 | struct Coords { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `scrn` is never read [INFO] [stdout] --> src/main.rs:29:5 [INFO] [stdout] | [INFO] [stdout] 27 | struct State { [INFO] [stdout] | ----- field in this struct [INFO] [stdout] 28 | start_pos: StartPos, [INFO] [stdout] 29 | scrn: Scrn, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TexVert` is never constructed [INFO] [stdout] --> src/GLium.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct TexVert { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `tp` is never read [INFO] [stdout] --> src/GLium.rs:40:5 [INFO] [stdout] | [INFO] [stdout] 38 | pub struct GL { [INFO] [stdout] | -- field in this struct [INFO] [stdout] 39 | pub d: Display, [INFO] [stdout] 40 | tp: Program, [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `scrn` is never read [INFO] [stdout] --> src/game.rs:50:9 [INFO] [stdout] | [INFO] [stdout] 46 | pub struct Game { [INFO] [stdout] | ---- field in this struct [INFO] [stdout] ... [INFO] [stdout] 50 | pub scrn: Scrn, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Coords` is never constructed [INFO] [stdout] --> src/main.rs:14:8 [INFO] [stdout] | [INFO] [stdout] 14 | struct Coords { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `scrn` is never read [INFO] [stdout] --> src/main.rs:29:5 [INFO] [stdout] | [INFO] [stdout] 27 | struct State { [INFO] [stdout] | ----- field in this struct [INFO] [stdout] 28 | start_pos: StartPos, [INFO] [stdout] 29 | scrn: Scrn, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TexVert` is never constructed [INFO] [stdout] --> src/GLium.rs:16:12 [INFO] [stdout] | [INFO] [stdout] 16 | pub struct TexVert { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `tp` is never read [INFO] [stdout] --> src/GLium.rs:40:5 [INFO] [stdout] | [INFO] [stdout] 38 | pub struct GL { [INFO] [stdout] | -- field in this struct [INFO] [stdout] 39 | pub d: Display, [INFO] [stdout] 40 | tp: Program, [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `scrn` is never read [INFO] [stdout] --> src/game.rs:50:9 [INFO] [stdout] | [INFO] [stdout] 46 | pub struct Game { [INFO] [stdout] | ---- field in this struct [INFO] [stdout] ... [INFO] [stdout] 50 | pub scrn: Scrn, [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: approximate value of `f{32, 64}::consts::PI` found [INFO] [stdout] --> src/game.rs:60:15 [INFO] [stdout] | [INFO] [stdout] 60 | .powf(3.141592653589793); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using the constant directly [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stdout] = note: `#[deny(clippy::approx_constant)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/game.rs:122:13 [INFO] [stdout] | [INFO] [stdout] 122 | / if ax != self.a.x && ay != self.a.y { [INFO] [stdout] 123 | | if self.b.b[ax as usize][ay as usize] == BMember::Empty { [INFO] [stdout] 124 | | self.a.x = ax; [INFO] [stdout] 125 | | self.a.y = ay; [INFO] [stdout] ... | [INFO] [stdout] 128 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 122 ~ if ax != self.a.x && ay != self.a.y [INFO] [stdout] 123 ~ && self.b.b[ax as usize][ay as usize] == BMember::Empty { [INFO] [stdout] 124 | self.a.x = ax; [INFO] [stdout] 125 | self.a.y = ay; [INFO] [stdout] 126 | return [INFO] [stdout] 127 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/game.rs:143:9 [INFO] [stdout] | [INFO] [stdout] 143 | / match i { [INFO] [stdout] 144 | | Some(dir) => { [INFO] [stdout] 145 | | self.s.d = dir; [INFO] [stdout] 146 | | self.s.tailinst.push(Instruction { dir, x: self.s.x, y: self.s.y }); [INFO] [stdout] 147 | | }, [INFO] [stdout] 148 | | None => () [INFO] [stdout] 149 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 143 ~ if let Some(dir) = i { [INFO] [stdout] 144 + self.s.d = dir; [INFO] [stdout] 145 + self.s.tailinst.push(Instruction { dir, x: self.s.x, y: self.s.y }); [INFO] [stdout] 146 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for an equality check. Consider using `if` [INFO] [stdout] --> src/game.rs:159:9 [INFO] [stdout] | [INFO] [stdout] 159 | / match self.b.b[self.s.x as usize][self.s.y as usize] { [INFO] [stdout] 160 | | BMember::Snake => self.lost = true, [INFO] [stdout] 161 | | _ => () [INFO] [stdout] 162 | | } [INFO] [stdout] | |_________^ help: try: `if self.b.b[self.s.x as usize][self.s.y as usize] == BMember::Snake { self.lost = true }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/game.rs:178:9 [INFO] [stdout] | [INFO] [stdout] 178 | / if self.s.tailinst.len() != 0 { [INFO] [stdout] 179 | | if self.s.tailinst[0].x == self.s.tx && self.s.tailinst[0].y == self.s.ty { [INFO] [stdout] 180 | | self.s.td = self.s.tailinst[0].dir; [INFO] [stdout] 181 | | self.s.tailinst.remove(0); [INFO] [stdout] 182 | | } [INFO] [stdout] 183 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 178 ~ if self.s.tailinst.len() != 0 [INFO] [stdout] 179 ~ && self.s.tailinst[0].x == self.s.tx && self.s.tailinst[0].y == self.s.ty { [INFO] [stdout] 180 | self.s.td = self.s.tailinst[0].dir; [INFO] [stdout] 181 | self.s.tailinst.remove(0); [INFO] [stdout] 182 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/game.rs:178:12 [INFO] [stdout] | [INFO] [stdout] 178 | if self.s.tailinst.len() != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!self.s.tailinst.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:40:5 [INFO] [stdout] | [INFO] [stdout] 40 | / return ( [INFO] [stdout] 41 | | -1.0 + x as f32 * (2.0 / b.w as f32), [INFO] [stdout] 42 | | -1.0 + y as f32 * (2.0 / b.h as f32) [INFO] [stdout] 43 | | ) [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 40 ~ ( [INFO] [stdout] 41 + -1.0 + x as f32 * (2.0 / b.w as f32), [INFO] [stdout] 42 + -1.0 + y as f32 * (2.0 / b.h as f32) [INFO] [stdout] 43 + ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: approximate value of `f{32, 64}::consts::PI` found [INFO] [stdout] --> src/game.rs:60:15 [INFO] [stdout] | [INFO] [stdout] 60 | .powf(3.141592653589793); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using the constant directly [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stdout] = note: `#[deny(clippy::approx_constant)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/game.rs:122:13 [INFO] [stdout] | [INFO] [stdout] 122 | / if ax != self.a.x && ay != self.a.y { [INFO] [stdout] 123 | | if self.b.b[ax as usize][ay as usize] == BMember::Empty { [INFO] [stdout] 124 | | self.a.x = ax; [INFO] [stdout] 125 | | self.a.y = ay; [INFO] [stdout] ... | [INFO] [stdout] 128 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 122 ~ if ax != self.a.x && ay != self.a.y [INFO] [stdout] 123 ~ && self.b.b[ax as usize][ay as usize] == BMember::Empty { [INFO] [stdout] 124 | self.a.x = ax; [INFO] [stdout] 125 | self.a.y = ay; [INFO] [stdout] 126 | return [INFO] [stdout] 127 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/main.rs:127:13 [INFO] [stdout] | [INFO] [stdout] 127 | / match bm { [INFO] [stdout] 128 | | Some((v, i)) => { [INFO] [stdout] 129 | | tv.extend(v); [INFO] [stdout] 130 | | ti.extend(i); [INFO] [stdout] 131 | | }, [INFO] [stdout] 132 | | _ => () [INFO] [stdout] 133 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 127 ~ if let Some((v, i)) = bm { [INFO] [stdout] 128 + tv.extend(v); [INFO] [stdout] 129 + ti.extend(i); [INFO] [stdout] 130 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/main.rs:140:13 [INFO] [stdout] | [INFO] [stdout] 140 | / match bm { [INFO] [stdout] 141 | | Some(v) => { [INFO] [stdout] 142 | | tv.extend(v); [INFO] [stdout] 143 | | }, [INFO] [stdout] 144 | | _ => () [INFO] [stdout] 145 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 140 ~ if let Some(v) = bm { [INFO] [stdout] 141 + tv.extend(v); [INFO] [stdout] 142 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/game.rs:143:9 [INFO] [stdout] | [INFO] [stdout] 143 | / match i { [INFO] [stdout] 144 | | Some(dir) => { [INFO] [stdout] 145 | | self.s.d = dir; [INFO] [stdout] 146 | | self.s.tailinst.push(Instruction { dir, x: self.s.x, y: self.s.y }); [INFO] [stdout] 147 | | }, [INFO] [stdout] 148 | | None => () [INFO] [stdout] 149 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 143 ~ if let Some(dir) = i { [INFO] [stdout] 144 + self.s.d = dir; [INFO] [stdout] 145 + self.s.tailinst.push(Instruction { dir, x: self.s.x, y: self.s.y }); [INFO] [stdout] 146 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for an equality check. Consider using `if` [INFO] [stdout] --> src/game.rs:159:9 [INFO] [stdout] | [INFO] [stdout] 159 | / match self.b.b[self.s.x as usize][self.s.y as usize] { [INFO] [stdout] 160 | | BMember::Snake => self.lost = true, [INFO] [stdout] 161 | | _ => () [INFO] [stdout] 162 | | } [INFO] [stdout] | |_________^ help: try: `if self.b.b[self.s.x as usize][self.s.y as usize] == BMember::Snake { self.lost = true }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/game.rs:178:9 [INFO] [stdout] | [INFO] [stdout] 178 | / if self.s.tailinst.len() != 0 { [INFO] [stdout] 179 | | if self.s.tailinst[0].x == self.s.tx && self.s.tailinst[0].y == self.s.ty { [INFO] [stdout] 180 | | self.s.td = self.s.tailinst[0].dir; [INFO] [stdout] 181 | | self.s.tailinst.remove(0); [INFO] [stdout] 182 | | } [INFO] [stdout] 183 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 178 ~ if self.s.tailinst.len() != 0 [INFO] [stdout] 179 ~ && self.s.tailinst[0].x == self.s.tx && self.s.tailinst[0].y == self.s.ty { [INFO] [stdout] 180 | self.s.td = self.s.tailinst[0].dir; [INFO] [stdout] 181 | self.s.tailinst.remove(0); [INFO] [stdout] 182 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `snakebot` (bin "snakebot" test) due to 1 previous error; 21 warnings emitted [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/game.rs:178:12 [INFO] [stdout] | [INFO] [stdout] 178 | if self.s.tailinst.len() != 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!self.s.tailinst.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:178:18 [INFO] [stdout] | [INFO] [stdout] 178 | recalc_board(&gl, &s.game, &mut s.dynamic_colbuf, true); [INFO] [stdout] | ^^^ help: change this to: `gl` [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: unneeded `return` statement [INFO] [stdout] --> src/main.rs:40:5 [INFO] [stdout] | [INFO] [stdout] 40 | / return ( [INFO] [stdout] 41 | | -1.0 + x as f32 * (2.0 / b.w as f32), [INFO] [stdout] 42 | | -1.0 + y as f32 * (2.0 / b.h as f32) [INFO] [stdout] 43 | | ) [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 40 ~ ( [INFO] [stdout] 41 + -1.0 + x as f32 * (2.0 / b.w as f32), [INFO] [stdout] 42 + -1.0 + y as f32 * (2.0 / b.h as f32) [INFO] [stdout] 43 + ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for an equality check. Consider using `if` [INFO] [stdout] --> src/main.rs:224:18 [INFO] [stdout] | [INFO] [stdout] 224 | } => match k.state { [INFO] [stdout] | __________________^ [INFO] [stdout] 225 | | ElementState::Pressed => input(&mut state, k.virtual_keycode), [INFO] [stdout] 226 | | _ => () [INFO] [stdout] 227 | | }, [INFO] [stdout] | |_____________^ help: try: `if k.state == ElementState::Pressed { input(&mut state, k.virtual_keycode) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module `GLium` should have a snake case name [INFO] [stdout] --> src/main.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | mod GLium; [INFO] [stdout] | ^^^^^ help: convert the identifier to snake case: `glium` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/main.rs:127:13 [INFO] [stdout] | [INFO] [stdout] 127 | / match bm { [INFO] [stdout] 128 | | Some((v, i)) => { [INFO] [stdout] 129 | | tv.extend(v); [INFO] [stdout] 130 | | ti.extend(i); [INFO] [stdout] 131 | | }, [INFO] [stdout] 132 | | _ => () [INFO] [stdout] 133 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 127 ~ if let Some((v, i)) = bm { [INFO] [stdout] 128 + tv.extend(v); [INFO] [stdout] 129 + ti.extend(i); [INFO] [stdout] 130 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/main.rs:140:13 [INFO] [stdout] | [INFO] [stdout] 140 | / match bm { [INFO] [stdout] 141 | | Some(v) => { [INFO] [stdout] 142 | | tv.extend(v); [INFO] [stdout] 143 | | }, [INFO] [stdout] 144 | | _ => () [INFO] [stdout] 145 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 140 ~ if let Some(v) = bm { [INFO] [stdout] 141 + tv.extend(v); [INFO] [stdout] 142 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:178:18 [INFO] [stdout] | [INFO] [stdout] 178 | recalc_board(&gl, &s.game, &mut s.dynamic_colbuf, true); [INFO] [stdout] | ^^^ help: change this to: `gl` [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: you seem to be trying to use `match` for an equality check. Consider using `if` [INFO] [stdout] --> src/main.rs:224:18 [INFO] [stdout] | [INFO] [stdout] 224 | } => match k.state { [INFO] [stdout] | __________________^ [INFO] [stdout] 225 | | ElementState::Pressed => input(&mut state, k.virtual_keycode), [INFO] [stdout] 226 | | _ => () [INFO] [stdout] 227 | | }, [INFO] [stdout] | |_____________^ help: try: `if k.state == ElementState::Pressed { input(&mut state, k.virtual_keycode) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: module `GLium` should have a snake case name [INFO] [stdout] --> src/main.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | mod GLium; [INFO] [stdout] | ^^^^^ help: convert the identifier to snake case: `glium` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] error: could not compile `snakebot` (bin "snakebot") due to 1 previous error; 21 warnings emitted [INFO] running `Command { std: "docker" "inspect" "aa4b969a3e25b241d31a0613f7cf44a378b7e7bdb6eb2d035f3f6b17ac1aaa13", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "aa4b969a3e25b241d31a0613f7cf44a378b7e7bdb6eb2d035f3f6b17ac1aaa13", kill_on_drop: false }` [INFO] [stdout] aa4b969a3e25b241d31a0613f7cf44a378b7e7bdb6eb2d035f3f6b17ac1aaa13