[INFO] cloning repository https://github.com/sprezz-arthur/scrabble
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/sprezz-arthur/scrabble" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsprezz-arthur%2Fscrabble", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsprezz-arthur%2Fscrabble'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 5acb3bf93eca09153fb01782af603293beada242
[INFO] checking sprezz-arthur/scrabble against 1.95.0 for pr-155915
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsprezz-arthur%2Fscrabble" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/sprezz-arthur/scrabble
[INFO] finished tweaking git repo https://github.com/sprezz-arthur/scrabble
[INFO] tweaked toml for git repo https://github.com/sprezz-arthur/scrabble written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/sprezz-arthur/scrabble on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/sprezz-arthur/scrabble 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" "+1.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded rstest v0.16.0
[INFO] [stderr]   Downloaded futures-executor v0.3.26
[INFO] [stderr]   Downloaded crossterm_cursor v0.4.0
[INFO] [stderr]   Downloaded crossterm_utils v0.4.0
[INFO] [stderr]   Downloaded redox_termios v0.1.2
[INFO] [stderr]   Downloaded futures-macro v0.3.26
[INFO] [stderr]   Downloaded rstest_macros v0.16.0
[INFO] [stderr]   Downloaded crossterm_screen v0.3.2
[INFO] [stderr]   Downloaded crossterm_winapi v0.3.0
[INFO] [stderr]   Downloaded crossterm_input v0.5.0
[INFO] [stderr]   Downloaded termion v2.0.1
[INFO] [stderr]   Downloaded crossterm v0.26.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] aad4d289195fc9b0655e9608d5de50f109627631332cae3594f98f63741d766e
[INFO] running `Command { std: "docker" "start" "-a" "aad4d289195fc9b0655e9608d5de50f109627631332cae3594f98f63741d766e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "aad4d289195fc9b0655e9608d5de50f109627631332cae3594f98f63741d766e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "aad4d289195fc9b0655e9608d5de50f109627631332cae3594f98f63741d766e", kill_on_drop: false }`
[INFO] [stdout] aad4d289195fc9b0655e9608d5de50f109627631332cae3594f98f63741d766e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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" "+1.95.0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] dfd14b340bdb004e95ef6fa658cea0d1f940e6fa6328167bb12ba35123ae045a
[INFO] running `Command { std: "docker" "start" "-a" "dfd14b340bdb004e95ef6fa658cea0d1f940e6fa6328167bb12ba35123ae045a", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.50
[INFO] [stderr]    Compiling quote v1.0.23
[INFO] [stderr]    Compiling syn v1.0.107
[INFO] [stderr]    Compiling futures-core v0.3.26
[INFO] [stderr]    Compiling semver v1.0.16
[INFO] [stderr]    Compiling futures-task v0.3.26
[INFO] [stderr]    Compiling futures-channel v0.3.26
[INFO] [stderr]     Checking futures-sink v0.3.26
[INFO] [stderr]    Compiling futures-util v0.3.26
[INFO] [stderr]     Checking crossterm_utils v0.4.0
[INFO] [stderr]    Compiling phf_shared v0.11.1
[INFO] [stderr]     Checking net2 v0.2.38
[INFO] [stderr]     Checking getrandom v0.2.8
[INFO] [stderr]     Checking iovec v0.1.4
[INFO] [stderr]     Checking signal-hook-registry v1.4.1
[INFO] [stderr]     Checking futures-io v0.3.26
[INFO] [stderr]     Checking parking_lot_core v0.9.7
[INFO] [stderr]     Checking mio v0.8.5
[INFO] [stderr]     Checking numtoa v0.1.0
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking signal-hook v0.3.15
[INFO] [stderr]     Checking crossterm_screen v0.3.2
[INFO] [stderr]     Checking either v1.8.1
[INFO] [stderr]     Checking futures-timer v3.0.2
[INFO] [stderr]     Checking mio v0.6.23
[INFO] [stderr]    Compiling phf_generator v0.11.1
[INFO] [stderr]     Checking termion v2.0.1
[INFO] [stderr]     Checking parking_lot v0.12.1
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking itertools v0.10.5
[INFO] [stderr]     Checking signal-hook-mio v0.2.3
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking crossterm v0.26.0
[INFO] [stderr]    Compiling rustc_version v0.4.0
[INFO] [stderr]    Compiling rstest_macros v0.16.0
[INFO] [stderr]     Checking crossterm_input v0.5.0
[INFO] [stderr]     Checking crossterm_cursor v0.4.0
[INFO] [stderr]    Compiling futures-macro v0.3.26
[INFO] [stderr]    Compiling phf_macros v0.11.1
[INFO] [stderr]     Checking phf v0.11.1
[INFO] [stderr]     Checking scrabble-rust v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `rand::seq::SliceRandom`
[INFO] [stdout]  --> src/player/mod.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use rand::seq::SliceRandom;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/main.rs:8:15
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::io::{self};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `termion::event::Key`
[INFO] [stdout]   --> src/main.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use termion::event::Key;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `termion::input::TermRead`
[INFO] [stdout]   --> src/main.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use termion::input::TermRead;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 |     let mut game = game::init_game(2);
[INFO] [stdout]    |         ----^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let (mut x, mut y) = (0, 0);
[INFO] [stdout]    |          ----^
[INFO] [stdout]    |          |
[INFO] [stdout]    |          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:17:17
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let (mut x, mut y) = (0, 0);
[INFO] [stdout]    |                 ----^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:18:10
[INFO] [stdout]    |
[INFO] [stdout] 18 |     let (mut prev_x, mut prev_y) = (0, 0);
[INFO] [stdout]    |          ----^^^^^^
[INFO] [stdout]    |          |
[INFO] [stdout]    |          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:18:22
[INFO] [stdout]    |
[INFO] [stdout] 18 |     let (mut prev_x, mut prev_y) = (0, 0);
[INFO] [stdout]    |                      ----^^^^^^
[INFO] [stdout]    |                      |
[INFO] [stdout]    |                      help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]   --> src/main.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let (mut x, mut y) = (0, 0);
[INFO] [stdout]    |          ^^^^^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y`
[INFO] [stdout]   --> src/main.rs:17:17
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let (mut x, mut y) = (0, 0);
[INFO] [stdout]    |                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prev_x`
[INFO] [stdout]   --> src/main.rs:18:10
[INFO] [stdout]    |
[INFO] [stdout] 18 |     let (mut prev_x, mut prev_y) = (0, 0);
[INFO] [stdout]    |          ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_prev_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prev_y`
[INFO] [stdout]   --> src/main.rs:18:22
[INFO] [stdout]    |
[INFO] [stdout] 18 |     let (mut prev_x, mut prev_y) = (0, 0);
[INFO] [stdout]    |                      ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_prev_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stdin`
[INFO] [stdout]   --> src/main.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 |     let stdin = stdin();
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_stdin`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `draw_tile` is never used
[INFO] [stdout]   --> src/bag/mod.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl Bag {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] 29 |     pub fn draw_tile(&mut self) -> Option<Tile> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `return_tiles` is never used
[INFO] [stdout]   --> src/bag/mod.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl Bag {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] 35 |     pub fn return_tiles(&mut self, tiles: &mut Vec<Tile>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `pointer` and `place_letter` are never used
[INFO] [stdout]   --> src/board/mod.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl Board {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] 15 |     pub fn pointer(&self, x: usize, y: usize, prev_x: usize, prev_y: usize) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn place_letter(&mut self, letter: char, x: usize, y: usize) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `mult` and `target` are never read
[INFO] [stdout]   --> src/board/cell/mod.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct CellProps {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 34 |     symbol: char,
[INFO] [stdout] 35 |     mult: Option<i32>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 36 |     target: Option<Target>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CellProps` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `hex_code` is never used
[INFO] [stdout]   --> src/board/cell/mod.rs:94:12
[INFO] [stdout]    |
[INFO] [stdout] 93 | impl CellProps {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] 94 |     pub fn hex_code(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lines_from_file` is never used
[INFO] [stdout]  --> src/dictionary/mod.rs:7:4
[INFO] [stdout]   |
[INFO] [stdout] 7 | fn lines_from_file(filename: impl AsRef<Path>) -> Vec<String> {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `in_dict` is never used
[INFO] [stdout]   --> src/dictionary/mod.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn in_dict(word: &str) -> bool {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `id` is never read
[INFO] [stdout]  --> src/player/mod.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct Player {
[INFO] [stdout]   |            ------ field in this struct
[INFO] [stdout] 9 |     id: i32,
[INFO] [stdout]   |     ^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Player` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `add_tile` is never used
[INFO] [stdout]   --> src/player/hand.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl Hand {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] 23 |     pub fn add_tile(&mut self, tile: tile::Tile, pos: usize) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/player/mod.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |         writeln!(f, "{:?}", self);
[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] 28 |         let _ = writeln!(f, "{:?}", self);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking futures-executor v0.3.26
[INFO] [stderr]     Checking futures v0.3.26
[INFO] [stderr]     Checking rstest v0.16.0
[INFO] [stdout] warning: unused import: `fixture`
[INFO] [stdout]   --> src/game.rs:71:18
[INFO] [stdout]    |
[INFO] [stdout] 71 |     use rstest::{fixture, rstest};
[INFO] [stdout]    |                  ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::seq::SliceRandom`
[INFO] [stdout]  --> src/player/mod.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use rand::seq::SliceRandom;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/main.rs:8:15
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::io::{self};
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `termion::event::Key`
[INFO] [stdout]   --> src/main.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use termion::event::Key;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `termion::input::TermRead`
[INFO] [stdout]   --> src/main.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use termion::input::TermRead;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 |     let mut game = game::init_game(2);
[INFO] [stdout]    |         ----^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let (mut x, mut y) = (0, 0);
[INFO] [stdout]    |          ----^
[INFO] [stdout]    |          |
[INFO] [stdout]    |          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:17:17
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let (mut x, mut y) = (0, 0);
[INFO] [stdout]    |                 ----^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:18:10
[INFO] [stdout]    |
[INFO] [stdout] 18 |     let (mut prev_x, mut prev_y) = (0, 0);
[INFO] [stdout]    |          ----^^^^^^
[INFO] [stdout]    |          |
[INFO] [stdout]    |          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:18:22
[INFO] [stdout]    |
[INFO] [stdout] 18 |     let (mut prev_x, mut prev_y) = (0, 0);
[INFO] [stdout]    |                      ----^^^^^^
[INFO] [stdout]    |                      |
[INFO] [stdout]    |                      help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]   --> src/main.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let (mut x, mut y) = (0, 0);
[INFO] [stdout]    |          ^^^^^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y`
[INFO] [stdout]   --> src/main.rs:17:17
[INFO] [stdout]    |
[INFO] [stdout] 17 |     let (mut x, mut y) = (0, 0);
[INFO] [stdout]    |                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prev_x`
[INFO] [stdout]   --> src/main.rs:18:10
[INFO] [stdout]    |
[INFO] [stdout] 18 |     let (mut prev_x, mut prev_y) = (0, 0);
[INFO] [stdout]    |          ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_prev_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prev_y`
[INFO] [stdout]   --> src/main.rs:18:22
[INFO] [stdout]    |
[INFO] [stdout] 18 |     let (mut prev_x, mut prev_y) = (0, 0);
[INFO] [stdout]    |                      ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_prev_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `stdin`
[INFO] [stdout]   --> src/main.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 |     let stdin = stdin();
[INFO] [stdout]    |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_stdin`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `pointer` and `place_letter` are never used
[INFO] [stdout]   --> src/board/mod.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl Board {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] 15 |     pub fn pointer(&self, x: usize, y: usize, prev_x: usize, prev_y: usize) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn place_letter(&mut self, letter: char, x: usize, y: usize) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `hex_code` is never used
[INFO] [stdout]   --> src/board/cell/mod.rs:94:12
[INFO] [stdout]    |
[INFO] [stdout] 93 | impl CellProps {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] 94 |     pub fn hex_code(&self) -> &str {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `id` is never read
[INFO] [stdout]  --> src/player/mod.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct Player {
[INFO] [stdout]   |            ------ field in this struct
[INFO] [stdout] 9 |     id: i32,
[INFO] [stdout]   |     ^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Player` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/player/mod.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |         writeln!(f, "{:?}", self);
[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] 28 |         let _ = writeln!(f, "{:?}", self);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 16.76s
[INFO] running `Command { std: "docker" "inspect" "dfd14b340bdb004e95ef6fa658cea0d1f940e6fa6328167bb12ba35123ae045a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "dfd14b340bdb004e95ef6fa658cea0d1f940e6fa6328167bb12ba35123ae045a", kill_on_drop: false }`
[INFO] [stdout] dfd14b340bdb004e95ef6fa658cea0d1f940e6fa6328167bb12ba35123ae045a
