[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] checking BenoitGandon/TicTacToe against master#a26e97be8826d408309fffbd8168362365719f50 for pr-136776
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBenoitGandon%2FTicTacToe" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/BenoitGandon/TicTacToe on toolchain a26e97be8826d408309fffbd8168362365719f50
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+a26e97be8826d408309fffbd8168362365719f50" "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-3-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" "+a26e97be8826d408309fffbd8168362365719f50" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:3959728d45483eb673ba100a951a6b9f5012970368db2a9e08e0ac9b67c8a5ad" "/opt/rustwide/cargo-home/bin/cargo" "+a26e97be8826d408309fffbd8168362365719f50" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 9e8fc1f35854b25cce8b17e07d40ed0fe304d617af1485e0ffcb387f65685bfd
[INFO] running `Command { std: "docker" "start" "-a" "9e8fc1f35854b25cce8b17e07d40ed0fe304d617af1485e0ffcb387f65685bfd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9e8fc1f35854b25cce8b17e07d40ed0fe304d617af1485e0ffcb387f65685bfd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9e8fc1f35854b25cce8b17e07d40ed0fe304d617af1485e0ffcb387f65685bfd", kill_on_drop: false }`
[INFO] [stdout] 9e8fc1f35854b25cce8b17e07d40ed0fe304d617af1485e0ffcb387f65685bfd
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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:3959728d45483eb673ba100a951a6b9f5012970368db2a9e08e0ac9b67c8a5ad" "/opt/rustwide/cargo-home/bin/cargo" "+a26e97be8826d408309fffbd8168362365719f50" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 8c926b4c7a0e466d5e48db8189c2f61a895d4c93ae4eff04ca25c35371e2605d
[INFO] running `Command { std: "docker" "start" "-a" "8c926b4c7a0e466d5e48db8189c2f61a895d4c93ae4eff04ca25c35371e2605d", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.151
[INFO] [stderr]     Checking getrandom v0.2.11
[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 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 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 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: 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: 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: 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] [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 2.98s
[INFO] running `Command { std: "docker" "inspect" "8c926b4c7a0e466d5e48db8189c2f61a895d4c93ae4eff04ca25c35371e2605d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8c926b4c7a0e466d5e48db8189c2f61a895d4c93ae4eff04ca25c35371e2605d", kill_on_drop: false }`
[INFO] [stdout] 8c926b4c7a0e466d5e48db8189c2f61a895d4c93ae4eff04ca25c35371e2605d
