[INFO] cloning repository https://github.com/davetttt/ttt_rust
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/davetttt/ttt_rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdavetttt%2Fttt_rust", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdavetttt%2Fttt_rust'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] da0b52d21262d7f8c8fc70ea1f5b02a978d43af2
[INFO] checking davetttt/ttt_rust against try#6284d7b4bd27983dba388146648ab844ca7d032f for pr-152971
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdavetttt%2Fttt_rust" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/davetttt/ttt_rust
[INFO] finished tweaking git repo https://github.com/davetttt/ttt_rust
[INFO] tweaked toml for git repo https://github.com/davetttt/ttt_rust written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/davetttt/ttt_rust on toolchain 6284d7b4bd27983dba388146648ab844ca7d032f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+6284d7b4bd27983dba388146648ab844ca7d032f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/davetttt/ttt_rust 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" "+6284d7b4bd27983dba388146648ab844ca7d032f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[ERROR] error running command: no output for 300 seconds
[INFO] checking davetttt/ttt_rust against try#6284d7b4bd27983dba388146648ab844ca7d032f for pr-152971
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdavetttt%2Fttt_rust" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/davetttt/ttt_rust
[INFO] finished tweaking git repo https://github.com/davetttt/ttt_rust
[INFO] tweaked toml for git repo https://github.com/davetttt/ttt_rust written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/davetttt/ttt_rust on toolchain 6284d7b4bd27983dba388146648ab844ca7d032f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+6284d7b4bd27983dba388146648ab844ca7d032f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/davetttt/ttt_rust 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" "+6284d7b4bd27983dba388146648ab844ca7d032f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/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:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+6284d7b4bd27983dba388146648ab844ca7d032f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 90bd470265aeba2c858d6acde355a5cec4233a370e23a41c723dbe793b8f8ef4
[INFO] running `Command { std: "docker" "start" "-a" "90bd470265aeba2c858d6acde355a5cec4233a370e23a41c723dbe793b8f8ef4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "90bd470265aeba2c858d6acde355a5cec4233a370e23a41c723dbe793b8f8ef4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "90bd470265aeba2c858d6acde355a5cec4233a370e23a41c723dbe793b8f8ef4", kill_on_drop: false }`
[INFO] [stdout] 90bd470265aeba2c858d6acde355a5cec4233a370e23a41c723dbe793b8f8ef4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/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:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+6284d7b4bd27983dba388146648ab844ca7d032f" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 398ea1ea5c15fc44b1b533131b3f58e72c593874f9d59ad09d1f4b784ec4a810
[INFO] running `Command { std: "docker" "start" "-a" "398ea1ea5c15fc44b1b533131b3f58e72c593874f9d59ad09d1f4b784ec4a810", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]     Checking ttt_rust v0.0.1 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0432]: unresolved import `std::io::BufferedReader`
[INFO] [stdout]  --> src/io.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::BufferedReader;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^ no `BufferedReader` in `io`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `range` in this scope
[INFO] [stdout]   --> src/minimax.rs:34:18
[INFO] [stdout]    |
[INFO] [stdout] 34 |     for index in range(0, scores.len()) {
[INFO] [stdout]    |                  ^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this function
[INFO] [stdout]    |
[INFO] [stdout]  1 + use std::slice::range;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `range` in this scope
[INFO] [stdout]   --> src/minimax.rs:46:18
[INFO] [stdout]    |
[INFO] [stdout] 46 |     for index in range(0, scores.len()) {
[INFO] [stdout]    |                  ^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this function
[INFO] [stdout]    |
[INFO] [stdout]  1 + use std::slice::range;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::game::*`
[INFO] [stdout]  --> src/game_test.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use super::game::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]  --> src/main.rs:6:1
[INFO] [stdout]   |
[INFO] [stdout] 6 | mod game_test;
[INFO] [stdout]   | ^^^^^^^^^^^^^^
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::player::*`
[INFO] [stdout]  --> src/game_test.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use super::player::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]  --> src/main.rs:6:1
[INFO] [stdout]   |
[INFO] [stdout] 6 | mod game_test;
[INFO] [stdout]   | ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::io::*`
[INFO] [stdout]  --> src/io_test.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use super::io::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]  --> src/main.rs:8:1
[INFO] [stdout]   |
[INFO] [stdout] 8 | mod io_test;
[INFO] [stdout]   | ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: patterns aren't allowed in functions without bodies
[INFO] [stdout]  --> src/player.rs:6:24
[INFO] [stdout]   |
[INFO] [stdout] 6 |     fn get_move(&self, mut board: Board) -> usize;
[INFO] [stdout]   |                        ^^^^^^^^^ help: remove `mut` from the parameter: `board`
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]   = note: for more information, see issue #35203 <https://github.com/rust-lang/rust/issues/35203>
[INFO] [stdout]   = note: `#[deny(patterns_in_fns_without_body)]` (part of `#[deny(future_incompatible)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::player::*`
[INFO] [stdout]   --> src/player_test.rs:1:5
[INFO] [stdout]    |
[INFO] [stdout]  1 | use super::player::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/main.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | mod player_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::io::*`
[INFO] [stdout]   --> src/player_test.rs:2:5
[INFO] [stdout]    |
[INFO] [stdout]  2 | use super::io::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/main.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | mod player_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::board::*`
[INFO] [stdout]   --> src/player_test.rs:3:5
[INFO] [stdout]    |
[INFO] [stdout]  3 | use super::board::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/main.rs:10:1
[INFO] [stdout]    |
[INFO] [stdout] 10 | mod player_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::board::*`
[INFO] [stdout]   --> src/board_test.rs:1:5
[INFO] [stdout]    |
[INFO] [stdout]  1 | use super::board::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/main.rs:12:1
[INFO] [stdout]    |
[INFO] [stdout] 12 | mod board_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::rules::*`
[INFO] [stdout]   --> src/rules_test.rs:1:5
[INFO] [stdout]    |
[INFO] [stdout]  1 | use super::rules::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/main.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | mod rules_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::board::*`
[INFO] [stdout]   --> src/rules_test.rs:2:5
[INFO] [stdout]    |
[INFO] [stdout]  2 | use super::board::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/main.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | mod rules_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::minimax::*`
[INFO] [stdout]   --> src/minimax_test.rs:1:5
[INFO] [stdout]    |
[INFO] [stdout]  1 | use super::minimax::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/main.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | mod minimax_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::board::*`
[INFO] [stdout]   --> src/minimax_test.rs:2:5
[INFO] [stdout]    |
[INFO] [stdout]  2 | use super::board::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is a test module, consider adding a `#[cfg(test)]` to the containing module
[INFO] [stdout]   --> src/main.rs:16:1
[INFO] [stdout]    |
[INFO] [stdout] 16 | mod minimax_test;
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: invalid suffix `us` for number literal
[INFO] [stdout]  --> src/board.rs:8:24
[INFO] [stdout]   |
[INFO] [stdout] 8 |         Board { board:[0us; 9] }
[INFO] [stdout]   |                        ^^^ invalid suffix `us`
[INFO] [stdout]   |
[INFO] [stdout]   = help: the suffix must be one of the numeric types (`u32`, `isize`, `f32`, etc.)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/player.rs:50:36
[INFO] [stdout]    |
[INFO] [stdout] 50 |         let space: Option<usize> = response.trim().parse();
[INFO] [stdout]    |                    -------------   ^^^^^^^^^^^^^^^^^^^^^^^ expected `Option<usize>`, found `Result<_, _>`
[INFO] [stdout]    |                    |
[INFO] [stdout]    |                    expected due to this
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected enum `Option<usize>`
[INFO] [stdout]               found enum `Result<_, _>`
[INFO] [stdout] help: consider using `Result::expect` to unwrap the `Result<_, _>` value, panicking if the value is a `Result::Err`
[INFO] [stdout]    |
[INFO] [stdout] 50 |         let space: Option<usize> = response.trim().parse().expect("REASON");
[INFO] [stdout]    |                                                           +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `std::io::BufferedReader`
[INFO] [stdout]  --> src/io.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::BufferedReader;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^ no `BufferedReader` in `io`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `range` in this scope
[INFO] [stdout]   --> src/minimax.rs:34:18
[INFO] [stdout]    |
[INFO] [stdout] 34 |     for index in range(0, scores.len()) {
[INFO] [stdout]    |                  ^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this function
[INFO] [stdout]    |
[INFO] [stdout]  1 + use std::slice::range;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function `range` in this scope
[INFO] [stdout]   --> src/minimax.rs:46:18
[INFO] [stdout]    |
[INFO] [stdout] 46 |     for index in range(0, scores.len()) {
[INFO] [stdout]    |                  ^^^^^ not found in this scope
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this function
[INFO] [stdout]    |
[INFO] [stdout]  1 + use std::slice::range;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: patterns aren't allowed in functions without bodies
[INFO] [stdout]  --> src/player.rs:6:24
[INFO] [stdout]   |
[INFO] [stdout] 6 |     fn get_move(&self, mut board: Board) -> usize;
[INFO] [stdout]   |                        ^^^^^^^^^ help: remove `mut` from the parameter: `board`
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]   = note: for more information, see issue #35203 <https://github.com/rust-lang/rust/issues/35203>
[INFO] [stdout]   = note: `#[deny(patterns_in_fns_without_body)]` (part of `#[deny(future_incompatible)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: invalid suffix `us` for number literal
[INFO] [stdout]  --> src/board.rs:8:24
[INFO] [stdout]   |
[INFO] [stdout] 8 |         Board { board:[0us; 9] }
[INFO] [stdout]   |                        ^^^ invalid suffix `us`
[INFO] [stdout]   |
[INFO] [stdout]   = help: the suffix must be one of the numeric types (`u32`, `isize`, `f32`, etc.)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `as_slice` found for struct `String` in the current scope
[INFO] [stdout]   --> src/board.rs:32:37
[INFO] [stdout]    |
[INFO] [stdout] 30 |               result.push_str(format!(" {} |",
[INFO] [stdout]    |  _____________________________-
[INFO] [stdout] 31 | |                                     self.render_token(*space)).
[INFO] [stdout] 32 | |                                     as_slice());
[INFO] [stdout]    | |                                    -^^^^^^^^ method not found in `String`
[INFO] [stdout]    | |____________________________________|
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `as_slice` found for struct `String` in the current scope
[INFO] [stdout]   --> src/board.rs:47:69
[INFO] [stdout]    |
[INFO] [stdout] 47 |             result.push_str((format!("\n{}", self.render_row(row))).as_slice());
[INFO] [stdout]    |                                                                     ^^^^^^^^ method not found in `String`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `is_some` found for enum `Result<T, E>` in the current scope
[INFO] [stdout]   --> src/main.rs:34:19
[INFO] [stdout]    |
[INFO] [stdout] 34 |         if choice.is_some() && [1, 2, 3].contains(&choice.unwrap()) {
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `is_ok` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 34 -         if choice.is_some() && [1, 2, 3].contains(&choice.unwrap()) {
[INFO] [stdout] 34 +         if choice.is_ok() && [1, 2, 3].contains(&choice.unwrap()) {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `statement`
[INFO] [stdout]   --> src/io.rs:20:21
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn print(&self, statement: String) {}
[INFO] [stdout]    |                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_statement`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `question`
[INFO] [stdout]   --> src/io.rs:22:22
[INFO] [stdout]    |
[INFO] [stdout] 22 |     fn prompt(&self, question: String) -> String {
[INFO] [stdout]    |                      ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_question`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/player.rs:21:24
[INFO] [stdout]    |
[INFO] [stdout] 21 |     fn get_move(&self, mut board: Board) -> usize {
[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/minimax.rs:4:18
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn get_score(mut board: &Board) -> isize {
[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/minimax.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 |     let mut score = (board.number_of_spaces() + 1) as isize;
[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/minimax.rs:13:18
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn get_token(mut board: &Board) -> usize {
[INFO] [stdout]    |                  ----^^^^^
[INFO] [stdout]    |                  |
[INFO] [stdout]    |                  help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `index` is never read
[INFO] [stdout]   --> src/minimax.rs:64:25
[INFO] [stdout]    |
[INFO] [stdout] 64 |         let mut index = 0;
[INFO] [stdout]    |                         ^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `as_slice` found for struct `String` in the current scope
[INFO] [stdout]  --> src/io_test.rs:7:46
[INFO] [stdout]   |
[INFO] [stdout] 7 |     assert_eq!("answer", io.prompt(question).as_slice());
[INFO] [stdout]   |                                              ^^^^^^^^ method not found in `String`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0308, E0425, E0432, E0599.
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/player.rs:50:36
[INFO] [stdout]    |
[INFO] [stdout] 50 |         let space: Option<usize> = response.trim().parse();
[INFO] [stdout]    |                    -------------   ^^^^^^^^^^^^^^^^^^^^^^^ expected `Option<usize>`, found `Result<_, _>`
[INFO] [stdout]    |                    |
[INFO] [stdout]    |                    expected due to this
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected enum `Option<usize>`
[INFO] [stdout]               found enum `Result<_, _>`
[INFO] [stdout] help: consider using `Result::expect` to unwrap the `Result<_, _>` value, panicking if the value is a `Result::Err`
[INFO] [stdout]    |
[INFO] [stdout] 50 |         let space: Option<usize> = response.trim().parse().expect("REASON");
[INFO] [stdout]    |                                                           +++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0308`.
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `as_slice` found for struct `String` in the current scope
[INFO] [stdout]   --> src/board.rs:32:37
[INFO] [stdout]    |
[INFO] [stdout] 30 |               result.push_str(format!(" {} |",
[INFO] [stdout]    |  _____________________________-
[INFO] [stdout] 31 | |                                     self.render_token(*space)).
[INFO] [stdout] 32 | |                                     as_slice());
[INFO] [stdout]    | |                                    -^^^^^^^^ method not found in `String`
[INFO] [stdout]    | |____________________________________|
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `as_slice` found for struct `String` in the current scope
[INFO] [stdout]   --> src/board.rs:47:69
[INFO] [stdout]    |
[INFO] [stdout] 47 |             result.push_str((format!("\n{}", self.render_row(row))).as_slice());
[INFO] [stdout]    |                                                                     ^^^^^^^^ method not found in `String`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `ttt_rust` (bin "ttt_rust") due to 9 previous errors; 18 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error[E0599]: no method named `is_some` found for enum `Result<T, E>` in the current scope
[INFO] [stdout]   --> src/main.rs:34:19
[INFO] [stdout]    |
[INFO] [stdout] 34 |         if choice.is_some() && [1, 2, 3].contains(&choice.unwrap()) {
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `is_ok` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 34 -         if choice.is_some() && [1, 2, 3].contains(&choice.unwrap()) {
[INFO] [stdout] 34 +         if choice.is_ok() && [1, 2, 3].contains(&choice.unwrap()) {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `statement`
[INFO] [stdout]   --> src/io.rs:20:21
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn print(&self, statement: String) {}
[INFO] [stdout]    |                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_statement`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `question`
[INFO] [stdout]   --> src/io.rs:22:22
[INFO] [stdout]    |
[INFO] [stdout] 22 |     fn prompt(&self, question: String) -> String {
[INFO] [stdout]    |                      ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_question`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/player.rs:21:24
[INFO] [stdout]    |
[INFO] [stdout] 21 |     fn get_move(&self, mut board: Board) -> usize {
[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/rules_test.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 |     let mut board = Board::new();
[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/minimax.rs:4:18
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn get_score(mut board: &Board) -> isize {
[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/minimax.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 |     let mut score = (board.number_of_spaces() + 1) as isize;
[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/minimax.rs:13:18
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn get_token(mut board: &Board) -> usize {
[INFO] [stdout]    |                  ----^^^^^
[INFO] [stdout]    |                  |
[INFO] [stdout]    |                  help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `index` is never read
[INFO] [stdout]   --> src/minimax.rs:64:25
[INFO] [stdout]    |
[INFO] [stdout] 64 |         let mut index = 0;
[INFO] [stdout]    |                         ^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> src/minimax_test.rs:67:13
[INFO] [stdout]    |
[INFO] [stdout] 67 |         Err(e) => 999,
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0308, E0425, E0432, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0308`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `ttt_rust` (bin "ttt_rust" test) due to 10 previous errors; 9 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "398ea1ea5c15fc44b1b533131b3f58e72c593874f9d59ad09d1f4b784ec4a810", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "398ea1ea5c15fc44b1b533131b3f58e72c593874f9d59ad09d1f4b784ec4a810", kill_on_drop: false }`
[INFO] [stdout] 398ea1ea5c15fc44b1b533131b3f58e72c593874f9d59ad09d1f4b784ec4a810
