[INFO] cloning repository https://github.com/BenoitGandon/TicTacToe [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/BenoitGandon/TicTacToe" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBenoitGandon%2FTicTacToe", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBenoitGandon%2FTicTacToe'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 6a8d4c6b3e00523ae17743c9549de8ef26d3279a [INFO] building BenoitGandon/TicTacToe against master#11663cd3bfefef7d34e8f0892c250bf698049392+rustflags=-Dtail-expr-drop-order for pr-134523 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBenoitGandon%2FTicTacToe" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/BenoitGandon/TicTacToe on toolchain 11663cd3bfefef7d34e8f0892c250bf698049392 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+11663cd3bfefef7d34e8f0892c250bf698049392" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/BenoitGandon/TicTacToe [INFO] finished tweaking git repo https://github.com/BenoitGandon/TicTacToe [INFO] tweaked toml for git repo https://github.com/BenoitGandon/TicTacToe written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] crate git repo https://github.com/BenoitGandon/TicTacToe 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" "+11663cd3bfefef7d34e8f0892c250bf698049392" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded getrandom v0.2.11 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+11663cd3bfefef7d34e8f0892c250bf698049392" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 86e9eee432243f62bf9d9b11d34194710c2d3c65f50af2542c089f6661afd2e5 [INFO] running `Command { std: "docker" "start" "-a" "86e9eee432243f62bf9d9b11d34194710c2d3c65f50af2542c089f6661afd2e5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "86e9eee432243f62bf9d9b11d34194710c2d3c65f50af2542c089f6661afd2e5", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "86e9eee432243f62bf9d9b11d34194710c2d3c65f50af2542c089f6661afd2e5", kill_on_drop: false }` [INFO] [stdout] 86e9eee432243f62bf9d9b11d34194710c2d3c65f50af2542c089f6661afd2e5 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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 -Dtail-expr-drop-order" "-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:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+11663cd3bfefef7d34e8f0892c250bf698049392" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 149cbc21d376954fb9319f0b1d3374059ca7ab22804063ed50ec04b2f6b25a3a [INFO] running `Command { std: "docker" "start" "-a" "149cbc21d376954fb9319f0b1d3374059ca7ab22804063ed50ec04b2f6b25a3a", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.151 [INFO] [stderr] Compiling ppv-lite86 v0.2.17 [INFO] [stderr] Compiling getrandom v0.2.11 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling rand v0.8.5 [INFO] [stderr] Compiling ttt v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::io` [INFO] [stdout] --> src/ttt_env_v5.2.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::io; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::cmp` [INFO] [stdout] --> src/ttt_env_v5.2.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | use std::cmp; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around type [INFO] [stdout] --> src/ttt_env_v5.2.rs:353:49 [INFO] [stdout] | [INFO] [stdout] 353 | fn get_leaf_game_state(&self, node_id:&str) -> (TttEnv) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 353 - fn get_leaf_game_state(&self, node_id:&str) -> (TttEnv) { [INFO] [stdout] 353 + fn get_leaf_game_state(&self, node_id:&str) -> TttEnv { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused macro definition: `min_max` [INFO] [stdout] --> src/ttt_env_v5.2.rs:563:14 [INFO] [stdout] | [INFO] [stdout] 563 | macro_rules! min_max { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_macros)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/ttt_env_v5.2.rs:581:14 [INFO] [stdout] | [INFO] [stdout] 581 | let value = (board[0]*board[1]*board[2] + [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 588 | board[2]*board[4]*board[6] ); [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 581 ~ let value = board[0]*board[1]*board[2] + [INFO] [stdout] 582 | board[3]*board[4]*board[5] + [INFO] [stdout] ... [INFO] [stdout] 587 | board[0]*board[4]*board[8] + [INFO] [stdout] 588 ~ board[2]*board[4]*board[6]; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused macro definition: `parse_input` [INFO] [stdout] --> src/ttt_env_v5.2.rs:1000:14 [INFO] [stdout] | [INFO] [stdout] 1000 | macro_rules! parse_input { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/ttt_env_v5.2.rs:360:25 [INFO] [stdout] | [INFO] [stdout] 360 | self.node_map.retain(|id, node| { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/ttt_env_v5.2.rs:465:7 [INFO] [stdout] | [INFO] [stdout] 465 | let mut test_env = game_state.clone(); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `nb_evaluation_sim` [INFO] [stdout] --> src/ttt_env_v5.2.rs:911:37 [INFO] [stdout] | [INFO] [stdout] 911 | fn overboard_evaluation(node:&Node, nb_evaluation_sim:u32) -> f32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nb_evaluation_sim` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `action` is never read [INFO] [stdout] --> src/ttt_env_v5.2.rs:942:12 [INFO] [stdout] | [INFO] [stdout] 942 | let mut action = (0u8,0u8); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `mcts_value` is never read [INFO] [stdout] --> src/ttt_env_v5.2.rs:943:12 [INFO] [stdout] | [INFO] [stdout] 943 | let mut mcts_value = 0.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 `estimated_value` is never read [INFO] [stdout] --> src/ttt_env_v5.2.rs:944:12 [INFO] [stdout] | [INFO] [stdout] 944 | let mut estimated_value = 0.0; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/ttt_env_v5.2.rs:1019:6 [INFO] [stdout] | [INFO] [stdout] 1019 | let mut env = TttEnv {..Default::default()}; [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `set_state` and `save_state` are never used [INFO] [stdout] --> src/ttt_env_v5.2.rs:226:5 [INFO] [stdout] | [INFO] [stdout] 86 | impl TttEnv { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 226 | fn set_state(&mut self, board:[[i8;9];9], last_move:Option<(u8,u8)>, player_turn: i8) -> () { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 239 | fn save_state(&self) -> ([[i8;9];9], Option<(u8,u8)>, i8, GameStatus) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `xy_to_gn` is never used [INFO] [stdout] --> src/ttt_env_v5.2.rs:542:4 [INFO] [stdout] | [INFO] [stdout] 542 | fn xy_to_gn(x:u8, y:u8) -> (u8, u8) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `gn_to_xy` is never used [INFO] [stdout] --> src/ttt_env_v5.2.rs:547:4 [INFO] [stdout] | [INFO] [stdout] 547 | fn gn_to_xy(gn:(u8, u8)) -> (u8, u8) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `min_max` is never used [INFO] [stdout] --> src/ttt_env_v5.2.rs:552:4 [INFO] [stdout] | [INFO] [stdout] 552 | fn min_max(min_max:(i8,i8),value:i8) -> (i8,i8) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `action_values_evaluation` is never used [INFO] [stdout] --> src/ttt_env_v5.2.rs:858:4 [INFO] [stdout] | [INFO] [stdout] 858 | fn action_values_evaluation(node:&Node, nb_evaluation_sim:u32) -> f32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `timer_agent` is never used [INFO] [stdout] --> src/ttt_env_v5.2.rs:981:4 [INFO] [stdout] | [INFO] [stdout] 981 | fn timer_agent(agent: &mut Agent, env:&TttEnv, nb_simu:u32)->() { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_Won` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:51:18 [INFO] [stdout] | [INFO] [stdout] 51 | pub const fn is_Won(&self) -> bool { [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case (notice the capitalization): `is_won` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/ttt_env_v5.2.rs:81:3 [INFO] [stdout] | [INFO] [stdout] 81 | write!(f, "Game status: {:?}, last_move: {:?}, player_turn: {}\n", self.status, self.last_move, self.player_turn); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] = note: this warning originates in the macro `write` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `N` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:281:2 [INFO] [stdout] | [INFO] [stdout] 281 | N: u32, // nb of time node have been reach [INFO] [stdout] | ^ help: convert the identifier to snake case: `n` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `W` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:282:2 [INFO] [stdout] | [INFO] [stdout] 282 | W: f32, // total value of next state [INFO] [stdout] | ^ help: convert the identifier to snake case (notice the capitalization): `w` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `Q` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:283:2 [INFO] [stdout] | [INFO] [stdout] 283 | Q: f32, // mean value of the next state = W/N [INFO] [stdout] | ^ help: convert the identifier to snake case: `q` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `P` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:284:2 [INFO] [stdout] | [INFO] [stdout] 284 | P: f32, // prior value (base on NN or opportunity move) [INFO] [stdout] | ^ help: convert the identifier to snake case: `p` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `max_QU` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:302:12 [INFO] [stdout] | [INFO] [stdout] 302 | let mut max_QU = -99999.0; [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `max_qu` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `Nb` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:304:12 [INFO] [stdout] | [INFO] [stdout] 304 | let mut Nb:u32 = 0; [INFO] [stdout] | ^^ help: convert the identifier to snake case: `nb` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `Q` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:313:9 [INFO] [stdout] | [INFO] [stdout] 313 | let Q = edge.Q; [INFO] [stdout] | ^ help: convert the identifier to snake case: `q` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `U` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:314:9 [INFO] [stdout] | [INFO] [stdout] 314 | let U = self.cpuct * edge.P * (Nb as f32).sqrt() / (1.0 + edge.N as f32); [INFO] [stdout] | ^ help: convert the identifier to snake case (notice the capitalization): `u` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `new_Agent` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:514:4 [INFO] [stdout] | [INFO] [stdout] 514 | fn new_Agent(env:&TttEnv, cpuct:f32, nb_evaluation_sim:u32, evaluation_method:fn(&Node, u32) -> f32, act_timer_ms:u64, nb_MCTS_simulation... [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `new_agent` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `nb_MCTS_simulations_max` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:514:120 [INFO] [stdout] | [INFO] [stdout] 514 | ..., act_timer_ms:u64, nb_MCTS_simulations_max:u32, clean_mcts:bool) -> Agent { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `nb_mcts_simulations_max` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `boardA` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:596:10 [INFO] [stdout] | [INFO] [stdout] 596 | let mut boardA = [0.0;9]; [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `board_a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `boardB` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:597:10 [INFO] [stdout] | [INFO] [stdout] 597 | let mut boardB = [0.0;9]; [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `board_b` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `boardA` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:620:10 [INFO] [stdout] | [INFO] [stdout] 620 | let mut boardA = [0.0;9]; [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `board_a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `boardB` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:621:10 [INFO] [stdout] | [INFO] [stdout] 621 | let mut boardB = [0.0;9]; [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `board_b` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.90s [INFO] running `Command { std: "docker" "inspect" "149cbc21d376954fb9319f0b1d3374059ca7ab22804063ed50ec04b2f6b25a3a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "149cbc21d376954fb9319f0b1d3374059ca7ab22804063ed50ec04b2f6b25a3a", kill_on_drop: false }` [INFO] [stdout] 149cbc21d376954fb9319f0b1d3374059ca7ab22804063ed50ec04b2f6b25a3a [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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 -Dtail-expr-drop-order" "-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:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+11663cd3bfefef7d34e8f0892c250bf698049392" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] bbb48e2af5ada3ee5ea64c106cff8ca4b5bea9d1231c156c3262114411775502 [INFO] running `Command { std: "docker" "start" "-a" "bbb48e2af5ada3ee5ea64c106cff8ca4b5bea9d1231c156c3262114411775502", kill_on_drop: false }` [INFO] [stderr] Compiling ttt v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::io` [INFO] [stdout] --> src/ttt_env_v5.2.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::io; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::cmp` [INFO] [stdout] --> src/ttt_env_v5.2.rs:41:5 [INFO] [stdout] | [INFO] [stdout] 41 | use std::cmp; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around type [INFO] [stdout] --> src/ttt_env_v5.2.rs:353:49 [INFO] [stdout] | [INFO] [stdout] 353 | fn get_leaf_game_state(&self, node_id:&str) -> (TttEnv) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 353 - fn get_leaf_game_state(&self, node_id:&str) -> (TttEnv) { [INFO] [stdout] 353 + fn get_leaf_game_state(&self, node_id:&str) -> TttEnv { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused macro definition: `min_max` [INFO] [stdout] --> src/ttt_env_v5.2.rs:563:14 [INFO] [stdout] | [INFO] [stdout] 563 | macro_rules! min_max { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_macros)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/ttt_env_v5.2.rs:581:14 [INFO] [stdout] | [INFO] [stdout] 581 | let value = (board[0]*board[1]*board[2] + [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 588 | board[2]*board[4]*board[6] ); [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 581 ~ let value = board[0]*board[1]*board[2] + [INFO] [stdout] 582 | board[3]*board[4]*board[5] + [INFO] [stdout] ... [INFO] [stdout] 587 | board[0]*board[4]*board[8] + [INFO] [stdout] 588 ~ board[2]*board[4]*board[6]; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused macro definition: `parse_input` [INFO] [stdout] --> src/ttt_env_v5.2.rs:1000:14 [INFO] [stdout] | [INFO] [stdout] 1000 | macro_rules! parse_input { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/ttt_env_v5.2.rs:360:25 [INFO] [stdout] | [INFO] [stdout] 360 | self.node_map.retain(|id, node| { [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/ttt_env_v5.2.rs:465:7 [INFO] [stdout] | [INFO] [stdout] 465 | let mut test_env = game_state.clone(); [INFO] [stdout] | ----^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `nb_evaluation_sim` [INFO] [stdout] --> src/ttt_env_v5.2.rs:911:37 [INFO] [stdout] | [INFO] [stdout] 911 | fn overboard_evaluation(node:&Node, nb_evaluation_sim:u32) -> f32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_nb_evaluation_sim` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `action` is never read [INFO] [stdout] --> src/ttt_env_v5.2.rs:942:12 [INFO] [stdout] | [INFO] [stdout] 942 | let mut action = (0u8,0u8); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `mcts_value` is never read [INFO] [stdout] --> src/ttt_env_v5.2.rs:943:12 [INFO] [stdout] | [INFO] [stdout] 943 | let mut mcts_value = 0.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 `estimated_value` is never read [INFO] [stdout] --> src/ttt_env_v5.2.rs:944:12 [INFO] [stdout] | [INFO] [stdout] 944 | let mut estimated_value = 0.0; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/ttt_env_v5.2.rs:1019:6 [INFO] [stdout] | [INFO] [stdout] 1019 | let mut env = TttEnv {..Default::default()}; [INFO] [stdout] | ----^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `set_state` and `save_state` are never used [INFO] [stdout] --> src/ttt_env_v5.2.rs:226:5 [INFO] [stdout] | [INFO] [stdout] 86 | impl TttEnv { [INFO] [stdout] | ----------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 226 | fn set_state(&mut self, board:[[i8;9];9], last_move:Option<(u8,u8)>, player_turn: i8) -> () { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 239 | fn save_state(&self) -> ([[i8;9];9], Option<(u8,u8)>, i8, GameStatus) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `xy_to_gn` is never used [INFO] [stdout] --> src/ttt_env_v5.2.rs:542:4 [INFO] [stdout] | [INFO] [stdout] 542 | fn xy_to_gn(x:u8, y:u8) -> (u8, u8) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `gn_to_xy` is never used [INFO] [stdout] --> src/ttt_env_v5.2.rs:547:4 [INFO] [stdout] | [INFO] [stdout] 547 | fn gn_to_xy(gn:(u8, u8)) -> (u8, u8) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `min_max` is never used [INFO] [stdout] --> src/ttt_env_v5.2.rs:552:4 [INFO] [stdout] | [INFO] [stdout] 552 | fn min_max(min_max:(i8,i8),value:i8) -> (i8,i8) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `action_values_evaluation` is never used [INFO] [stdout] --> src/ttt_env_v5.2.rs:858:4 [INFO] [stdout] | [INFO] [stdout] 858 | fn action_values_evaluation(node:&Node, nb_evaluation_sim:u32) -> f32 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `timer_agent` is never used [INFO] [stdout] --> src/ttt_env_v5.2.rs:981:4 [INFO] [stdout] | [INFO] [stdout] 981 | fn timer_agent(agent: &mut Agent, env:&TttEnv, nb_simu:u32)->() { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_Won` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:51:18 [INFO] [stdout] | [INFO] [stdout] 51 | pub const fn is_Won(&self) -> bool { [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case (notice the capitalization): `is_won` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(non_snake_case)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `Result` that must be used [INFO] [stdout] --> src/ttt_env_v5.2.rs:81:3 [INFO] [stdout] | [INFO] [stdout] 81 | write!(f, "Game status: {:?}, last_move: {:?}, player_turn: {}\n", self.status, self.last_move, self.player_turn); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stdout] = note: `#[warn(unused_must_use)]` on by default [INFO] [stdout] = note: this warning originates in the macro `write` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `N` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:281:2 [INFO] [stdout] | [INFO] [stdout] 281 | N: u32, // nb of time node have been reach [INFO] [stdout] | ^ help: convert the identifier to snake case: `n` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `W` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:282:2 [INFO] [stdout] | [INFO] [stdout] 282 | W: f32, // total value of next state [INFO] [stdout] | ^ help: convert the identifier to snake case (notice the capitalization): `w` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `Q` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:283:2 [INFO] [stdout] | [INFO] [stdout] 283 | Q: f32, // mean value of the next state = W/N [INFO] [stdout] | ^ help: convert the identifier to snake case: `q` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: structure field `P` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:284:2 [INFO] [stdout] | [INFO] [stdout] 284 | P: f32, // prior value (base on NN or opportunity move) [INFO] [stdout] | ^ help: convert the identifier to snake case: `p` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `max_QU` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:302:12 [INFO] [stdout] | [INFO] [stdout] 302 | let mut max_QU = -99999.0; [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `max_qu` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `Nb` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:304:12 [INFO] [stdout] | [INFO] [stdout] 304 | let mut Nb:u32 = 0; [INFO] [stdout] | ^^ help: convert the identifier to snake case: `nb` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `Q` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:313:9 [INFO] [stdout] | [INFO] [stdout] 313 | let Q = edge.Q; [INFO] [stdout] | ^ help: convert the identifier to snake case: `q` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `U` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:314:9 [INFO] [stdout] | [INFO] [stdout] 314 | let U = self.cpuct * edge.P * (Nb as f32).sqrt() / (1.0 + edge.N as f32); [INFO] [stdout] | ^ help: convert the identifier to snake case (notice the capitalization): `u` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `new_Agent` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:514:4 [INFO] [stdout] | [INFO] [stdout] 514 | fn new_Agent(env:&TttEnv, cpuct:f32, nb_evaluation_sim:u32, evaluation_method:fn(&Node, u32) -> f32, act_timer_ms:u64, nb_MCTS_simulation... [INFO] [stdout] | ^^^^^^^^^ help: convert the identifier to snake case: `new_agent` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `nb_MCTS_simulations_max` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:514:120 [INFO] [stdout] | [INFO] [stdout] 514 | ..., act_timer_ms:u64, nb_MCTS_simulations_max:u32, clean_mcts:bool) -> Agent { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `nb_mcts_simulations_max` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `boardA` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:596:10 [INFO] [stdout] | [INFO] [stdout] 596 | let mut boardA = [0.0;9]; [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `board_a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `boardB` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:597:10 [INFO] [stdout] | [INFO] [stdout] 597 | let mut boardB = [0.0;9]; [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `board_b` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `boardA` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:620:10 [INFO] [stdout] | [INFO] [stdout] 620 | let mut boardA = [0.0;9]; [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `board_a` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `boardB` should have a snake case name [INFO] [stdout] --> src/ttt_env_v5.2.rs:621:10 [INFO] [stdout] | [INFO] [stdout] 621 | let mut boardB = [0.0;9]; [INFO] [stdout] | ^^^^^^ help: convert the identifier to snake case: `board_b` [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.21s [INFO] running `Command { std: "docker" "inspect" "bbb48e2af5ada3ee5ea64c106cff8ca4b5bea9d1231c156c3262114411775502", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "bbb48e2af5ada3ee5ea64c106cff8ca4b5bea9d1231c156c3262114411775502", kill_on_drop: false }` [INFO] [stdout] bbb48e2af5ada3ee5ea64c106cff8ca4b5bea9d1231c156c3262114411775502