[INFO] cloning repository https://github.com/SmallBeasts/Battleship_Challenge2
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/SmallBeasts/Battleship_Challenge2" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSmallBeasts%2FBattleship_Challenge2", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSmallBeasts%2FBattleship_Challenge2'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] aa6222e8fc4faa3566910dd1d88e5d273bb0dd27
[INFO] checking SmallBeasts/Battleship_Challenge2 against 24e1a22664233bce1f9b5dc6eee7c1f74327e28c for pr-159343-retry
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSmallBeasts%2FBattleship_Challenge2" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/SmallBeasts/Battleship_Challenge2
[INFO] finished tweaking git repo https://github.com/SmallBeasts/Battleship_Challenge2
[INFO] tweaked toml for git repo https://github.com/SmallBeasts/Battleship_Challenge2 written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/SmallBeasts/Battleship_Challenge2 on toolchain 24e1a22664233bce1f9b5dc6eee7c1f74327e28c
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+24e1a22664233bce1f9b5dc6eee7c1f74327e28c" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/SmallBeasts/Battleship_Challenge2 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" "+24e1a22664233bce1f9b5dc6eee7c1f74327e28c" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 0eb102063e39e4d4658d688bd9d233f6734016cfc8964c1d8ecc9b5c62517455
[INFO] running `Command { std: "docker" "start" "0eb102063e39e4d4658d688bd9d233f6734016cfc8964c1d8ecc9b5c62517455", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "0eb102063e39e4d4658d688bd9d233f6734016cfc8964c1d8ecc9b5c62517455", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "0eb102063e39e4d4658d688bd9d233f6734016cfc8964c1d8ecc9b5c62517455" "/opt/rustwide/cargo-home/bin/cargo" "+24e1a22664233bce1f9b5dc6eee7c1f74327e28c" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "0eb102063e39e4d4658d688bd9d233f6734016cfc8964c1d8ecc9b5c62517455", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "0eb102063e39e4d4658d688bd9d233f6734016cfc8964c1d8ecc9b5c62517455" "/opt/rustwide/cargo-home/bin/cargo" "+24e1a22664233bce1f9b5dc6eee7c1f74327e28c" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.169
[INFO] [stderr]    Compiling getrandom v0.3.1
[INFO] [stderr]    Compiling zerocopy v0.8.17
[INFO] [stderr]    Compiling syn v2.0.98
[INFO] [stderr]    Compiling zerocopy-derive v0.7.35
[INFO] [stderr]     Checking rand_core v0.9.0
[INFO] [stderr]     Checking zerocopy v0.7.35
[INFO] [stderr]     Checking ppv-lite86 v0.2.20
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking rand v0.9.0
[INFO] [stderr]     Checking B_ship_Rust2 v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0428]: the name `AIdata` is defined multiple times
[INFO] [stdout]    --> src/code/aistuff.rs:489:1
[INFO] [stdout]     |
[INFO] [stdout]  17 | pub struct AIdata {
[INFO] [stdout]     | ----------------- previous definition of the type `AIdata` here
[INFO] [stdout] ...
[INFO] [stdout] 489 | pub struct AIdata {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^ `AIdata` redefined here
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AIdata` must be defined only once in the type namespace of this module
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0428]: the name `Placement` is defined multiple times
[INFO] [stdout]    --> src/code/aistuff.rs:483:1
[INFO] [stdout]     |
[INFO] [stdout]  11 | pub struct Placement {
[INFO] [stdout]     | -------------------- previous definition of the type `Placement` here
[INFO] [stdout] ...
[INFO] [stdout] 483 | pub struct Placement {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `Placement` redefined here
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Placement` must be defined only once in the type namespace of this module
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `crate::code::enums::ShipType`
[INFO] [stdout]  --> src/code/aistuff.rs:5:47
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::code::enums::{Guess, Intelligence, ShipType, Direction, Mode};
[INFO] [stdout]   |                                               ^^^^^^^^ no `ShipType` in `code::enums`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0428]: the name `AIdata` is defined multiple times
[INFO] [stdout]    --> src/code/aistuff.rs:489:1
[INFO] [stdout]     |
[INFO] [stdout]  17 | pub struct AIdata {
[INFO] [stdout]     | ----------------- previous definition of the type `AIdata` here
[INFO] [stdout] ...
[INFO] [stdout] 489 | pub struct AIdata {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^ `AIdata` redefined here
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AIdata` must be defined only once in the type namespace of this module
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0428]: the name `Placement` is defined multiple times
[INFO] [stdout]    --> src/code/aistuff.rs:483:1
[INFO] [stdout]     |
[INFO] [stdout]  11 | pub struct Placement {
[INFO] [stdout]     | -------------------- previous definition of the type `Placement` here
[INFO] [stdout] ...
[INFO] [stdout] 483 | pub struct Placement {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^ `Placement` redefined here
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Placement` must be defined only once in the type namespace of this module
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `crate::code::enums::ShipType`
[INFO] [stdout]  --> src/code/aistuff.rs:5:47
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::code::enums::{Guess, Intelligence, ShipType, Direction, Mode};
[INFO] [stdout]   |                                               ^^^^^^^^ no `ShipType` in `code::enums`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find module or crate `enums` in this scope
[INFO] [stdout]   --> src/code/board.rs:98:56
[INFO] [stdout]    |
[INFO] [stdout] 98 |     pub fn add_guess(&mut self, guess: String, result: enums::HitMiss) -> Bool {
[INFO] [stdout]    |                                                        ^^^^^ use of unresolved module or unlinked crate `enums`
[INFO] [stdout]    |
[INFO] [stdout] help: to make use of source file src/code/enums.rs, use `mod enums` in this file to declare the module
[INFO] [stdout]   --> src/main.rs:1:1
[INFO] [stdout]    |
[INFO] [stdout]  1 + mod enums;
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this module
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::code::enums;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Bool` in this scope
[INFO] [stdout]   --> src/code/board.rs:98:75
[INFO] [stdout]    |
[INFO] [stdout] 98 |     pub fn add_guess(&mut self, guess: String, result: enums::HitMiss) -> Bool {
[INFO] [stdout]    |                                                                           ^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: a builtin type with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 98 -     pub fn add_guess(&mut self, guess: String, result: enums::HitMiss) -> Bool {
[INFO] [stdout] 98 +     pub fn add_guess(&mut self, guess: String, result: enums::HitMiss) -> bool {
[INFO] [stdout]    |
[INFO] [stdout] help: perhaps you intended to use this type
[INFO] [stdout]    |
[INFO] [stdout] 98 -     pub fn add_guess(&mut self, guess: String, result: enums::HitMiss) -> Bool {
[INFO] [stdout] 98 +     pub fn add_guess(&mut self, guess: String, result: enums::HitMiss) -> bool {
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout]  1 + use std::mem::type_info::Bool;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find module or crate `enums` in this scope
[INFO] [stdout]   --> src/code/board.rs:98:56
[INFO] [stdout]    |
[INFO] [stdout] 98 |     pub fn add_guess(&mut self, guess: String, result: enums::HitMiss) -> Bool {
[INFO] [stdout]    |                                                        ^^^^^ use of unresolved module or unlinked crate `enums`
[INFO] [stdout]    |
[INFO] [stdout] help: to make use of source file src/code/enums.rs, use `mod enums` in this file to declare the module
[INFO] [stdout]   --> src/main.rs:1:1
[INFO] [stdout]    |
[INFO] [stdout]  1 + mod enums;
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this module
[INFO] [stdout]    |
[INFO] [stdout]  1 + use crate::code::enums;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find type `Bool` in this scope
[INFO] [stdout]   --> src/code/board.rs:98:75
[INFO] [stdout]    |
[INFO] [stdout] 98 |     pub fn add_guess(&mut self, guess: String, result: enums::HitMiss) -> Bool {
[INFO] [stdout]    |                                                                           ^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: a builtin type with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 98 -     pub fn add_guess(&mut self, guess: String, result: enums::HitMiss) -> Bool {
[INFO] [stdout] 98 +     pub fn add_guess(&mut self, guess: String, result: enums::HitMiss) -> bool {
[INFO] [stdout]    |
[INFO] [stdout] help: perhaps you intended to use this type
[INFO] [stdout]    |
[INFO] [stdout] 98 -     pub fn add_guess(&mut self, guess: String, result: enums::HitMiss) -> Bool {
[INFO] [stdout] 98 +     pub fn add_guess(&mut self, guess: String, result: enums::HitMiss) -> bool {
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct
[INFO] [stdout]    |
[INFO] [stdout]  1 + use std::mem::type_info::Bool;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs::File`
[INFO] [stdout]  --> src/main.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fs::File;
[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 imports: `BufReader` and `stdin`
[INFO] [stdout]  --> src/main.rs:2:30
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::io::{self, BufRead, stdin, BufReader};
[INFO] [stdout]   |                              ^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::vec`
[INFO] [stdout]  --> src/main.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::vec;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `output_string`
[INFO] [stdout]  --> src/code/file.rs:4:26
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::code::utils::{output_string, parse_to_usize, handle_file_error};
[INFO] [stdout]   |                          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rng`
[INFO] [stdout]  --> src/code/handler.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | use rand::{Rng, random_range};
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]    --> src/code/handler.rs:174:5
[INFO] [stdout]     |
[INFO] [stdout] 174 | use std::collections::HashMap;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::seq::SliceRandom`
[INFO] [stdout]    --> src/code/handler.rs:175:5
[INFO] [stdout]     |
[INFO] [stdout] 175 | use rand::seq::SliceRandom; // For choosing a random item
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::code::board`
[INFO] [stdout]  --> src/code/utils.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::code::board;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/code/utils.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs::File`
[INFO] [stdout]  --> src/main.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fs::File;
[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: `crate::code::board`
[INFO] [stdout]  --> src/code/aistuff.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::code::board;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BufReader` and `stdin`
[INFO] [stdout]  --> src/main.rs:2:30
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::io::{self, BufRead, stdin, BufReader};
[INFO] [stdout]   |                              ^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::vec`
[INFO] [stdout]  --> src/main.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::vec;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::code::utils::base_26`
[INFO] [stdout]  --> src/code/aistuff.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::code::utils::base_26;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `output_string`
[INFO] [stdout]  --> src/code/file.rs:4:26
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::code::utils::{output_string, parse_to_usize, handle_file_error};
[INFO] [stdout]   |                          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::board::GameData`
[INFO] [stdout]  --> src/code/aistuff.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use super::board::GameData;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rng`
[INFO] [stdout]  --> src/code/handler.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | use rand::{Rng, random_range};
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]    --> src/code/handler.rs:174:5
[INFO] [stdout]     |
[INFO] [stdout] 174 | use std::collections::HashMap;
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::seq::SliceRandom`
[INFO] [stdout]    --> src/code/handler.rs:175:5
[INFO] [stdout]     |
[INFO] [stdout] 175 | use rand::seq::SliceRandom; // For choosing a random item
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::code::board`
[INFO] [stdout]  --> src/code/utils.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::code::board;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/code/utils.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::code::board`
[INFO] [stdout]  --> src/code/aistuff.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::code::board;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::code::utils::base_26`
[INFO] [stdout]  --> src/code/aistuff.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::code::utils::base_26;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::board::GameData`
[INFO] [stdout]  --> src/code/aistuff.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use super::board::GameData;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0119]: conflicting implementations of trait `Clone` for type `aistuff::Placement`
[INFO] [stdout]    --> src/code/aistuff.rs:482:10
[INFO] [stdout]     |
[INFO] [stdout]  10 | #[derive(Clone, Debug)]
[INFO] [stdout]     |          ----- first implementation here
[INFO] [stdout] ...
[INFO] [stdout] 482 | #[derive(Clone, Debug)]
[INFO] [stdout]     |          ^^^^^ conflicting implementation for `aistuff::Placement`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0119]: conflicting implementations of trait `Clone` for type `aistuff::Placement`
[INFO] [stdout]    --> src/code/aistuff.rs:482:10
[INFO] [stdout]     |
[INFO] [stdout]  10 | #[derive(Clone, Debug)]
[INFO] [stdout]     |          ----- first implementation here
[INFO] [stdout] ...
[INFO] [stdout] 482 | #[derive(Clone, Debug)]
[INFO] [stdout]     |          ^^^^^ conflicting implementation for `aistuff::Placement`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0119]: conflicting implementations of trait `Debug` for type `aistuff::Placement`
[INFO] [stdout]    --> src/code/aistuff.rs:482:17
[INFO] [stdout]     |
[INFO] [stdout]  10 | #[derive(Clone, Debug)]
[INFO] [stdout]     |                 ----- first implementation here
[INFO] [stdout] ...
[INFO] [stdout] 482 | #[derive(Clone, Debug)]
[INFO] [stdout]     |                 ^^^^^ conflicting implementation for `aistuff::Placement`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0119]: conflicting implementations of trait `Debug` for type `aistuff::Placement`
[INFO] [stdout]    --> src/code/aistuff.rs:482:17
[INFO] [stdout]     |
[INFO] [stdout]  10 | #[derive(Clone, Debug)]
[INFO] [stdout]     |                 ----- first implementation here
[INFO] [stdout] ...
[INFO] [stdout] 482 | #[derive(Clone, Debug)]
[INFO] [stdout]     |                 ^^^^^ conflicting implementation for `aistuff::Placement`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `push` found for struct `HashSet<T, S, A>` in the current scope
[INFO] [stdout]   --> src/code/board.rs:58:23
[INFO] [stdout]    |
[INFO] [stdout] 58 |         self.ship_ids.push(new_ship.get_ship_id());
[INFO] [stdout]    |                       ^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: you might have meant to use `insert`
[INFO] [stdout]    |
[INFO] [stdout] 58 -         self.ship_ids.push(new_ship.get_ship_id());
[INFO] [stdout] 58 +         self.ship_ids.insert(new_ship.get_ship_id());
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `push` found for struct `HashSet<T, S, A>` in the current scope
[INFO] [stdout]   --> src/code/board.rs:58:23
[INFO] [stdout]    |
[INFO] [stdout] 58 |         self.ship_ids.push(new_ship.get_ship_id());
[INFO] [stdout]    |                       ^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: you might have meant to use `insert`
[INFO] [stdout]    |
[INFO] [stdout] 58 -         self.ship_ids.push(new_ship.get_ship_id());
[INFO] [stdout] 58 +         self.ship_ids.insert(new_ship.get_ship_id());
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/code/board.rs:93:30
[INFO] [stdout]    |
[INFO] [stdout] 93 |         self.ship_ids.remove(self.ships[self.ships[0].get_ship_id()]);
[INFO] [stdout]    |                       ------ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `&usize`, found `ShipBoundingBox`
[INFO] [stdout]    |                       |
[INFO] [stdout]    |                       arguments to this method are incorrect
[INFO] [stdout]    |
[INFO] [stdout] note: method defined here
[INFO] [stdout]   --> /rustc/24e1a22664233bce1f9b5dc6eee7c1f74327e28c/library/std/src/collections/hash/set.rs:1081:11
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/code/board.rs:93:30
[INFO] [stdout]    |
[INFO] [stdout] 93 |         self.ship_ids.remove(self.ships[self.ships[0].get_ship_id()]);
[INFO] [stdout]    |                       ------ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `&usize`, found `ShipBoundingBox`
[INFO] [stdout]    |                       |
[INFO] [stdout]    |                       arguments to this method are incorrect
[INFO] [stdout]    |
[INFO] [stdout] note: method defined here
[INFO] [stdout]   --> /rustc/24e1a22664233bce1f9b5dc6eee7c1f74327e28c/library/std/src/collections/hash/set.rs:1081:11
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/code/board.rs:100:13
[INFO] [stdout]     |
[INFO] [stdout]  99 | /         if self.guesses.contains_key(&guess) {
[INFO] [stdout] 100 | |             false
[INFO] [stdout]     | |             ^^^^^ expected `()`, found `bool`
[INFO] [stdout] 101 | |         }
[INFO] [stdout]     | |_________- `if` expressions without `else` arms expect their inner expression to be `()`
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to return this value
[INFO] [stdout]     |
[INFO] [stdout] 100 |             return false;
[INFO] [stdout]     |             ++++++      +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/code/board.rs:100:13
[INFO] [stdout]     |
[INFO] [stdout]  99 | /         if self.guesses.contains_key(&guess) {
[INFO] [stdout] 100 | |             false
[INFO] [stdout]     | |             ^^^^^ expected `()`, found `bool`
[INFO] [stdout] 101 | |         }
[INFO] [stdout]     | |_________- `if` expressions without `else` arms expect their inner expression to be `()`
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to return this value
[INFO] [stdout]     |
[INFO] [stdout] 100 |             return false;
[INFO] [stdout]     |             ++++++      +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `push` found for struct `HashMap<K, V, S, A>` in the current scope
[INFO] [stdout]    --> src/code/board.rs:102:22
[INFO] [stdout]     |
[INFO] [stdout] 102 |         self.guesses.push(guess, result);
[INFO] [stdout]     |                      ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to use `insert`
[INFO] [stdout]     |
[INFO] [stdout] 102 -         self.guesses.push(guess, result);
[INFO] [stdout] 102 +         self.guesses.insert(guess, result);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `push` found for struct `HashMap<K, V, S, A>` in the current scope
[INFO] [stdout]    --> src/code/board.rs:102:22
[INFO] [stdout]     |
[INFO] [stdout] 102 |         self.guesses.push(guess, result);
[INFO] [stdout]     |                      ^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to use `insert`
[INFO] [stdout]     |
[INFO] [stdout] 102 -         self.guesses.push(guess, result);
[INFO] [stdout] 102 +         self.guesses.insert(guess, result);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Guess`
[INFO] [stdout]    --> src/code/aistuff.rs:153:52
[INFO] [stdout]     |
[INFO] [stdout] 153 |                         if self.board_status[r][c] == Guess::Miss {
[INFO] [stdout]     |                            ----------------------- ^^ ----------- Guess
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            Guess
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Guess`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 | pub enum Guess {
[INFO] [stdout]     | ^^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout] help: consider annotating `Guess` with `#[derive(PartialEq)]`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 + #[derive(PartialEq)]
[INFO] [stdout]  14 | pub enum Guess {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Guess`
[INFO] [stdout]    --> src/code/aistuff.rs:177:115
[INFO] [stdout]     |
[INFO] [stdout] 177 |                         .filter(|p| p.cells.contains(&hit) && !p.cells.iter().any(|&(r,c)| self.board_status[r][c]==Guess::Miss))
[INFO] [stdout]     |                                                                                            -----------------------^^----------- Guess
[INFO] [stdout]     |                                                                                            |
[INFO] [stdout]     |                                                                                            Guess
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Guess`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 | pub enum Guess {
[INFO] [stdout]     | ^^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout] help: consider annotating `Guess` with `#[derive(PartialEq)]`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 + #[derive(PartialEq)]
[INFO] [stdout]  14 | pub enum Guess {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Guess`
[INFO] [stdout]    --> src/code/aistuff.rs:153:52
[INFO] [stdout]     |
[INFO] [stdout] 153 |                         if self.board_status[r][c] == Guess::Miss {
[INFO] [stdout]     |                            ----------------------- ^^ ----------- Guess
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            Guess
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Guess`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 | pub enum Guess {
[INFO] [stdout]     | ^^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout] help: consider annotating `Guess` with `#[derive(PartialEq)]`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 + #[derive(PartialEq)]
[INFO] [stdout]  14 | pub enum Guess {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Guess`
[INFO] [stdout]    --> src/code/aistuff.rs:374:72
[INFO] [stdout]     |
[INFO] [stdout] 374 |                 if p.cells.iter().any(|&(r,c)| self.board_status[r][c] == Guess::Miss) {
[INFO] [stdout]     |                                                ----------------------- ^^ ----------- Guess
[INFO] [stdout]     |                                                |
[INFO] [stdout]     |                                                Guess
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Guess`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 | pub enum Guess {
[INFO] [stdout]     | ^^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout] help: consider annotating `Guess` with `#[derive(PartialEq)]`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 + #[derive(PartialEq)]
[INFO] [stdout]  14 | pub enum Guess {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Guess`
[INFO] [stdout]    --> src/code/aistuff.rs:392:52
[INFO] [stdout]     |
[INFO] [stdout] 392 |                     if self.board_status[rru][ccu] == Guess::Unknown {
[INFO] [stdout]     |                        --------------------------- ^^ -------------- Guess
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        Guess
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Guess`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 | pub enum Guess {
[INFO] [stdout]     | ^^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout] help: consider annotating `Guess` with `#[derive(PartialEq)]`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 + #[derive(PartialEq)]
[INFO] [stdout]  14 | pub enum Guess {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Mode`
[INFO] [stdout]    --> src/code/aistuff.rs:406:22
[INFO] [stdout]     |
[INFO] [stdout] 406 |         if self.mode == Mode::Targeting && !self.unresolved_hits.is_empty() {
[INFO] [stdout]     |            --------- ^^ --------------- Mode
[INFO] [stdout]     |            |
[INFO] [stdout]     |            Mode
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Mode`
[INFO] [stdout]    --> src/code/enums.rs:57:1
[INFO] [stdout]     |
[INFO] [stdout]  57 | pub enum Mode {
[INFO] [stdout]     | ^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout] help: consider annotating `Mode` with `#[derive(PartialEq)]`
[INFO] [stdout]    --> src/code/enums.rs:57:1
[INFO] [stdout]     |
[INFO] [stdout]  57 + #[derive(PartialEq)]
[INFO] [stdout]  58 | pub enum Mode {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Guess`
[INFO] [stdout]    --> src/code/aistuff.rs:177:115
[INFO] [stdout]     |
[INFO] [stdout] 177 |                         .filter(|p| p.cells.contains(&hit) && !p.cells.iter().any(|&(r,c)| self.board_status[r][c]==Guess::Miss))
[INFO] [stdout]     |                                                                                            -----------------------^^----------- Guess
[INFO] [stdout]     |                                                                                            |
[INFO] [stdout]     |                                                                                            Guess
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Guess`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 | pub enum Guess {
[INFO] [stdout]     | ^^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout] help: consider annotating `Guess` with `#[derive(PartialEq)]`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 + #[derive(PartialEq)]
[INFO] [stdout]  14 | pub enum Guess {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Guess`
[INFO] [stdout]    --> src/code/aistuff.rs:416:56
[INFO] [stdout]     |
[INFO] [stdout] 416 |                         if self.board_status[rru][ccu] == Guess::Unknown {
[INFO] [stdout]     |                            --------------------------- ^^ -------------- Guess
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            Guess
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Guess`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 | pub enum Guess {
[INFO] [stdout]     | ^^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout] help: consider annotating `Guess` with `#[derive(PartialEq)]`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 + #[derive(PartialEq)]
[INFO] [stdout]  14 | pub enum Guess {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `!=` cannot be applied to type `Guess`
[INFO] [stdout]    --> src/code/aistuff.rs:442:44
[INFO] [stdout]     |
[INFO] [stdout] 442 |                 if self.board_status[r][c] != Guess::Unknown { continue; }
[INFO] [stdout]     |                    ----------------------- ^^ -------------- Guess
[INFO] [stdout]     |                    |
[INFO] [stdout]     |                    Guess
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Guess`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 | pub enum Guess {
[INFO] [stdout]     | ^^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout] help: consider annotating `Guess` with `#[derive(PartialEq)]`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 + #[derive(PartialEq)]
[INFO] [stdout]  14 | pub enum Guess {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Intelligence`
[INFO] [stdout]    --> src/code/aistuff.rs:445:38
[INFO] [stdout]     |
[INFO] [stdout] 445 |                 if self.intelligence == Intelligence::Medium {
[INFO] [stdout]     |                    ----------------- ^^ -------------------- Intelligence
[INFO] [stdout]     |                    |
[INFO] [stdout]     |                    Intelligence
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Intelligence`
[INFO] [stdout]    --> src/code/enums.rs:52:1
[INFO] [stdout]     |
[INFO] [stdout]  52 | pub enum Intelligence {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout] help: consider annotating `Intelligence` with `#[derive(PartialEq)]`
[INFO] [stdout]    --> src/code/enums.rs:52:1
[INFO] [stdout]     |
[INFO] [stdout]  52 + #[derive(PartialEq)]
[INFO] [stdout]  53 | pub enum Intelligence {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Guess`
[INFO] [stdout]    --> src/code/aistuff.rs:465:48
[INFO] [stdout]     |
[INFO] [stdout] 465 |                     if self.board_status[r][c] == Guess::Unknown {
[INFO] [stdout]     |                        ----------------------- ^^ -------------- Guess
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        Guess
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Guess`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 | pub enum Guess {
[INFO] [stdout]     | ^^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout] help: consider annotating `Guess` with `#[derive(PartialEq)]`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 + #[derive(PartialEq)]
[INFO] [stdout]  14 | pub enum Guess {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Guess: Clone` is not satisfied
[INFO] [stdout]    --> src/code/aistuff.rs:509:38
[INFO] [stdout]     |
[INFO] [stdout] 509 |         let board_status = vec![vec![Guess::Unknown; cols]; rows];
[INFO] [stdout]     |                                 -----^^^^^^^^^^^^^^-------
[INFO] [stdout]     |                                 |    |
[INFO] [stdout]     |                                 |    the trait `Clone` is not implemented for `Guess`
[INFO] [stdout]     |                                 required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `std::vec::from_elem`
[INFO] [stdout]    --> /rustc/24e1a22664233bce1f9b5dc6eee7c1f74327e28c/library/alloc/src/vec/mod.rs:3777:0
[INFO] [stdout] help: consider annotating `Guess` with `#[derive(Clone)]`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 + #[derive(Clone)]
[INFO] [stdout]  14 | pub enum Guess {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Guess`
[INFO] [stdout]    --> src/code/aistuff.rs:374:72
[INFO] [stdout]     |
[INFO] [stdout] 374 |                 if p.cells.iter().any(|&(r,c)| self.board_status[r][c] == Guess::Miss) {
[INFO] [stdout]     |                                                ----------------------- ^^ ----------- Guess
[INFO] [stdout]     |                                                |
[INFO] [stdout]     |                                                Guess
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Guess`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 | pub enum Guess {
[INFO] [stdout]     | ^^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout] help: consider annotating `Guess` with `#[derive(PartialEq)]`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 + #[derive(PartialEq)]
[INFO] [stdout]  14 | pub enum Guess {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Guess: Clone` is not satisfied
[INFO] [stdout]    --> src/code/aistuff.rs:509:33
[INFO] [stdout]     |
[INFO] [stdout] 509 |         let board_status = vec![vec![Guess::Unknown; cols]; rows];
[INFO] [stdout]     |                            -----^^^^^^^^^^^^^^^^^^^^^^^^^^-------
[INFO] [stdout]     |                            |    |
[INFO] [stdout]     |                            |    the trait `Clone` is not implemented for `Guess`
[INFO] [stdout]     |                            required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = note: required for `Vec<Guess>` to implement `Clone`
[INFO] [stdout] note: required by a bound in `std::vec::from_elem`
[INFO] [stdout]    --> /rustc/24e1a22664233bce1f9b5dc6eee7c1f74327e28c/library/alloc/src/vec/mod.rs:3777:0
[INFO] [stdout] help: consider annotating `Guess` with `#[derive(Clone)]`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 + #[derive(Clone)]
[INFO] [stdout]  14 | pub enum Guess {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Guess`
[INFO] [stdout]    --> src/code/aistuff.rs:392:52
[INFO] [stdout]     |
[INFO] [stdout] 392 |                     if self.board_status[rru][ccu] == Guess::Unknown {
[INFO] [stdout]     |                        --------------------------- ^^ -------------- Guess
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        Guess
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Guess`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 | pub enum Guess {
[INFO] [stdout]     | ^^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout] help: consider annotating `Guess` with `#[derive(PartialEq)]`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 + #[derive(PartialEq)]
[INFO] [stdout]  14 | pub enum Guess {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0271]: expected `IntoIter<ShipType>` to be an iterator that yields `&_`, but it yields `ShipType`
[INFO] [stdout]    --> src/code/aistuff.rs:512:45
[INFO] [stdout]     |
[INFO] [stdout] 512 |         let alive_ships = ships.into_iter().copied().collect();
[INFO] [stdout]     |                                             ^^^^^^ expected `&_`, found `ShipType`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected reference `&_`
[INFO] [stdout]                   found struct `ShipType`
[INFO] [stdout] note: the method call chain might not have had the expected associated types
[INFO] [stdout]    --> src/code/aistuff.rs:512:33
[INFO] [stdout]     |
[INFO] [stdout] 512 |         let alive_ships = ships.into_iter().copied().collect();
[INFO] [stdout]     |                           ----- ^^^^^^^^^^^ `Iterator::Item` is `ShipType` here
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this expression has type `Vec<ShipType>`
[INFO] [stdout] note: required by a bound in `copied`
[INFO] [stdout]    --> /rustc/24e1a22664233bce1f9b5dc6eee7c1f74327e28c/library/core/src/iter/traits/iterator.rs:3511:4
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Mode`
[INFO] [stdout]    --> src/code/aistuff.rs:406:22
[INFO] [stdout]     |
[INFO] [stdout] 406 |         if self.mode == Mode::Targeting && !self.unresolved_hits.is_empty() {
[INFO] [stdout]     |            --------- ^^ --------------- Mode
[INFO] [stdout]     |            |
[INFO] [stdout]     |            Mode
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Mode`
[INFO] [stdout]    --> src/code/enums.rs:57:1
[INFO] [stdout]     |
[INFO] [stdout]  57 | pub enum Mode {
[INFO] [stdout]     | ^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout] help: consider annotating `Mode` with `#[derive(PartialEq)]`
[INFO] [stdout]    --> src/code/enums.rs:57:1
[INFO] [stdout]     |
[INFO] [stdout]  57 + #[derive(PartialEq)]
[INFO] [stdout]  58 | pub enum Mode {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Guess`
[INFO] [stdout]    --> src/code/aistuff.rs:416:56
[INFO] [stdout]     |
[INFO] [stdout] 416 |                         if self.board_status[rru][ccu] == Guess::Unknown {
[INFO] [stdout]     |                            --------------------------- ^^ -------------- Guess
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            Guess
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Guess`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 | pub enum Guess {
[INFO] [stdout]     | ^^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout] help: consider annotating `Guess` with `#[derive(PartialEq)]`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 + #[derive(PartialEq)]
[INFO] [stdout]  14 | pub enum Guess {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `!=` cannot be applied to type `Guess`
[INFO] [stdout]    --> src/code/aistuff.rs:442:44
[INFO] [stdout]     |
[INFO] [stdout] 442 |                 if self.board_status[r][c] != Guess::Unknown { continue; }
[INFO] [stdout]     |                    ----------------------- ^^ -------------- Guess
[INFO] [stdout]     |                    |
[INFO] [stdout]     |                    Guess
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Guess`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 | pub enum Guess {
[INFO] [stdout]     | ^^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout] help: consider annotating `Guess` with `#[derive(PartialEq)]`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 + #[derive(PartialEq)]
[INFO] [stdout]  14 | pub enum Guess {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `collect` exists for struct `Copied<std::vec::IntoIter<ShipType>>`, but its trait bounds were not satisfied
[INFO] [stdout]    --> src/code/aistuff.rs:512:54
[INFO] [stdout]     |
[INFO] [stdout] 512 |         let alive_ships = ships.into_iter().copied().collect();
[INFO] [stdout]     |                                                      ^^^^^^^ method cannot be called on `Copied<std::vec::IntoIter<ShipType>>` due to unsatisfied trait bounds
[INFO] [stdout]     |
[INFO] [stdout]     = note: the following trait bounds were not satisfied:
[INFO] [stdout]             `<std::vec::IntoIter<ShipType> as Iterator>::Item = &_`
[INFO] [stdout]             which is required by `Copied<std::vec::IntoIter<ShipType>>: Iterator`
[INFO] [stdout]             `Copied<std::vec::IntoIter<ShipType>>: Iterator`
[INFO] [stdout]             which is required by `&mut Copied<std::vec::IntoIter<ShipType>>: Iterator`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Intelligence`
[INFO] [stdout]    --> src/code/aistuff.rs:445:38
[INFO] [stdout]     |
[INFO] [stdout] 445 |                 if self.intelligence == Intelligence::Medium {
[INFO] [stdout]     |                    ----------------- ^^ -------------------- Intelligence
[INFO] [stdout]     |                    |
[INFO] [stdout]     |                    Intelligence
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Intelligence`
[INFO] [stdout]    --> src/code/enums.rs:52:1
[INFO] [stdout]     |
[INFO] [stdout]  52 | pub enum Intelligence {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout] help: consider annotating `Intelligence` with `#[derive(PartialEq)]`
[INFO] [stdout]    --> src/code/enums.rs:52:1
[INFO] [stdout]     |
[INFO] [stdout]  52 + #[derive(PartialEq)]
[INFO] [stdout]  53 | pub enum Intelligence {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/code/aistuff.rs:514:13
[INFO] [stdout]     |
[INFO] [stdout] 514 |         for &ship in ships {
[INFO] [stdout]     |             ^^^^^    ----- this is an iterator with items of type `ShipType`
[INFO] [stdout]     |             |
[INFO] [stdout]     |             expected `ShipType`, found `&_`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected struct `ShipType`
[INFO] [stdout]             found reference `&_`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing field `targeting_places` in initializer of `aistuff::AIdata`
[INFO] [stdout]    --> src/code/aistuff.rs:519:9
[INFO] [stdout]     |
[INFO] [stdout] 519 |         Self {
[INFO] [stdout]     |         ^^^^ missing `targeting_places`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Guess`
[INFO] [stdout]    --> src/code/aistuff.rs:465:48
[INFO] [stdout]     |
[INFO] [stdout] 465 |                     if self.board_status[r][c] == Guess::Unknown {
[INFO] [stdout]     |                        ----------------------- ^^ -------------- Guess
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        Guess
[INFO] [stdout]     |
[INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Guess`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 | pub enum Guess {
[INFO] [stdout]     | ^^^^^^^^^^^^^^ must implement `PartialEq`
[INFO] [stdout] help: consider annotating `Guess` with `#[derive(PartialEq)]`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 + #[derive(PartialEq)]
[INFO] [stdout]  14 | pub enum Guess {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Guess: Clone` is not satisfied
[INFO] [stdout]    --> src/code/aistuff.rs:509:38
[INFO] [stdout]     |
[INFO] [stdout] 509 |         let board_status = vec![vec![Guess::Unknown; cols]; rows];
[INFO] [stdout]     |                                 -----^^^^^^^^^^^^^^-------
[INFO] [stdout]     |                                 |    |
[INFO] [stdout]     |                                 |    the trait `Clone` is not implemented for `Guess`
[INFO] [stdout]     |                                 required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout] note: required by a bound in `std::vec::from_elem`
[INFO] [stdout]    --> /rustc/24e1a22664233bce1f9b5dc6eee7c1f74327e28c/library/alloc/src/vec/mod.rs:3777:0
[INFO] [stdout] help: consider annotating `Guess` with `#[derive(Clone)]`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 + #[derive(Clone)]
[INFO] [stdout]  14 | pub enum Guess {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `Guess: Clone` is not satisfied
[INFO] [stdout]    --> src/code/aistuff.rs:509:33
[INFO] [stdout]     |
[INFO] [stdout] 509 |         let board_status = vec![vec![Guess::Unknown; cols]; rows];
[INFO] [stdout]     |                            -----^^^^^^^^^^^^^^^^^^^^^^^^^^-------
[INFO] [stdout]     |                            |    |
[INFO] [stdout]     |                            |    the trait `Clone` is not implemented for `Guess`
[INFO] [stdout]     |                            required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = note: required for `Vec<Guess>` to implement `Clone`
[INFO] [stdout] note: required by a bound in `std::vec::from_elem`
[INFO] [stdout]    --> /rustc/24e1a22664233bce1f9b5dc6eee7c1f74327e28c/library/alloc/src/vec/mod.rs:3777:0
[INFO] [stdout] help: consider annotating `Guess` with `#[derive(Clone)]`
[INFO] [stdout]    --> src/code/enums.rs:13:1
[INFO] [stdout]     |
[INFO] [stdout]  13 + #[derive(Clone)]
[INFO] [stdout]  14 | pub enum Guess {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BufRead`
[INFO] [stdout]  --> src/main.rs:2:21
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::io::{self, BufRead, stdin, BufReader};
[INFO] [stdout]   |                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0271]: expected `IntoIter<ShipType>` to be an iterator that yields `&_`, but it yields `ShipType`
[INFO] [stdout]    --> src/code/aistuff.rs:512:45
[INFO] [stdout]     |
[INFO] [stdout] 512 |         let alive_ships = ships.into_iter().copied().collect();
[INFO] [stdout]     |                                             ^^^^^^ expected `&_`, found `ShipType`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected reference `&_`
[INFO] [stdout]                   found struct `ShipType`
[INFO] [stdout] note: the method call chain might not have had the expected associated types
[INFO] [stdout]    --> src/code/aistuff.rs:512:33
[INFO] [stdout]     |
[INFO] [stdout] 512 |         let alive_ships = ships.into_iter().copied().collect();
[INFO] [stdout]     |                           ----- ^^^^^^^^^^^ `Iterator::Item` is `ShipType` here
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this expression has type `Vec<ShipType>`
[INFO] [stdout] note: required by a bound in `copied`
[INFO] [stdout]    --> /rustc/24e1a22664233bce1f9b5dc6eee7c1f74327e28c/library/core/src/iter/traits/iterator.rs:3511:4
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start_col`
[INFO] [stdout]   --> src/code/board.rs:67:14
[INFO] [stdout]    |
[INFO] [stdout] 67 |         let (start_col, start_row) = start;
[INFO] [stdout]    |              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_start_col`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start_row`
[INFO] [stdout]   --> src/code/board.rs:67:25
[INFO] [stdout]    |
[INFO] [stdout] 67 |         let (start_col, start_row) = start;
[INFO] [stdout]    |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_start_row`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: the method `collect` exists for struct `Copied<std::vec::IntoIter<ShipType>>`, but its trait bounds were not satisfied
[INFO] [stdout]    --> src/code/aistuff.rs:512:54
[INFO] [stdout]     |
[INFO] [stdout] 512 |         let alive_ships = ships.into_iter().copied().collect();
[INFO] [stdout]     |                                                      ^^^^^^^ method cannot be called on `Copied<std::vec::IntoIter<ShipType>>` due to unsatisfied trait bounds
[INFO] [stdout]     |
[INFO] [stdout]     = note: the following trait bounds were not satisfied:
[INFO] [stdout]             `<std::vec::IntoIter<ShipType> as Iterator>::Item = &_`
[INFO] [stdout]             which is required by `Copied<std::vec::IntoIter<ShipType>>: Iterator`
[INFO] [stdout]             `Copied<std::vec::IntoIter<ShipType>>: Iterator`
[INFO] [stdout]             which is required by `&mut Copied<std::vec::IntoIter<ShipType>>: Iterator`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/code/aistuff.rs:514:13
[INFO] [stdout]     |
[INFO] [stdout] 514 |         for &ship in ships {
[INFO] [stdout]     |             ^^^^^    ----- this is an iterator with items of type `ShipType`
[INFO] [stdout]     |             |
[INFO] [stdout]     |             expected `ShipType`, found `&_`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected struct `ShipType`
[INFO] [stdout]             found reference `&_`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing field `targeting_places` in initializer of `aistuff::AIdata`
[INFO] [stdout]    --> src/code/aistuff.rs:519:9
[INFO] [stdout]     |
[INFO] [stdout] 519 |         Self {
[INFO] [stdout]     |         ^^^^ missing `targeting_places`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `tmp_end` is never read
[INFO] [stdout]    --> src/code/board.rs:276:43
[INFO] [stdout]     |
[INFO] [stdout] 276 |         let mut tmp_end: (usize, usize) = (0,0);
[INFO] [stdout]     |                                           ^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 281 |             tmp_end = (start.1, start.0 + ship_id - 1);
[INFO] [stdout]     |             ------------------------------------------ `tmp_end` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BufRead`
[INFO] [stdout]  --> src/main.rs:2:21
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::io::{self, BufRead, stdin, BufReader};
[INFO] [stdout]   |                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start_col`
[INFO] [stdout]   --> src/code/board.rs:67:14
[INFO] [stdout]    |
[INFO] [stdout] 67 |         let (start_col, start_row) = start;
[INFO] [stdout]    |              ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_start_col`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start_row`
[INFO] [stdout]   --> src/code/board.rs:67:25
[INFO] [stdout]    |
[INFO] [stdout] 67 |         let (start_col, start_row) = start;
[INFO] [stdout]    |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_start_row`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `tmp_end` is never read
[INFO] [stdout]    --> src/code/board.rs:276:43
[INFO] [stdout]     |
[INFO] [stdout] 276 |         let mut tmp_end: (usize, usize) = (0,0);
[INFO] [stdout]     |                                           ^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 281 |             tmp_end = (start.1, start.0 + ship_id - 1);
[INFO] [stdout]     |             ------------------------------------------ `tmp_end` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `col_index`
[INFO] [stdout]   --> src/code/datacheck.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 |     let col_index = match col_str.parse::<usize>() {
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_col_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `row_index` is never read
[INFO] [stdout]   --> src/code/datacheck.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 |     row_index -= 1;                         // A is row 0
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `col_index`
[INFO] [stdout]   --> src/code/datacheck.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 |     let col_index = match col_str.parse::<usize>() {
[INFO] [stdout]    |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_col_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `row_index` is never read
[INFO] [stdout]   --> src/code/datacheck.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 |     row_index -= 1;                         // A is row 0
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `fail_str` is never read
[INFO] [stdout]   --> src/code/file.rs:41:40
[INFO] [stdout]    |
[INFO] [stdout] 41 |                     let mut fail_str = "".to_string();
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 44 |                             fail_str = "Error: Failed to load player correctly, too small.".to_string();
[INFO] [stdout]    |                             -------- `fail_str` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `fail_str` is never read
[INFO] [stdout]   --> src/code/file.rs:64:40
[INFO] [stdout]    |
[INFO] [stdout] 64 |                     let mut fail_str = "".to_string();
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 67 |                             fail_str = "Error: Failed to load player correctly, too small.".to_string();
[INFO] [stdout]    |                             -------- `fail_str` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `fail_str` is never read
[INFO] [stdout]   --> src/code/file.rs:87:40
[INFO] [stdout]    |
[INFO] [stdout] 87 |                     let mut fail_str = "".to_string();
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 90 |                             fail_str = "Error: Failed to load player correctly, too small.".to_string();
[INFO] [stdout]    |                             -------- `fail_str` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `fail_str` is never read
[INFO] [stdout]   --> src/code/file.rs:41:40
[INFO] [stdout]    |
[INFO] [stdout] 41 |                     let mut fail_str = "".to_string();
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 44 |                             fail_str = "Error: Failed to load player correctly, too small.".to_string();
[INFO] [stdout]    |                             -------- `fail_str` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `fail_str` is never read
[INFO] [stdout]   --> src/code/file.rs:64:40
[INFO] [stdout]    |
[INFO] [stdout] 64 |                     let mut fail_str = "".to_string();
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 67 |                             fail_str = "Error: Failed to load player correctly, too small.".to_string();
[INFO] [stdout]    |                             -------- `fail_str` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `fail_str` is never read
[INFO] [stdout]   --> src/code/file.rs:87:40
[INFO] [stdout]    |
[INFO] [stdout] 87 |                     let mut fail_str = "".to_string();
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 90 |                             fail_str = "Error: Failed to load player correctly, too small.".to_string();
[INFO] [stdout]    |                             -------- `fail_str` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `myboard`
[INFO] [stdout]    --> src/code/handler.rs:236:21
[INFO] [stdout]     |
[INFO] [stdout] 236 | pub fn handle_guess(myboard: &mut GameData, 
[INFO] [stdout]     |                     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_myboard`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `args_iter`
[INFO] [stdout]    --> src/code/handler.rs:237:5
[INFO] [stdout]     |
[INFO] [stdout] 237 |     args_iter: &mut std::iter::Skip<std::slice::Iter<String>>) {
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_args_iter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `filename`
[INFO] [stdout]    --> src/code/handler.rs:248:13
[INFO] [stdout]     |
[INFO] [stdout] 248 |         let filename = next_guess;                      // Use the filename given
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_filename`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `filename`
[INFO] [stdout]    --> src/code/handler.rs:251:13
[INFO] [stdout]     |
[INFO] [stdout] 251 |         let filename = myboard.get_filename();          // Use the filename in the given board
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_filename`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `my_col`
[INFO] [stdout]    --> src/code/handler.rs:326:14
[INFO] [stdout]     |
[INFO] [stdout] 326 |         let (my_col, my_row) = match utils::translate_query(ship_coords[1]) {
[INFO] [stdout]     |              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_my_col`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `my_row`
[INFO] [stdout]    --> src/code/handler.rs:326:22
[INFO] [stdout]     |
[INFO] [stdout] 326 |         let (my_col, my_row) = match utils::translate_query(ship_coords[1]) {
[INFO] [stdout]     |                      ^^^^^^ help: if this is intentional, prefix it with an underscore: `_my_row`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `myboard`
[INFO] [stdout]    --> src/code/handler.rs:236:21
[INFO] [stdout]     |
[INFO] [stdout] 236 | pub fn handle_guess(myboard: &mut GameData, 
[INFO] [stdout]     |                     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_myboard`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `args_iter`
[INFO] [stdout]    --> src/code/handler.rs:237:5
[INFO] [stdout]     |
[INFO] [stdout] 237 |     args_iter: &mut std::iter::Skip<std::slice::Iter<String>>) {
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_args_iter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `filename`
[INFO] [stdout]    --> src/code/handler.rs:248:13
[INFO] [stdout]     |
[INFO] [stdout] 248 |         let filename = next_guess;                      // Use the filename given
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_filename`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `filename`
[INFO] [stdout]    --> src/code/handler.rs:251:13
[INFO] [stdout]     |
[INFO] [stdout] 251 |         let filename = myboard.get_filename();          // Use the filename in the given board
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_filename`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `tmp_id` is assigned to, but never used
[INFO] [stdout]   --> src/code/interactive.rs:38:21
[INFO] [stdout]    |
[INFO] [stdout] 38 |                 let mut tmp_id: usize = 0;
[INFO] [stdout]    |                     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: consider using `_tmp_id` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `tmp_id` is never read
[INFO] [stdout]   --> src/code/interactive.rs:49:37
[INFO] [stdout]    |
[INFO] [stdout] 49 | ...                   tmp_id = n;
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `my_col`
[INFO] [stdout]    --> src/code/handler.rs:326:14
[INFO] [stdout]     |
[INFO] [stdout] 326 |         let (my_col, my_row) = match utils::translate_query(ship_coords[1]) {
[INFO] [stdout]     |              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_my_col`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `my_row`
[INFO] [stdout]    --> src/code/handler.rs:326:22
[INFO] [stdout]     |
[INFO] [stdout] 326 |         let (my_col, my_row) = match utils::translate_query(ship_coords[1]) {
[INFO] [stdout]     |                      ^^^^^^ help: if this is intentional, prefix it with an underscore: `_my_row`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `tmp_id` is assigned to, but never used
[INFO] [stdout]   --> src/code/interactive.rs:38:21
[INFO] [stdout]    |
[INFO] [stdout] 38 |                 let mut tmp_id: usize = 0;
[INFO] [stdout]    |                     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: consider using `_tmp_id` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `tmp_id` is never read
[INFO] [stdout]   --> src/code/interactive.rs:49:37
[INFO] [stdout]    |
[INFO] [stdout] 49 | ...                   tmp_id = n;
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max_row`
[INFO] [stdout]    --> src/code/utils.rs:150:19
[INFO] [stdout]     |
[INFO] [stdout] 150 |     let (max_col, max_row) = myboard.get_col_row();
[INFO] [stdout]     |                   ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_row`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max_row`
[INFO] [stdout]    --> src/code/utils.rs:150:19
[INFO] [stdout]     |
[INFO] [stdout] 150 |     let (max_col, max_row) = myboard.get_col_row();
[INFO] [stdout]     |                   ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_row`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0063, E0119, E0271, E0277, E0308, E0369, E0425, E0428, E0432...
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0063, E0119, E0271, E0277, E0308, E0369, E0425, E0428, E0432...
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0063`.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0063`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `B_ship_Rust2` (bin "B_ship_Rust2" test) due to 26 previous errors; 30 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stderr] error: could not compile `B_ship_Rust2` (bin "B_ship_Rust2") due to 26 previous errors; 30 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "0eb102063e39e4d4658d688bd9d233f6734016cfc8964c1d8ecc9b5c62517455", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0eb102063e39e4d4658d688bd9d233f6734016cfc8964c1d8ecc9b5c62517455", kill_on_drop: false }`
[INFO] [stdout] 0eb102063e39e4d4658d688bd9d233f6734016cfc8964c1d8ecc9b5c62517455
