[INFO] cloning repository https://github.com/halvorlinder/Connect-4-AI
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/halvorlinder/Connect-4-AI" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhalvorlinder%2FConnect-4-AI", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhalvorlinder%2FConnect-4-AI'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] e1591649d0474d734bf6787559cd9d8db70883c8
[INFO] checking halvorlinder/Connect-4-AI against 1.95.0 for pr-155915
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhalvorlinder%2FConnect-4-AI" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/halvorlinder/Connect-4-AI
[INFO] finished tweaking git repo https://github.com/halvorlinder/Connect-4-AI
[INFO] tweaked toml for git repo https://github.com/halvorlinder/Connect-4-AI written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/halvorlinder/Connect-4-AI 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/halvorlinder/Connect-4-AI 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] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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] 86835b33bd1f30ce85bb6c863e9e376a011ebd9fc082b261071d281ffabe323e
[INFO] running `Command { std: "docker" "start" "-a" "86835b33bd1f30ce85bb6c863e9e376a011ebd9fc082b261071d281ffabe323e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "86835b33bd1f30ce85bb6c863e9e376a011ebd9fc082b261071d281ffabe323e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "86835b33bd1f30ce85bb6c863e9e376a011ebd9fc082b261071d281ffabe323e", kill_on_drop: false }`
[INFO] [stdout] 86835b33bd1f30ce85bb6c863e9e376a011ebd9fc082b261071d281ffabe323e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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] 1924d35a1e6832ef30601040e04564191ebcc091e718fbbc8ad30407e50f8706
[INFO] running `Command { std: "docker" "start" "-a" "1924d35a1e6832ef30601040e04564191ebcc091e718fbbc8ad30407e50f8706", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.138
[INFO] [stderr]    Compiling num-integer v0.1.45
[INFO] [stderr]    Compiling proc-macro2 v1.0.49
[INFO] [stderr]     Checking num-traits v0.2.15
[INFO] [stderr]    Compiling num-iter v0.1.43
[INFO] [stderr]    Compiling syn v1.0.107
[INFO] [stderr]    Compiling rustversion v1.0.11
[INFO] [stderr]    Compiling matrixmultiply v0.1.15
[INFO] [stderr]     Checking strum v0.24.1
[INFO] [stderr]     Checking getrandom v0.2.8
[INFO] [stderr]    Compiling quote v1.0.23
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking num v0.1.42
[INFO] [stderr]     Checking rulinalg v0.4.2
[INFO] [stderr]    Compiling strum_macros v0.24.3
[INFO] [stderr]     Checking four-in-a-row v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `GameState`, `get_legal`, `play`, and `result`
[INFO] [stdout]  --> src/main.rs:2:25
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::game_logic::{GameState, get_legal, play, result};
[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: `std::borrow::Borrow`
[INFO] [stdout]  --> src/game_logic.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::borrow::Borrow;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused macro definition: `vec2d`
[INFO] [stdout]  --> src/game_logic.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 | macro_rules!vec2d {
[INFO] [stdout]   |             ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_macros)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/game_logic.rs:27:17
[INFO] [stdout]    |
[INFO] [stdout] 27 |                 (Player::P1) => "\u{001b}[31mP1\u{001b}[0m",
[INFO] [stdout]    |                 ^          ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 27 -                 (Player::P1) => "\u{001b}[31mP1\u{001b}[0m",
[INFO] [stdout] 27 +                 Player::P1  => "\u{001b}[31mP1\u{001b}[0m",
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/game_logic.rs:28:17
[INFO] [stdout]    |
[INFO] [stdout] 28 |                 (Player::P2) => "\u{001b}[33mP2\u{001b}[0m",
[INFO] [stdout]    |                 ^          ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 28 -                 (Player::P2) => "\u{001b}[33mP2\u{001b}[0m",
[INFO] [stdout] 28 +                 Player::P2  => "\u{001b}[33mP2\u{001b}[0m",
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around closure body
[INFO] [stdout]    --> src/game_logic.rs:141:28
[INFO] [stdout]     |
[INFO] [stdout] 141 |     (0..gs.cols).map(|mov| ( legal_in_col(gs.clone(), mov) )).flatten().collect()
[INFO] [stdout]     |                            ^^                             ^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 141 -     (0..gs.cols).map(|mov| ( legal_in_col(gs.clone(), mov) )).flatten().collect()
[INFO] [stdout] 141 +     (0..gs.cols).map(|mov| legal_in_col(gs.clone(), mov) ).flatten().collect()
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rulinalg::utils`
[INFO] [stdout]  --> src/game.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use rulinalg::utils;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/game.rs:85:38
[INFO] [stdout]    |
[INFO] [stdout] 85 |         let agent : Box<dyn Agent> = (match agent_type {
[INFO] [stdout]    |                                      ^
[INFO] [stdout] ...
[INFO] [stdout] 89 |         });
[INFO] [stdout]    |          ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 85 ~         let agent : Box<dyn Agent> = match agent_type {
[INFO] [stdout] 86 |             Agents::Human => Box::new(Human::new()),
[INFO] [stdout] 87 |             Agents::RandomMover => Box::new(RandomMover::new()),
[INFO] [stdout] 88 |             Agents::MinMaxAgent => Box::new(MinMaxAgent::new()),
[INFO] [stdout] 89 ~         } ;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/game_logic.rs:29:17
[INFO] [stdout]    |
[INFO] [stdout] 29 |                 _ => {""}
[INFO] [stdout]    |                 ^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]   --> src/game_logic.rs:29:17
[INFO] [stdout]    |
[INFO] [stdout] 27 |                 (Player::P1) => "\u{001b}[31mP1\u{001b}[0m",
[INFO] [stdout]    |                  ---------- matches some of the same values
[INFO] [stdout] 28 |                 (Player::P2) => "\u{001b}[33mP2\u{001b}[0m",
[INFO] [stdout]    |                  ---------- matches some of the same values
[INFO] [stdout] 29 |                 _ => {""}
[INFO] [stdout]    |                 ^ collectively making this unreachable
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `GameState`, `get_legal`, `play`, and `result`
[INFO] [stdout]  --> src/main.rs:2:25
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::game_logic::{GameState, get_legal, play, result};
[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: `std::borrow::Borrow`
[INFO] [stdout]  --> src/game_logic.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::borrow::Borrow;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/game_logic.rs:27:17
[INFO] [stdout]    |
[INFO] [stdout] 27 |                 (Player::P1) => "\u{001b}[31mP1\u{001b}[0m",
[INFO] [stdout]    |                 ^          ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 27 -                 (Player::P1) => "\u{001b}[31mP1\u{001b}[0m",
[INFO] [stdout] 27 +                 Player::P1  => "\u{001b}[31mP1\u{001b}[0m",
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]   --> src/game_logic.rs:28:17
[INFO] [stdout]    |
[INFO] [stdout] 28 |                 (Player::P2) => "\u{001b}[33mP2\u{001b}[0m",
[INFO] [stdout]    |                 ^          ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 28 -                 (Player::P2) => "\u{001b}[33mP2\u{001b}[0m",
[INFO] [stdout] 28 +                 Player::P2  => "\u{001b}[33mP2\u{001b}[0m",
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around closure body
[INFO] [stdout]    --> src/game_logic.rs:141:28
[INFO] [stdout]     |
[INFO] [stdout] 141 |     (0..gs.cols).map(|mov| ( legal_in_col(gs.clone(), mov) )).flatten().collect()
[INFO] [stdout]     |                            ^^                             ^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 141 -     (0..gs.cols).map(|mov| ( legal_in_col(gs.clone(), mov) )).flatten().collect()
[INFO] [stdout] 141 +     (0..gs.cols).map(|mov| legal_in_col(gs.clone(), mov) ).flatten().collect()
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rulinalg::utils`
[INFO] [stdout]  --> src/game.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use rulinalg::utils;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/game.rs:85:38
[INFO] [stdout]    |
[INFO] [stdout] 85 |         let agent : Box<dyn Agent> = (match agent_type {
[INFO] [stdout]    |                                      ^
[INFO] [stdout] ...
[INFO] [stdout] 89 |         });
[INFO] [stdout]    |          ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 85 ~         let agent : Box<dyn Agent> = match agent_type {
[INFO] [stdout] 86 |             Agents::Human => Box::new(Human::new()),
[INFO] [stdout] 87 |             Agents::RandomMover => Box::new(RandomMover::new()),
[INFO] [stdout] 88 |             Agents::MinMaxAgent => Box::new(MinMaxAgent::new()),
[INFO] [stdout] 89 ~         } ;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new_from_board` is never used
[INFO] [stdout]   --> src/game_logic.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 68 | impl GameState {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn new_from_board(raw_board: Vec<Vec<i8>>) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/game_logic.rs:29:17
[INFO] [stdout]    |
[INFO] [stdout] 29 |                 _ => {""}
[INFO] [stdout]    |                 ^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]   --> src/game_logic.rs:29:17
[INFO] [stdout]    |
[INFO] [stdout] 27 |                 (Player::P1) => "\u{001b}[31mP1\u{001b}[0m",
[INFO] [stdout]    |                  ---------- matches some of the same values
[INFO] [stdout] 28 |                 (Player::P2) => "\u{001b}[33mP2\u{001b}[0m",
[INFO] [stdout]    |                  ---------- matches some of the same values
[INFO] [stdout] 29 |                 _ => {""}
[INFO] [stdout]    |                 ^ collectively making this unreachable
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 7.69s
[INFO] running `Command { std: "docker" "inspect" "1924d35a1e6832ef30601040e04564191ebcc091e718fbbc8ad30407e50f8706", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1924d35a1e6832ef30601040e04564191ebcc091e718fbbc8ad30407e50f8706", kill_on_drop: false }`
[INFO] [stdout] 1924d35a1e6832ef30601040e04564191ebcc091e718fbbc8ad30407e50f8706
