[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 Into 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] != >::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 Into 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] != >::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 Into 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] != >::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 Into 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] != >::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 Into 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] != >::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 Into 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] != >::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 Into 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] != >::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 Into 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] != >::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 Into 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] != >::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 Into 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] != >::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 Into 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] != >::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 Into 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] != >::into(player) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: useless conversion to the same type: `PlayThrough` [INFO] [stdout] --> src/agents/train.rs:74:17 [INFO] [stdout] | [INFO] [stdout] 74 | play_game::(agent1, agent2).into() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this method call relies on the `impl Into 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::(agent1, agent2).into() [INFO] [stdout] 74 + play_game::(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::(agent1, agent2).into() [INFO] [stdout] 74 + as Into<_>>::into(play_game::(agent1, agent2)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: useless conversion to the same type: `PlayThrough` [INFO] [stdout] --> src/agents/train.rs:118:13 [INFO] [stdout] | [INFO] [stdout] 118 | play_game::(agent1_factory().as_ref(), agent2_factory().as_ref()).into() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this method call relies on the `impl Into 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::(agent1_factory().as_ref(), agent2_factory().as_ref()).into() [INFO] [stdout] 118 + play_game::(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::(agent1_factory().as_ref(), agent2_factory().as_ref()).into() [INFO] [stdout] 118 + as Into<_>>::into(play_game::(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 Into 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] != >::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 Into 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] != >::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 Into 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] != >::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 Into 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] != >::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 Into 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] != >::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 Into 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] != >::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 Into 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] != >::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 Into 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] != >::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 Into 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] != >::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 Into 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] != >::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 Into 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] != >::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 Into 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] != >::into(player) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: useless conversion to the same type: `PlayThrough` [INFO] [stdout] --> src/agents/train.rs:74:17 [INFO] [stdout] | [INFO] [stdout] 74 | play_game::(agent1, agent2).into() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this method call relies on the `impl Into 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::(agent1, agent2).into() [INFO] [stdout] 74 + play_game::(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::(agent1, agent2).into() [INFO] [stdout] 74 + as Into<_>>::into(play_game::(agent1, agent2)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: useless conversion to the same type: `PlayThrough` [INFO] [stdout] --> src/agents/train.rs:118:13 [INFO] [stdout] | [INFO] [stdout] 118 | play_game::(agent1_factory().as_ref(), agent2_factory().as_ref()).into() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: this method call relies on the `impl Into 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::(agent1_factory().as_ref(), agent2_factory().as_ref()).into() [INFO] [stdout] 118 + play_game::(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::(agent1_factory().as_ref(), agent2_factory().as_ref()).into() [INFO] [stdout] 118 + as Into<_>>::into(play_game::(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