[INFO] cloning repository https://github.com/amadavan/games-rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/amadavan/games-rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Famadavan%2Fgames-rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Famadavan%2Fgames-rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] a50f2acd50d15c91e73893e49e25178f2208dcc2
[INFO] checking amadavan/games-rs against a5689b034ad287112f709693384a37f1377eb9cc for pr-129249-3
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Famadavan%2Fgames-rs" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/amadavan/games-rs
[INFO] finished tweaking git repo https://github.com/amadavan/games-rs
[INFO] tweaked toml for git repo https://github.com/amadavan/games-rs written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/amadavan/games-rs on toolchain a5689b034ad287112f709693384a37f1377eb9cc
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+a5689b034ad287112f709693384a37f1377eb9cc" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/amadavan/games-rs 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" "+a5689b034ad287112f709693384a37f1377eb9cc" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] c0c43db73aea59680a435e2be28373743bc8a2c3d2af974fcb0ab60a82934edd
[INFO] running `Command { std: "docker" "start" "c0c43db73aea59680a435e2be28373743bc8a2c3d2af974fcb0ab60a82934edd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c0c43db73aea59680a435e2be28373743bc8a2c3d2af974fcb0ab60a82934edd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "c0c43db73aea59680a435e2be28373743bc8a2c3d2af974fcb0ab60a82934edd" "/opt/rustwide/cargo-home/bin/cargo" "+a5689b034ad287112f709693384a37f1377eb9cc" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c0c43db73aea59680a435e2be28373743bc8a2c3d2af974fcb0ab60a82934edd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "c0c43db73aea59680a435e2be28373743bc8a2c3d2af974fcb0ab60a82934edd" "/opt/rustwide/cargo-home/bin/cargo" "+a5689b034ad287112f709693384a37f1377eb9cc" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.103
[INFO] [stderr]    Compiling quote v1.0.42
[INFO] [stderr]    Compiling unicode-ident v1.0.22
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling libc v0.2.178
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling zerocopy v0.8.31
[INFO] [stderr]    Compiling portable-atomic v1.11.1
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling libm v0.2.15
[INFO] [stderr]    Compiling indexmap v2.12.1
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling cubecl-common v0.8.1
[INFO] [stderr]     Checking fastrand v2.3.0
[INFO] [stderr]     Checking futures-core v0.3.31
[INFO] [stderr]     Checking embassy-futures v0.1.2
[INFO] [stderr]     Checking futures-lite v2.6.1
[INFO] [stderr]    Compiling if_chain v1.0.3
[INFO] [stderr]     Checking log v0.4.29
[INFO] [stderr]     Checking crossbeam-deque v0.8.6
[INFO] [stderr]     Checking memchr v2.7.6
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]     Checking regex-syntax v0.8.8
[INFO] [stderr]     Checking simd-adler32 v0.3.7
[INFO] [stderr]     Checking unty v0.0.4
[INFO] [stderr]     Checking rayon-core v1.13.0
[INFO] [stderr]     Checking colored v3.0.0
[INFO] [stderr]     Checking data-encoding v2.9.0
[INFO] [stderr]     Checking uuid v1.19.0
[INFO] [stderr]     Checking anstyle v1.0.13
[INFO] [stderr]     Checking clap_lex v0.7.6
[INFO] [stderr]    Compiling toml_edit v0.19.15
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking unicode-width v0.2.0
[INFO] [stderr]     Checking anstream v0.6.21
[INFO] [stderr]     Checking rayon v1.11.0
[INFO] [stderr]    Compiling derive_aliases_proc_macro v0.4.7
[INFO] [stderr]     Checking aho-corasick v1.1.4
[INFO] [stderr]     Checking arrayvec v0.7.6
[INFO] [stderr]     Checking clap_builder v4.5.53
[INFO] [stderr]     Checking spin v0.10.0
[INFO] [stderr]     Checking flate2 v1.1.7
[INFO] [stderr]    Compiling syn v2.0.111
[INFO] [stderr]     Checking strsim v0.10.0
[INFO] [stderr]     Checking derive_aliases v0.4.7
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking console v0.16.1
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking indicatif v0.18.3
[INFO] [stderr]     Checking rmp v0.8.14
[INFO] [stderr]     Checking regex-automata v0.4.13
[INFO] [stderr]    Compiling proc-macro-crate v1.3.1
[INFO] [stderr]     Checking serde_bytes v0.11.19
[INFO] [stderr]     Checking regex v1.12.2
[INFO] [stderr]     Checking deluxe-core v0.5.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling zerocopy-derive v0.8.31
[INFO] [stderr]    Compiling bytemuck_derive v1.10.2
[INFO] [stderr]    Compiling derive_more-impl v2.1.0
[INFO] [stderr]    Compiling derive-new v0.7.0
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]    Compiling bitcode_derive v0.6.9
[INFO] [stderr]    Compiling deluxe-macros v0.5.0
[INFO] [stderr]    Compiling burn-derive v0.19.1
[INFO] [stderr]     Checking bytemuck v1.24.0
[INFO] [stderr]     Checking hashbrown v0.15.5
[INFO] [stderr]     Checking bincode v2.0.1
[INFO] [stderr]     Checking rmp-serde v1.3.0
[INFO] [stderr]     Checking tinyvec v1.10.0
[INFO] [stderr]     Checking bitcode v0.6.9
[INFO] [stderr]     Checking clap v4.5.53
[INFO] [stderr]     Checking derive_more v2.1.0
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]    Compiling deluxe v0.5.0
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking float8 v0.4.2
[INFO] [stderr]    Compiling enums v0.1.0 (/opt/rustwide/workdir/macros/enums)
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking petgraph v0.8.3
[INFO] [stderr]     Checking macros v0.1.0 (/opt/rustwide/workdir/macros)
[INFO] [stderr]     Checking rand_distr v0.5.1
[INFO] [stderr]     Checking cubecl-quant v0.8.1
[INFO] [stderr]     Checking burn-common v0.19.1
[INFO] [stderr]     Checking burn-tensor v0.19.1
[INFO] [stderr]     Checking burn-core v0.19.1
[INFO] [stderr]     Checking burn-optim v0.19.1
[INFO] [stderr]     Checking burn-nn v0.19.1
[INFO] [stderr]     Checking burn v0.19.1
[INFO] [stderr]     Checking games-rs v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error: useless conversion to the same type: `Token`
[INFO] [stdout]   --> src/agents/scorer/naive_scorer.rs:55:36
[INFO] [stdout]    |
[INFO] [stdout] 55 |                 if grid[row][c] != player.into() {
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: `#[deny(self_type_conversion)]` on by default
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]    |
[INFO] [stdout] 55 -                 if grid[row][c] != player.into() {
[INFO] [stdout] 55 +                 if grid[row][c] != player {
[INFO] [stdout]    |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]    |
[INFO] [stdout] 55 -                 if grid[row][c] != player.into() {
[INFO] [stdout] 55 +                 if grid[row][c] != <Token as Into<_>>::into(player) {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Token`
[INFO] [stdout]   --> src/agents/scorer/naive_scorer.rs:69:37
[INFO] [stdout]    |
[INFO] [stdout] 69 |                 if grid[r][*col] != player.into() {
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]    |
[INFO] [stdout] 69 -                 if grid[r][*col] != player.into() {
[INFO] [stdout] 69 +                 if grid[r][*col] != player {
[INFO] [stdout]    |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]    |
[INFO] [stdout] 69 -                 if grid[r][*col] != player.into() {
[INFO] [stdout] 69 +                 if grid[r][*col] != <Token as Into<_>>::into(player) {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Token`
[INFO] [stdout]   --> src/agents/scorer/naive_scorer.rs:84:38
[INFO] [stdout]    |
[INFO] [stdout] 84 |                     if grid[r][c] != player.into() {
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]    |
[INFO] [stdout] 84 -                     if grid[r][c] != player.into() {
[INFO] [stdout] 84 +                     if grid[r][c] != player {
[INFO] [stdout]    |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]    |
[INFO] [stdout] 84 -                     if grid[r][c] != player.into() {
[INFO] [stdout] 84 +                     if grid[r][c] != <Token as Into<_>>::into(player) {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Token`
[INFO] [stdout]    --> src/agents/scorer/naive_scorer.rs:100:38
[INFO] [stdout]     |
[INFO] [stdout] 100 |                     if grid[r][c] != player.into() {
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 100 -                     if grid[r][c] != player.into() {
[INFO] [stdout] 100 +                     if grid[r][c] != player {
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 100 -                     if grid[r][c] != player.into() {
[INFO] [stdout] 100 +                     if grid[r][c] != <Token as Into<_>>::into(player) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Token`
[INFO] [stdout]    --> src/agents/scorer/naive_scorer.rs:115:36
[INFO] [stdout]     |
[INFO] [stdout] 115 |                 if grid[row][c] != player.into() {
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 115 -                 if grid[row][c] != player.into() {
[INFO] [stdout] 115 +                 if grid[row][c] != player {
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 115 -                 if grid[row][c] != player.into() {
[INFO] [stdout] 115 +                 if grid[row][c] != <Token as Into<_>>::into(player) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Token`
[INFO] [stdout]    --> src/agents/scorer/naive_scorer.rs:128:37
[INFO] [stdout]     |
[INFO] [stdout] 128 |                 if grid[r][*col] != player.into() {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 128 -                 if grid[r][*col] != player.into() {
[INFO] [stdout] 128 +                 if grid[r][*col] != player {
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 128 -                 if grid[r][*col] != player.into() {
[INFO] [stdout] 128 +                 if grid[r][*col] != <Token as Into<_>>::into(player) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Token`
[INFO] [stdout]    --> src/agents/scorer/naive_scorer.rs:142:38
[INFO] [stdout]     |
[INFO] [stdout] 142 |                     if grid[r][c] != player.into() {
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 142 -                     if grid[r][c] != player.into() {
[INFO] [stdout] 142 +                     if grid[r][c] != player {
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 142 -                     if grid[r][c] != player.into() {
[INFO] [stdout] 142 +                     if grid[r][c] != <Token as Into<_>>::into(player) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Token`
[INFO] [stdout]    --> src/agents/scorer/naive_scorer.rs:157:38
[INFO] [stdout]     |
[INFO] [stdout] 157 |                     if grid[r][c] != player.into() {
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 157 -                     if grid[r][c] != player.into() {
[INFO] [stdout] 157 +                     if grid[r][c] != player {
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 157 -                     if grid[r][c] != player.into() {
[INFO] [stdout] 157 +                     if grid[r][c] != <Token as Into<_>>::into(player) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Token`
[INFO] [stdout]    --> src/agents/scorer/naive_scorer.rs:169:36
[INFO] [stdout]     |
[INFO] [stdout] 169 |                 if grid[row][c] != player.into() {
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 169 -                 if grid[row][c] != player.into() {
[INFO] [stdout] 169 +                 if grid[row][c] != player {
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 169 -                 if grid[row][c] != player.into() {
[INFO] [stdout] 169 +                 if grid[row][c] != <Token as Into<_>>::into(player) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Token`
[INFO] [stdout]    --> src/agents/scorer/naive_scorer.rs:179:37
[INFO] [stdout]     |
[INFO] [stdout] 179 |                 if grid[r][*col] != player.into() {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 179 -                 if grid[r][*col] != player.into() {
[INFO] [stdout] 179 +                 if grid[r][*col] != player {
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 179 -                 if grid[r][*col] != player.into() {
[INFO] [stdout] 179 +                 if grid[r][*col] != <Token as Into<_>>::into(player) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Token`
[INFO] [stdout]    --> src/agents/scorer/naive_scorer.rs:190:38
[INFO] [stdout]     |
[INFO] [stdout] 190 |                     if grid[r][c] != player.into() {
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 190 -                     if grid[r][c] != player.into() {
[INFO] [stdout] 190 +                     if grid[r][c] != player {
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 190 -                     if grid[r][c] != player.into() {
[INFO] [stdout] 190 +                     if grid[r][c] != <Token as Into<_>>::into(player) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Token`
[INFO] [stdout]    --> src/agents/scorer/naive_scorer.rs:202:38
[INFO] [stdout]     |
[INFO] [stdout] 202 |                     if grid[r][c] != player.into() {
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 202 -                     if grid[r][c] != player.into() {
[INFO] [stdout] 202 +                     if grid[r][c] != player {
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 202 -                     if grid[r][c] != player.into() {
[INFO] [stdout] 202 +                     if grid[r][c] != <Token as Into<_>>::into(player) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `PlayThrough<G>`
[INFO] [stdout]   --> src/agents/train.rs:74:17
[INFO] [stdout]    |
[INFO] [stdout] 74 |                 play_game::<G>(agent1, agent2).into()
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]    |
[INFO] [stdout] 74 -                 play_game::<G>(agent1, agent2).into()
[INFO] [stdout] 74 +                 play_game::<G>(agent1, agent2)
[INFO] [stdout]    |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]    |
[INFO] [stdout] 74 -                 play_game::<G>(agent1, agent2).into()
[INFO] [stdout] 74 +                 <PlayThrough<G> as Into<_>>::into(play_game::<G>(agent1, agent2))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `PlayThrough<G>`
[INFO] [stdout]    --> src/agents/train.rs:118:13
[INFO] [stdout]     |
[INFO] [stdout] 118 |             play_game::<G>(agent1_factory().as_ref(), agent2_factory().as_ref()).into()
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 118 -             play_game::<G>(agent1_factory().as_ref(), agent2_factory().as_ref()).into()
[INFO] [stdout] 118 +             play_game::<G>(agent1_factory().as_ref(), agent2_factory().as_ref())
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 118 -             play_game::<G>(agent1_factory().as_ref(), agent2_factory().as_ref()).into()
[INFO] [stdout] 118 +             <PlayThrough<G> as Into<_>>::into(play_game::<G>(agent1_factory().as_ref(), agent2_factory().as_ref()))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `games-rs` (lib test) due to 14 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error: useless conversion to the same type: `Token`
[INFO] [stdout]   --> src/agents/scorer/naive_scorer.rs:55:36
[INFO] [stdout]    |
[INFO] [stdout] 55 |                 if grid[row][c] != player.into() {
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout]    = note: `#[deny(self_type_conversion)]` on by default
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]    |
[INFO] [stdout] 55 -                 if grid[row][c] != player.into() {
[INFO] [stdout] 55 +                 if grid[row][c] != player {
[INFO] [stdout]    |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]    |
[INFO] [stdout] 55 -                 if grid[row][c] != player.into() {
[INFO] [stdout] 55 +                 if grid[row][c] != <Token as Into<_>>::into(player) {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Token`
[INFO] [stdout]   --> src/agents/scorer/naive_scorer.rs:69:37
[INFO] [stdout]    |
[INFO] [stdout] 69 |                 if grid[r][*col] != player.into() {
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]    |
[INFO] [stdout] 69 -                 if grid[r][*col] != player.into() {
[INFO] [stdout] 69 +                 if grid[r][*col] != player {
[INFO] [stdout]    |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]    |
[INFO] [stdout] 69 -                 if grid[r][*col] != player.into() {
[INFO] [stdout] 69 +                 if grid[r][*col] != <Token as Into<_>>::into(player) {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Token`
[INFO] [stdout]   --> src/agents/scorer/naive_scorer.rs:84:38
[INFO] [stdout]    |
[INFO] [stdout] 84 |                     if grid[r][c] != player.into() {
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]    |
[INFO] [stdout] 84 -                     if grid[r][c] != player.into() {
[INFO] [stdout] 84 +                     if grid[r][c] != player {
[INFO] [stdout]    |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]    |
[INFO] [stdout] 84 -                     if grid[r][c] != player.into() {
[INFO] [stdout] 84 +                     if grid[r][c] != <Token as Into<_>>::into(player) {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Token`
[INFO] [stdout]    --> src/agents/scorer/naive_scorer.rs:100:38
[INFO] [stdout]     |
[INFO] [stdout] 100 |                     if grid[r][c] != player.into() {
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 100 -                     if grid[r][c] != player.into() {
[INFO] [stdout] 100 +                     if grid[r][c] != player {
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 100 -                     if grid[r][c] != player.into() {
[INFO] [stdout] 100 +                     if grid[r][c] != <Token as Into<_>>::into(player) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Token`
[INFO] [stdout]    --> src/agents/scorer/naive_scorer.rs:115:36
[INFO] [stdout]     |
[INFO] [stdout] 115 |                 if grid[row][c] != player.into() {
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 115 -                 if grid[row][c] != player.into() {
[INFO] [stdout] 115 +                 if grid[row][c] != player {
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 115 -                 if grid[row][c] != player.into() {
[INFO] [stdout] 115 +                 if grid[row][c] != <Token as Into<_>>::into(player) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Token`
[INFO] [stdout]    --> src/agents/scorer/naive_scorer.rs:128:37
[INFO] [stdout]     |
[INFO] [stdout] 128 |                 if grid[r][*col] != player.into() {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 128 -                 if grid[r][*col] != player.into() {
[INFO] [stdout] 128 +                 if grid[r][*col] != player {
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 128 -                 if grid[r][*col] != player.into() {
[INFO] [stdout] 128 +                 if grid[r][*col] != <Token as Into<_>>::into(player) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Token`
[INFO] [stdout]    --> src/agents/scorer/naive_scorer.rs:142:38
[INFO] [stdout]     |
[INFO] [stdout] 142 |                     if grid[r][c] != player.into() {
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 142 -                     if grid[r][c] != player.into() {
[INFO] [stdout] 142 +                     if grid[r][c] != player {
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 142 -                     if grid[r][c] != player.into() {
[INFO] [stdout] 142 +                     if grid[r][c] != <Token as Into<_>>::into(player) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Token`
[INFO] [stdout]    --> src/agents/scorer/naive_scorer.rs:157:38
[INFO] [stdout]     |
[INFO] [stdout] 157 |                     if grid[r][c] != player.into() {
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 157 -                     if grid[r][c] != player.into() {
[INFO] [stdout] 157 +                     if grid[r][c] != player {
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 157 -                     if grid[r][c] != player.into() {
[INFO] [stdout] 157 +                     if grid[r][c] != <Token as Into<_>>::into(player) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Token`
[INFO] [stdout]    --> src/agents/scorer/naive_scorer.rs:169:36
[INFO] [stdout]     |
[INFO] [stdout] 169 |                 if grid[row][c] != player.into() {
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 169 -                 if grid[row][c] != player.into() {
[INFO] [stdout] 169 +                 if grid[row][c] != player {
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 169 -                 if grid[row][c] != player.into() {
[INFO] [stdout] 169 +                 if grid[row][c] != <Token as Into<_>>::into(player) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Token`
[INFO] [stdout]    --> src/agents/scorer/naive_scorer.rs:179:37
[INFO] [stdout]     |
[INFO] [stdout] 179 |                 if grid[r][*col] != player.into() {
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 179 -                 if grid[r][*col] != player.into() {
[INFO] [stdout] 179 +                 if grid[r][*col] != player {
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 179 -                 if grid[r][*col] != player.into() {
[INFO] [stdout] 179 +                 if grid[r][*col] != <Token as Into<_>>::into(player) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Token`
[INFO] [stdout]    --> src/agents/scorer/naive_scorer.rs:190:38
[INFO] [stdout]     |
[INFO] [stdout] 190 |                     if grid[r][c] != player.into() {
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 190 -                     if grid[r][c] != player.into() {
[INFO] [stdout] 190 +                     if grid[r][c] != player {
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 190 -                     if grid[r][c] != player.into() {
[INFO] [stdout] 190 +                     if grid[r][c] != <Token as Into<_>>::into(player) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `Token`
[INFO] [stdout]    --> src/agents/scorer/naive_scorer.rs:202:38
[INFO] [stdout]     |
[INFO] [stdout] 202 |                     if grid[r][c] != player.into() {
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 202 -                     if grid[r][c] != player.into() {
[INFO] [stdout] 202 +                     if grid[r][c] != player {
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 202 -                     if grid[r][c] != player.into() {
[INFO] [stdout] 202 +                     if grid[r][c] != <Token as Into<_>>::into(player) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `PlayThrough<G>`
[INFO] [stdout]   --> src/agents/train.rs:74:17
[INFO] [stdout]    |
[INFO] [stdout] 74 |                 play_game::<G>(agent1, agent2).into()
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]    |
[INFO] [stdout] 74 -                 play_game::<G>(agent1, agent2).into()
[INFO] [stdout] 74 +                 play_game::<G>(agent1, agent2)
[INFO] [stdout]    |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]    |
[INFO] [stdout] 74 -                 play_game::<G>(agent1, agent2).into()
[INFO] [stdout] 74 +                 <PlayThrough<G> as Into<_>>::into(play_game::<G>(agent1, agent2))
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: useless conversion to the same type: `PlayThrough<G>`
[INFO] [stdout]    --> src/agents/train.rs:118:13
[INFO] [stdout]     |
[INFO] [stdout] 118 |             play_game::<G>(agent1_factory().as_ref(), agent2_factory().as_ref()).into()
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this method call relies on the `impl<T> Into<T> for T` blanket implementation and type inference, which is a semver hazard as a new `impl Into<_>` that affects your type might be added in the future causing type inference errors
[INFO] [stdout] help: consider removing the conversion call
[INFO] [stdout]     |
[INFO] [stdout] 118 -             play_game::<G>(agent1_factory().as_ref(), agent2_factory().as_ref()).into()
[INFO] [stdout] 118 +             play_game::<G>(agent1_factory().as_ref(), agent2_factory().as_ref())
[INFO] [stdout]     |
[INFO] [stdout] help: you can use the fully-qualified path to avoid triggering this lint
[INFO] [stdout]     |
[INFO] [stdout] 118 -             play_game::<G>(agent1_factory().as_ref(), agent2_factory().as_ref()).into()
[INFO] [stdout] 118 +             <PlayThrough<G> as Into<_>>::into(play_game::<G>(agent1_factory().as_ref(), agent2_factory().as_ref()))
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `games-rs` (lib) due to 14 previous errors
[INFO] running `Command { std: "docker" "inspect" "c0c43db73aea59680a435e2be28373743bc8a2c3d2af974fcb0ab60a82934edd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c0c43db73aea59680a435e2be28373743bc8a2c3d2af974fcb0ab60a82934edd", kill_on_drop: false }`
[INFO] [stdout] c0c43db73aea59680a435e2be28373743bc8a2c3d2af974fcb0ab60a82934edd
