[INFO] cloning repository https://github.com/gskorokhod/game-of-life-cli [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/gskorokhod/game-of-life-cli" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgskorokhod%2Fgame-of-life-cli", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgskorokhod%2Fgame-of-life-cli'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] e37991afb69b59cd3c8ff5263efff04f195c389f [INFO] linting gskorokhod/game-of-life-cli against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fgskorokhod%2Fgame-of-life-cli" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/gskorokhod/game-of-life-cli [INFO] finished tweaking git repo https://github.com/gskorokhod/game-of-life-cli [INFO] tweaked toml for git repo https://github.com/gskorokhod/game-of-life-cli written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/gskorokhod/game-of-life-cli 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/gskorokhod/game-of-life-cli 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] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] 5a46707ed99883a955894bc69e5d0112103141957f38a4eb8b3d9288acf64d57 [INFO] running `Command { std: "docker" "start" "-a" "5a46707ed99883a955894bc69e5d0112103141957f38a4eb8b3d9288acf64d57", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "5a46707ed99883a955894bc69e5d0112103141957f38a4eb8b3d9288acf64d57", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "5a46707ed99883a955894bc69e5d0112103141957f38a4eb8b3d9288acf64d57", kill_on_drop: false }` [INFO] [stdout] 5a46707ed99883a955894bc69e5d0112103141957f38a4eb8b3d9288acf64d57 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] cf9922c8b7137bf9d11133cddc196a66f4ea4f2a79a7d2c33c61bd56958fac53 [INFO] running `Command { std: "docker" "start" "-a" "cf9922c8b7137bf9d11133cddc196a66f4ea4f2a79a7d2c33c61bd56958fac53", kill_on_drop: false }` [INFO] [stderr] Checking numtoa v0.1.0 [INFO] [stderr] Checking termion v1.5.6 [INFO] [stderr] Checking game-of-life v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/main.rs:61:13 [INFO] [stdout] | [INFO] [stdout] 61 | width: width, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `width` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/main.rs:62:13 [INFO] [stdout] | [INFO] [stdout] 62 | height: height, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `height` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/main.rs:93:13 [INFO] [stdout] | [INFO] [stdout] 93 | for i in 0..self.width {write!(stdout, "{}", BORDER_H);} [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/main.rs:115:13 [INFO] [stdout] | [INFO] [stdout] 115 | for i in 0..self.width {write!(stdout, "{}", BORDER_H);} [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/main.rs:29:32 [INFO] [stdout] | [INFO] [stdout] 29 | write!(stdout, "\r{}\n\r", "Game Of Life"); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] = note: `#[warn(clippy::write_literal)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 29 - write!(stdout, "\r{}\n\r", "Game Of Life"); [INFO] [stdout] 29 + write!(stdout, "\rGame Of Life\n\r"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/main.rs:30:30 [INFO] [stdout] | [INFO] [stdout] 30 | write!(stdout, "{}\n\r", "------------"); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 30 - write!(stdout, "{}\n\r", "------------"); [INFO] [stdout] 30 + write!(stdout, "------------\n\r"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/main.rs:32:34 [INFO] [stdout] | [INFO] [stdout] 32 | write!(stdout, "{}\n\r", "Controls:"); [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 32 - write!(stdout, "{}\n\r", "Controls:"); [INFO] [stdout] 32 + write!(stdout, "Controls:\n\r"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/main.rs:33:34 [INFO] [stdout] | [INFO] [stdout] 33 | write!(stdout, "{}\n\r", "* Arrow keys - move cursor"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 33 - write!(stdout, "{}\n\r", "* Arrow keys - move cursor"); [INFO] [stdout] 33 + write!(stdout, "* Arrow keys - move cursor\n\r"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/main.rs:34:34 [INFO] [stdout] | [INFO] [stdout] 34 | write!(stdout, "{}\n\r", "* Space - toggle cell"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 34 - write!(stdout, "{}\n\r", "* Space - toggle cell"); [INFO] [stdout] 34 + write!(stdout, "* Space - toggle cell\n\r"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/main.rs:35:34 [INFO] [stdout] | [INFO] [stdout] 35 | write!(stdout, "{}\n\r", "* R/S - [R]un / [S]top"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 35 - write!(stdout, "{}\n\r", "* R/S - [R]un / [S]top"); [INFO] [stdout] 35 + write!(stdout, "* R/S - [R]un / [S]top\n\r"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/main.rs:36:34 [INFO] [stdout] | [INFO] [stdout] 36 | write!(stdout, "{}\n\r", "* P/N - [P]rev/[N]ext"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 36 - write!(stdout, "{}\n\r", "* P/N - [P]rev/[N]ext"); [INFO] [stdout] 36 + write!(stdout, "* P/N - [P]rev/[N]ext\n\r"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/main.rs:37:34 [INFO] [stdout] | [INFO] [stdout] 37 | write!(stdout, "{}\n\r", " (Single Step)"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 37 - write!(stdout, "{}\n\r", " (Single Step)"); [INFO] [stdout] 37 + write!(stdout, " (Single Step)\n\r"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/main.rs:38:34 [INFO] [stdout] | [INFO] [stdout] 38 | write!(stdout, "{}\n\r", "* C - [C]lear"); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 38 - write!(stdout, "{}\n\r", "* C - [C]lear"); [INFO] [stdout] 38 + write!(stdout, "* C - [C]lear\n\r"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/main.rs:39:34 [INFO] [stdout] | [INFO] [stdout] 39 | write!(stdout, "{}\n\r", "* T - [T]oggle cursor"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 39 - write!(stdout, "{}\n\r", "* T - [T]oggle cursor"); [INFO] [stdout] 39 + write!(stdout, "* T - [T]oggle cursor\n\r"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/main.rs:40:34 [INFO] [stdout] | [INFO] [stdout] 40 | write!(stdout, "{}\n\r", "------------"); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 40 - write!(stdout, "{}\n\r", "------------"); [INFO] [stdout] 40 + write!(stdout, "------------\n\r"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/main.rs:74:9 [INFO] [stdout] | [INFO] [stdout] 74 | (row * self.width + column) as usize [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(row * self.width + column)` [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 the result of `isize::abs()` to usize [INFO] [stdout] --> src/main.rs:121:16 [INFO] [stdout] | [INFO] [stdout] 121 | if r.abs() as usize > self.selected_cell.0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `r.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: casting the result of `isize::abs()` to usize [INFO] [stdout] --> src/main.rs:122:56 [INFO] [stdout] | [INFO] [stdout] 122 | self.selected_cell.0 = self.height - ((r.abs() as usize - self.selected_cell.0) % self.height); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `r.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] [INFO] [stdout] [INFO] [stdout] warning: casting the result of `isize::abs()` to usize [INFO] [stdout] --> src/main.rs:123:45 [INFO] [stdout] | [INFO] [stdout] 123 | } else {self.selected_cell.0 -= r.abs() as usize;} [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `r.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] [INFO] [stdout] [INFO] [stdout] warning: casting the result of `isize::abs()` to usize [INFO] [stdout] --> src/main.rs:129:16 [INFO] [stdout] | [INFO] [stdout] 129 | if c.abs() as usize > self.selected_cell.1 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `c.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] [INFO] [stdout] [INFO] [stdout] warning: casting the result of `isize::abs()` to usize [INFO] [stdout] --> src/main.rs:130:55 [INFO] [stdout] | [INFO] [stdout] 130 | self.selected_cell.1 = self.width - ((c.abs() as usize - self.selected_cell.1) % self.width); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `c.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] [INFO] [stdout] [INFO] [stdout] warning: casting the result of `isize::abs()` to usize [INFO] [stdout] --> src/main.rs:131:45 [INFO] [stdout] | [INFO] [stdout] 131 | } else {self.selected_cell.1 -= c.abs() as usize;} [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `c.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] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:138:9 [INFO] [stdout] | [INFO] [stdout] 138 | / return (row >= 0) && [INFO] [stdout] 139 | | (row < self.height as isize) && [INFO] [stdout] 140 | | (col >= 0) && [INFO] [stdout] 141 | | (col < self.width as isize); [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] 138 ~ (row >= 0) && [INFO] [stdout] 139 + (row < self.height as isize) && [INFO] [stdout] 140 + (col >= 0) && [INFO] [stdout] 141 ~ (col < self.width as isize) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:146:9 [INFO] [stdout] | [INFO] [stdout] 146 | return self.cells[ind]; [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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 146 - return self.cells[ind]; [INFO] [stdout] 146 + self.cells[ind] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:161:47 [INFO] [stdout] | [INFO] [stdout] 161 | if self.is_in_bounds(r, c) && !((r, c) == (row, col)){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `((r, c) != (row, col))` [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] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:167:9 [INFO] [stdout] | [INFO] [stdout] 167 | return ans; [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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 167 - return ans; [INFO] [stdout] 167 + ans [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/main.rs:61:13 [INFO] [stdout] | [INFO] [stdout] 61 | width: width, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `width` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/main.rs:62:13 [INFO] [stdout] | [INFO] [stdout] 62 | height: height, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `height` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:196:9 [INFO] [stdout] | [INFO] [stdout] 196 | return Ok("Returned to previous step"); [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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 196 - return Ok("Returned to previous step"); [INFO] [stdout] 196 + Ok("Returned to previous step") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/main.rs:220:36 [INFO] [stdout] | [INFO] [stdout] 220 | write!(stdout, "\r{}\n\r", "Game Of Life"); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 220 - write!(stdout, "\r{}\n\r", "Game Of Life"); [INFO] [stdout] 220 + write!(stdout, "\rGame Of Life\n\r"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/main.rs:221:36 [INFO] [stdout] | [INFO] [stdout] 221 | write!(stdout, "\r{}\n\r", "Args: game-of-life "); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 221 - write!(stdout, "\r{}\n\r", "Args: game-of-life "); [INFO] [stdout] 221 + write!(stdout, "\rArgs: game-of-life \n\r"); [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:248:9 [INFO] [stdout] | [INFO] [stdout] 248 | / match b { [INFO] [stdout] 249 | | Some(x) => match x.unwrap() { [INFO] [stdout] 250 | | Key::Up => { [INFO] [stdout] 251 | | game.move_cursor(-1, 0); [INFO] [stdout] ... | [INFO] [stdout] 313 | | _ => {} [INFO] [stdout] 314 | | } [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] 248 ~ if let Some(x) = b { match x.unwrap() { [INFO] [stdout] 249 + Key::Up => { [INFO] [stdout] 250 + game.move_cursor(-1, 0); [INFO] [stdout] 251 + game.render(&mut stdout); [INFO] [stdout] 252 + stdout.flush().unwrap(); [INFO] [stdout] 253 + } [INFO] [stdout] 254 + Key::Down => { [INFO] [stdout] 255 + game.move_cursor(1, 0); [INFO] [stdout] 256 + game.render(&mut stdout); [INFO] [stdout] 257 + stdout.flush().unwrap(); [INFO] [stdout] 258 + } [INFO] [stdout] 259 + Key::Right => { [INFO] [stdout] 260 + game.move_cursor(0, 1); [INFO] [stdout] 261 + game.render(&mut stdout); [INFO] [stdout] 262 + stdout.flush().unwrap(); [INFO] [stdout] 263 + } [INFO] [stdout] 264 + Key::Left => { [INFO] [stdout] 265 + game.move_cursor(0, -1); [INFO] [stdout] 266 + game.render(&mut stdout); [INFO] [stdout] 267 + stdout.flush().unwrap(); [INFO] [stdout] 268 + } [INFO] [stdout] 269 + Key::Char('r') => { [INFO] [stdout] 270 + game.is_running = true; [INFO] [stdout] 271 + } [INFO] [stdout] 272 + Key::Char('s') => { [INFO] [stdout] 273 + game.is_running = false; [INFO] [stdout] 274 + } [INFO] [stdout] 275 + Key::Char('n') => { [INFO] [stdout] 276 + game.tick(); [INFO] [stdout] 277 + game.render(&mut stdout); [INFO] [stdout] 278 + stdout.flush().unwrap(); [INFO] [stdout] 279 + } [INFO] [stdout] 280 + Key::Char('p') => { [INFO] [stdout] 281 + match game.tick_back() { [INFO] [stdout] 282 + Ok(_) => {game.render(&mut stdout);} [INFO] [stdout] 283 + Err(msg) => {write!(stdout, "\r{}{}", [INFO] [stdout] 284 + termion::clear::CurrentLine, [INFO] [stdout] 285 + msg).unwrap();} [INFO] [stdout] 286 + }; [INFO] [stdout] 287 + stdout.flush().unwrap(); [INFO] [stdout] 288 + } [INFO] [stdout] 289 + Key::Char('c') => { [INFO] [stdout] 290 + game.clear(); [INFO] [stdout] 291 + game.render(&mut stdout); [INFO] [stdout] 292 + stdout.flush().unwrap(); [INFO] [stdout] 293 + } [INFO] [stdout] 294 + Key::Char('t') => { [INFO] [stdout] 295 + game.show_cursor = !game.show_cursor; [INFO] [stdout] 296 + game.render(&mut stdout); [INFO] [stdout] 297 + stdout.flush().unwrap(); [INFO] [stdout] 298 + } [INFO] [stdout] 299 + Key::Char(' ') => { [INFO] [stdout] 300 + game.toggle_selected_cell(); [INFO] [stdout] 301 + game.render(&mut stdout); [INFO] [stdout] 302 + stdout.flush().unwrap(); [INFO] [stdout] 303 + } [INFO] [stdout] 304 + Key::Char('-') => {tick_millis += 50;} [INFO] [stdout] 305 + Key::Char('+') => {tick_millis = max(tick_millis - 50, 50);} [INFO] [stdout] 306 + Key::Char('q') => break, [INFO] [stdout] 307 + other => { [INFO] [stdout] 308 + write!(stdout, "Unexpected key: {:?}", other).unwrap(); [INFO] [stdout] 309 + stdout.flush().unwrap(); [INFO] [stdout] 310 + } [INFO] [stdout] 311 + } } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:29:5 [INFO] [stdout] | [INFO] [stdout] 29 | write!(stdout, "\r{}\n\r", "Game Of Life"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 29 | let _ = write!(stdout, "\r{}\n\r", "Game Of Life"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 30 | write!(stdout, "{}\n\r", "------------"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 30 | let _ = write!(stdout, "{}\n\r", "------------"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 32 | write!(stdout, "{}\n\r", "Controls:"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 32 | let _ = write!(stdout, "{}\n\r", "Controls:"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 33 | write!(stdout, "{}\n\r", "* Arrow keys - move cursor"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 33 | let _ = write!(stdout, "{}\n\r", "* Arrow keys - move cursor"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:34:9 [INFO] [stdout] | [INFO] [stdout] 34 | write!(stdout, "{}\n\r", "* Space - toggle cell"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 34 | let _ = write!(stdout, "{}\n\r", "* Space - toggle cell"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 35 | write!(stdout, "{}\n\r", "* R/S - [R]un / [S]top"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 35 | let _ = write!(stdout, "{}\n\r", "* R/S - [R]un / [S]top"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:36:9 [INFO] [stdout] | [INFO] [stdout] 36 | write!(stdout, "{}\n\r", "* P/N - [P]rev/[N]ext"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 36 | let _ = write!(stdout, "{}\n\r", "* P/N - [P]rev/[N]ext"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:37:9 [INFO] [stdout] | [INFO] [stdout] 37 | write!(stdout, "{}\n\r", " (Single Step)"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 37 | let _ = write!(stdout, "{}\n\r", " (Single Step)"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | write!(stdout, "{}\n\r", "* C - [C]lear"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 38 | let _ = write!(stdout, "{}\n\r", "* C - [C]lear"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:39:9 [INFO] [stdout] | [INFO] [stdout] 39 | write!(stdout, "{}\n\r", "* T - [T]oggle cursor"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 39 | let _ = write!(stdout, "{}\n\r", "* T - [T]oggle cursor"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:40:9 [INFO] [stdout] | [INFO] [stdout] 40 | write!(stdout, "{}\n\r", "------------"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 40 | let _ = write!(stdout, "{}\n\r", "------------"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:85:9 [INFO] [stdout] | [INFO] [stdout] 85 | / write!(stdout, [INFO] [stdout] 86 | | "{}{}{}", [INFO] [stdout] 87 | | termion::cursor::Goto(1, 1), [INFO] [stdout] 88 | | termion::clear::All, [INFO] [stdout] 89 | | termion::cursor::Hide); [INFO] [stdout] | |_________________________________^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 85 | let _ = write!(stdout, [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:92:9 [INFO] [stdout] | [INFO] [stdout] 92 | write!(stdout, "{}", CORNERS[0]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 92 | let _ = write!(stdout, "{}", CORNERS[0]); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:93:33 [INFO] [stdout] | [INFO] [stdout] 93 | for i in 0..self.width {write!(stdout, "{}", BORDER_H);} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 93 | for i in 0..self.width {let _ = write!(stdout, "{}", BORDER_H);} [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:94:9 [INFO] [stdout] | [INFO] [stdout] 94 | write!(stdout, "{}\n\r", CORNERS[1]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 94 | let _ = write!(stdout, "{}\n\r", CORNERS[1]); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:97:13 [INFO] [stdout] | [INFO] [stdout] 97 | write!(stdout, "{}", BORDER_V); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 97 | let _ = write!(stdout, "{}", BORDER_V); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:103:25 [INFO] [stdout] | [INFO] [stdout] 103 | write!(stdout, "{}", SELECTED_ALIVE); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 103 | let _ = write!(stdout, "{}", SELECTED_ALIVE); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:104:29 [INFO] [stdout] | [INFO] [stdout] 104 | } else {write!(stdout, "{}", ALIVE);} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 104 | } else {let _ = write!(stdout, "{}", ALIVE);} [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/main.rs:93:13 [INFO] [stdout] | [INFO] [stdout] 93 | for i in 0..self.width {write!(stdout, "{}", BORDER_H);} [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:107:25 [INFO] [stdout] | [INFO] [stdout] 107 | write!(stdout, "{}", SELECTED_DEAD); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 107 | let _ = write!(stdout, "{}", SELECTED_DEAD); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/main.rs:115:13 [INFO] [stdout] | [INFO] [stdout] 115 | for i in 0..self.width {write!(stdout, "{}", BORDER_H);} [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:108:29 [INFO] [stdout] | [INFO] [stdout] 108 | } else {write!(stdout, "{}", DEAD);} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 108 | } else {let _ = write!(stdout, "{}", DEAD);} [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:111:13 [INFO] [stdout] | [INFO] [stdout] 111 | write!(stdout, "{}\n\r", BORDER_V); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 111 | let _ = write!(stdout, "{}\n\r", BORDER_V); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:114:9 [INFO] [stdout] | [INFO] [stdout] 114 | write!(stdout, "{}", CORNERS[3]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 114 | let _ = write!(stdout, "{}", CORNERS[3]); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:115:33 [INFO] [stdout] | [INFO] [stdout] 115 | for i in 0..self.width {write!(stdout, "{}", BORDER_H);} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 115 | for i in 0..self.width {let _ = write!(stdout, "{}", BORDER_H);} [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:116:9 [INFO] [stdout] | [INFO] [stdout] 116 | write!(stdout, "{}\n\r", CORNERS[2]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 116 | let _ = write!(stdout, "{}\n\r", CORNERS[2]); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:220:9 [INFO] [stdout] | [INFO] [stdout] 220 | write!(stdout, "\r{}\n\r", "Game Of Life"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 220 | let _ = write!(stdout, "\r{}\n\r", "Game Of Life"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:221:9 [INFO] [stdout] | [INFO] [stdout] 221 | write!(stdout, "\r{}\n\r", "Args: game-of-life "); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 221 | let _ = write!(stdout, "\r{}\n\r", "Args: game-of-life "); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/main.rs:29:32 [INFO] [stdout] | [INFO] [stdout] 29 | write!(stdout, "\r{}\n\r", "Game Of Life"); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] = note: `#[warn(clippy::write_literal)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 29 - write!(stdout, "\r{}\n\r", "Game Of Life"); [INFO] [stdout] 29 + write!(stdout, "\rGame Of Life\n\r"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/main.rs:30:30 [INFO] [stdout] | [INFO] [stdout] 30 | write!(stdout, "{}\n\r", "------------"); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 30 - write!(stdout, "{}\n\r", "------------"); [INFO] [stdout] 30 + write!(stdout, "------------\n\r"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/main.rs:32:34 [INFO] [stdout] | [INFO] [stdout] 32 | write!(stdout, "{}\n\r", "Controls:"); [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 32 - write!(stdout, "{}\n\r", "Controls:"); [INFO] [stdout] 32 + write!(stdout, "Controls:\n\r"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/main.rs:33:34 [INFO] [stdout] | [INFO] [stdout] 33 | write!(stdout, "{}\n\r", "* Arrow keys - move cursor"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 33 - write!(stdout, "{}\n\r", "* Arrow keys - move cursor"); [INFO] [stdout] 33 + write!(stdout, "* Arrow keys - move cursor\n\r"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/main.rs:34:34 [INFO] [stdout] | [INFO] [stdout] 34 | write!(stdout, "{}\n\r", "* Space - toggle cell"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 34 - write!(stdout, "{}\n\r", "* Space - toggle cell"); [INFO] [stdout] 34 + write!(stdout, "* Space - toggle cell\n\r"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/main.rs:35:34 [INFO] [stdout] | [INFO] [stdout] 35 | write!(stdout, "{}\n\r", "* R/S - [R]un / [S]top"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 35 - write!(stdout, "{}\n\r", "* R/S - [R]un / [S]top"); [INFO] [stdout] 35 + write!(stdout, "* R/S - [R]un / [S]top\n\r"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/main.rs:36:34 [INFO] [stdout] | [INFO] [stdout] 36 | write!(stdout, "{}\n\r", "* P/N - [P]rev/[N]ext"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 36 - write!(stdout, "{}\n\r", "* P/N - [P]rev/[N]ext"); [INFO] [stdout] 36 + write!(stdout, "* P/N - [P]rev/[N]ext\n\r"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/main.rs:37:34 [INFO] [stdout] | [INFO] [stdout] 37 | write!(stdout, "{}\n\r", " (Single Step)"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 37 - write!(stdout, "{}\n\r", " (Single Step)"); [INFO] [stdout] 37 + write!(stdout, " (Single Step)\n\r"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/main.rs:38:34 [INFO] [stdout] | [INFO] [stdout] 38 | write!(stdout, "{}\n\r", "* C - [C]lear"); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 38 - write!(stdout, "{}\n\r", "* C - [C]lear"); [INFO] [stdout] 38 + write!(stdout, "* C - [C]lear\n\r"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/main.rs:39:34 [INFO] [stdout] | [INFO] [stdout] 39 | write!(stdout, "{}\n\r", "* T - [T]oggle cursor"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 39 - write!(stdout, "{}\n\r", "* T - [T]oggle cursor"); [INFO] [stdout] 39 + write!(stdout, "* T - [T]oggle cursor\n\r"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/main.rs:40:34 [INFO] [stdout] | [INFO] [stdout] 40 | write!(stdout, "{}\n\r", "------------"); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 40 - write!(stdout, "{}\n\r", "------------"); [INFO] [stdout] 40 + write!(stdout, "------------\n\r"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`usize` -> `usize`) [INFO] [stdout] --> src/main.rs:74:9 [INFO] [stdout] | [INFO] [stdout] 74 | (row * self.width + column) as usize [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(row * self.width + column)` [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 the result of `isize::abs()` to usize [INFO] [stdout] --> src/main.rs:121:16 [INFO] [stdout] | [INFO] [stdout] 121 | if r.abs() as usize > self.selected_cell.0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `r.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: casting the result of `isize::abs()` to usize [INFO] [stdout] --> src/main.rs:122:56 [INFO] [stdout] | [INFO] [stdout] 122 | self.selected_cell.0 = self.height - ((r.abs() as usize - self.selected_cell.0) % self.height); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `r.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] [INFO] [stdout] [INFO] [stdout] warning: casting the result of `isize::abs()` to usize [INFO] [stdout] --> src/main.rs:123:45 [INFO] [stdout] | [INFO] [stdout] 123 | } else {self.selected_cell.0 -= r.abs() as usize;} [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `r.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] [INFO] [stdout] [INFO] [stdout] warning: casting the result of `isize::abs()` to usize [INFO] [stdout] --> src/main.rs:129:16 [INFO] [stdout] | [INFO] [stdout] 129 | if c.abs() as usize > self.selected_cell.1 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `c.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] [INFO] [stdout] [INFO] [stdout] warning: casting the result of `isize::abs()` to usize [INFO] [stdout] --> src/main.rs:130:55 [INFO] [stdout] | [INFO] [stdout] 130 | self.selected_cell.1 = self.width - ((c.abs() as usize - self.selected_cell.1) % self.width); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `c.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] [INFO] [stdout] [INFO] [stdout] warning: casting the result of `isize::abs()` to usize [INFO] [stdout] --> src/main.rs:131:45 [INFO] [stdout] | [INFO] [stdout] 131 | } else {self.selected_cell.1 -= c.abs() as usize;} [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: replace with: `c.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] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:138:9 [INFO] [stdout] | [INFO] [stdout] 138 | / return (row >= 0) && [INFO] [stdout] 139 | | (row < self.height as isize) && [INFO] [stdout] 140 | | (col >= 0) && [INFO] [stdout] 141 | | (col < self.width as isize); [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] 138 ~ (row >= 0) && [INFO] [stdout] 139 + (row < self.height as isize) && [INFO] [stdout] 140 + (col >= 0) && [INFO] [stdout] 141 ~ (col < self.width as isize) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:146:9 [INFO] [stdout] | [INFO] [stdout] 146 | return self.cells[ind]; [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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 146 - return self.cells[ind]; [INFO] [stdout] 146 + self.cells[ind] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:161:47 [INFO] [stdout] | [INFO] [stdout] 161 | if self.is_in_bounds(r, c) && !((r, c) == (row, col)){ [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `((r, c) != (row, col))` [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] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:167:9 [INFO] [stdout] | [INFO] [stdout] 167 | return ans; [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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 167 - return ans; [INFO] [stdout] 167 + ans [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:196:9 [INFO] [stdout] | [INFO] [stdout] 196 | return Ok("Returned to previous step"); [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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 196 - return Ok("Returned to previous step"); [INFO] [stdout] 196 + Ok("Returned to previous step") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/main.rs:220:36 [INFO] [stdout] | [INFO] [stdout] 220 | write!(stdout, "\r{}\n\r", "Game Of Life"); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 220 - write!(stdout, "\r{}\n\r", "Game Of Life"); [INFO] [stdout] 220 + write!(stdout, "\rGame Of Life\n\r"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: literal with an empty format string [INFO] [stdout] --> src/main.rs:221:36 [INFO] [stdout] | [INFO] [stdout] 221 | write!(stdout, "\r{}\n\r", "Args: game-of-life "); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_literal [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 221 - write!(stdout, "\r{}\n\r", "Args: game-of-life "); [INFO] [stdout] 221 + write!(stdout, "\rArgs: game-of-life \n\r"); [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:248:9 [INFO] [stdout] | [INFO] [stdout] 248 | / match b { [INFO] [stdout] 249 | | Some(x) => match x.unwrap() { [INFO] [stdout] 250 | | Key::Up => { [INFO] [stdout] 251 | | game.move_cursor(-1, 0); [INFO] [stdout] ... | [INFO] [stdout] 313 | | _ => {} [INFO] [stdout] 314 | | } [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] 248 ~ if let Some(x) = b { match x.unwrap() { [INFO] [stdout] 249 + Key::Up => { [INFO] [stdout] 250 + game.move_cursor(-1, 0); [INFO] [stdout] 251 + game.render(&mut stdout); [INFO] [stdout] 252 + stdout.flush().unwrap(); [INFO] [stdout] 253 + } [INFO] [stdout] 254 + Key::Down => { [INFO] [stdout] 255 + game.move_cursor(1, 0); [INFO] [stdout] 256 + game.render(&mut stdout); [INFO] [stdout] 257 + stdout.flush().unwrap(); [INFO] [stdout] 258 + } [INFO] [stdout] 259 + Key::Right => { [INFO] [stdout] 260 + game.move_cursor(0, 1); [INFO] [stdout] 261 + game.render(&mut stdout); [INFO] [stdout] 262 + stdout.flush().unwrap(); [INFO] [stdout] 263 + } [INFO] [stdout] 264 + Key::Left => { [INFO] [stdout] 265 + game.move_cursor(0, -1); [INFO] [stdout] 266 + game.render(&mut stdout); [INFO] [stdout] 267 + stdout.flush().unwrap(); [INFO] [stdout] 268 + } [INFO] [stdout] 269 + Key::Char('r') => { [INFO] [stdout] 270 + game.is_running = true; [INFO] [stdout] 271 + } [INFO] [stdout] 272 + Key::Char('s') => { [INFO] [stdout] 273 + game.is_running = false; [INFO] [stdout] 274 + } [INFO] [stdout] 275 + Key::Char('n') => { [INFO] [stdout] 276 + game.tick(); [INFO] [stdout] 277 + game.render(&mut stdout); [INFO] [stdout] 278 + stdout.flush().unwrap(); [INFO] [stdout] 279 + } [INFO] [stdout] 280 + Key::Char('p') => { [INFO] [stdout] 281 + match game.tick_back() { [INFO] [stdout] 282 + Ok(_) => {game.render(&mut stdout);} [INFO] [stdout] 283 + Err(msg) => {write!(stdout, "\r{}{}", [INFO] [stdout] 284 + termion::clear::CurrentLine, [INFO] [stdout] 285 + msg).unwrap();} [INFO] [stdout] 286 + }; [INFO] [stdout] 287 + stdout.flush().unwrap(); [INFO] [stdout] 288 + } [INFO] [stdout] 289 + Key::Char('c') => { [INFO] [stdout] 290 + game.clear(); [INFO] [stdout] 291 + game.render(&mut stdout); [INFO] [stdout] 292 + stdout.flush().unwrap(); [INFO] [stdout] 293 + } [INFO] [stdout] 294 + Key::Char('t') => { [INFO] [stdout] 295 + game.show_cursor = !game.show_cursor; [INFO] [stdout] 296 + game.render(&mut stdout); [INFO] [stdout] 297 + stdout.flush().unwrap(); [INFO] [stdout] 298 + } [INFO] [stdout] 299 + Key::Char(' ') => { [INFO] [stdout] 300 + game.toggle_selected_cell(); [INFO] [stdout] 301 + game.render(&mut stdout); [INFO] [stdout] 302 + stdout.flush().unwrap(); [INFO] [stdout] 303 + } [INFO] [stdout] 304 + Key::Char('-') => {tick_millis += 50;} [INFO] [stdout] 305 + Key::Char('+') => {tick_millis = max(tick_millis - 50, 50);} [INFO] [stdout] 306 + Key::Char('q') => break, [INFO] [stdout] 307 + other => { [INFO] [stdout] 308 + write!(stdout, "Unexpected key: {:?}", other).unwrap(); [INFO] [stdout] 309 + stdout.flush().unwrap(); [INFO] [stdout] 310 + } [INFO] [stdout] 311 + } } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:29:5 [INFO] [stdout] | [INFO] [stdout] 29 | write!(stdout, "\r{}\n\r", "Game Of Life"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 29 | let _ = write!(stdout, "\r{}\n\r", "Game Of Life"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 30 | write!(stdout, "{}\n\r", "------------"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 30 | let _ = write!(stdout, "{}\n\r", "------------"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 32 | write!(stdout, "{}\n\r", "Controls:"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 32 | let _ = write!(stdout, "{}\n\r", "Controls:"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 33 | write!(stdout, "{}\n\r", "* Arrow keys - move cursor"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 33 | let _ = write!(stdout, "{}\n\r", "* Arrow keys - move cursor"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:34:9 [INFO] [stdout] | [INFO] [stdout] 34 | write!(stdout, "{}\n\r", "* Space - toggle cell"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 34 | let _ = write!(stdout, "{}\n\r", "* Space - toggle cell"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 35 | write!(stdout, "{}\n\r", "* R/S - [R]un / [S]top"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 35 | let _ = write!(stdout, "{}\n\r", "* R/S - [R]un / [S]top"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:36:9 [INFO] [stdout] | [INFO] [stdout] 36 | write!(stdout, "{}\n\r", "* P/N - [P]rev/[N]ext"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 36 | let _ = write!(stdout, "{}\n\r", "* P/N - [P]rev/[N]ext"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:37:9 [INFO] [stdout] | [INFO] [stdout] 37 | write!(stdout, "{}\n\r", " (Single Step)"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 37 | let _ = write!(stdout, "{}\n\r", " (Single Step)"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | write!(stdout, "{}\n\r", "* C - [C]lear"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 38 | let _ = write!(stdout, "{}\n\r", "* C - [C]lear"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:39:9 [INFO] [stdout] | [INFO] [stdout] 39 | write!(stdout, "{}\n\r", "* T - [T]oggle cursor"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 39 | let _ = write!(stdout, "{}\n\r", "* T - [T]oggle cursor"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:40:9 [INFO] [stdout] | [INFO] [stdout] 40 | write!(stdout, "{}\n\r", "------------"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 40 | let _ = write!(stdout, "{}\n\r", "------------"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:85:9 [INFO] [stdout] | [INFO] [stdout] 85 | / write!(stdout, [INFO] [stdout] 86 | | "{}{}{}", [INFO] [stdout] 87 | | termion::cursor::Goto(1, 1), [INFO] [stdout] 88 | | termion::clear::All, [INFO] [stdout] 89 | | termion::cursor::Hide); [INFO] [stdout] | |_________________________________^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 85 | let _ = write!(stdout, [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:92:9 [INFO] [stdout] | [INFO] [stdout] 92 | write!(stdout, "{}", CORNERS[0]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 92 | let _ = write!(stdout, "{}", CORNERS[0]); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:93:33 [INFO] [stdout] | [INFO] [stdout] 93 | for i in 0..self.width {write!(stdout, "{}", BORDER_H);} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 93 | for i in 0..self.width {let _ = write!(stdout, "{}", BORDER_H);} [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:94:9 [INFO] [stdout] | [INFO] [stdout] 94 | write!(stdout, "{}\n\r", CORNERS[1]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 94 | let _ = write!(stdout, "{}\n\r", CORNERS[1]); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:97:13 [INFO] [stdout] | [INFO] [stdout] 97 | write!(stdout, "{}", BORDER_V); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 97 | let _ = write!(stdout, "{}", BORDER_V); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:103:25 [INFO] [stdout] | [INFO] [stdout] 103 | write!(stdout, "{}", SELECTED_ALIVE); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 103 | let _ = write!(stdout, "{}", SELECTED_ALIVE); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:104:29 [INFO] [stdout] | [INFO] [stdout] 104 | } else {write!(stdout, "{}", ALIVE);} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 104 | } else {let _ = write!(stdout, "{}", ALIVE);} [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:107:25 [INFO] [stdout] | [INFO] [stdout] 107 | write!(stdout, "{}", SELECTED_DEAD); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 107 | let _ = write!(stdout, "{}", SELECTED_DEAD); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:108:29 [INFO] [stdout] | [INFO] [stdout] 108 | } else {write!(stdout, "{}", DEAD);} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 108 | } else {let _ = write!(stdout, "{}", DEAD);} [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:111:13 [INFO] [stdout] | [INFO] [stdout] 111 | write!(stdout, "{}\n\r", BORDER_V); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 111 | let _ = write!(stdout, "{}\n\r", BORDER_V); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:114:9 [INFO] [stdout] | [INFO] [stdout] 114 | write!(stdout, "{}", CORNERS[3]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 114 | let _ = write!(stdout, "{}", CORNERS[3]); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:115:33 [INFO] [stdout] | [INFO] [stdout] 115 | for i in 0..self.width {write!(stdout, "{}", BORDER_H);} [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 115 | for i in 0..self.width {let _ = write!(stdout, "{}", BORDER_H);} [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:116:9 [INFO] [stdout] | [INFO] [stdout] 116 | write!(stdout, "{}\n\r", CORNERS[2]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 116 | let _ = write!(stdout, "{}\n\r", CORNERS[2]); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:220:9 [INFO] [stdout] | [INFO] [stdout] 220 | write!(stdout, "\r{}\n\r", "Game Of Life"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 220 | let _ = write!(stdout, "\r{}\n\r", "Game Of Life"); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `std::result::Result` that must be used [INFO] [stdout] --> src/main.rs:221:9 [INFO] [stdout] | [INFO] [stdout] 221 | write!(stdout, "\r{}\n\r", "Args: game-of-life "); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] help: use `let _ = ...` to ignore the resulting value [INFO] [stdout] | [INFO] [stdout] 221 | let _ = write!(stdout, "\r{}\n\r", "Args: game-of-life "); [INFO] [stdout] | +++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.99s [INFO] running `Command { std: "docker" "inspect" "cf9922c8b7137bf9d11133cddc196a66f4ea4f2a79a7d2c33c61bd56958fac53", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "cf9922c8b7137bf9d11133cddc196a66f4ea4f2a79a7d2c33c61bd56958fac53", kill_on_drop: false }` [INFO] [stdout] cf9922c8b7137bf9d11133cddc196a66f4ea4f2a79a7d2c33c61bd56958fac53