[INFO] updating cached repository pajh/tron [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/pajh/tron [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/pajh/tron" "work/ex/clippy-test-run/sources/stable/gh/pajh/tron"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/pajh/tron'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/pajh/tron" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/pajh/tron"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/pajh/tron'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 881e0d67f74904a539d04da6841d05824e8da7f5 [INFO] sha for GitHub repo pajh/tron: 881e0d67f74904a539d04da6841d05824e8da7f5 [INFO] validating manifest of pajh/tron on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of pajh/tron on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing pajh/tron [INFO] finished frobbing pajh/tron [INFO] frobbed toml for pajh/tron written to work/ex/clippy-test-run/sources/stable/gh/pajh/tron/Cargo.toml [INFO] started frobbing pajh/tron [INFO] finished frobbing pajh/tron [INFO] frobbed toml for pajh/tron written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/pajh/tron/Cargo.toml [INFO] crate pajh/tron has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting pajh/tron against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/pajh/tron:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 6365a6bc9641cf40231dc0af9711950cb4b4ef460ab37c7b7be2642b9bb9cdd9 [INFO] running `"docker" "start" "-a" "6365a6bc9641cf40231dc0af9711950cb4b4ef460ab37c7b7be2642b9bb9cdd9"` [INFO] [stderr] Checking rand v0.5.0 [INFO] [stderr] Checking codingame v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/support.rs:100:13 [INFO] [stderr] | [INFO] [stderr] 100 | no_players: no_players, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `no_players` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/aiminmax.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | board: board, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `board` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/aiminmax.rs:35:13 [INFO] [stderr] | [INFO] [stderr] 35 | pdata: pdata, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `pdata` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/aimonte.rs:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | cells: cells, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `cells` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/aimonte.rs:95:13 [INFO] [stderr] | [INFO] [stderr] 95 | parent: parent, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `parent` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/aimonte.rs:96:13 [INFO] [stderr] | [INFO] [stderr] 96 | players: players, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `players` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/aiflood.rs:22:13 [INFO] [stderr] | [INFO] [stderr] 22 | board: board, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `board` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/aiflood.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | pdata: pdata, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `pdata` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/floodfill.rs:31:13 [INFO] [stderr] | [INFO] [stderr] 31 | no_players: no_players, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `no_players` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/neural.rs:236:13 [INFO] [stderr] | [INFO] [stderr] 236 | board: board, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `board` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/neural.rs:237:13 [INFO] [stderr] | [INFO] [stderr] 237 | pdata: pdata, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `pdata` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/neural.rs:239:13 [INFO] [stderr] | [INFO] [stderr] 239 | nn: nn, [INFO] [stderr] | ^^^^^^ help: replace it with: `nn` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/main.rs:69:17 [INFO] [stderr] | [INFO] [stderr] 69 | let mut x = 0; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/support.rs:100:13 [INFO] [stderr] | [INFO] [stderr] 100 | no_players: no_players, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `no_players` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/aiminmax.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | board: board, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `board` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/aiminmax.rs:35:13 [INFO] [stderr] | [INFO] [stderr] 35 | pdata: pdata, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `pdata` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/aimonte.rs:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | cells: cells, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `cells` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/aimonte.rs:95:13 [INFO] [stderr] | [INFO] [stderr] 95 | parent: parent, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `parent` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/aimonte.rs:96:13 [INFO] [stderr] | [INFO] [stderr] 96 | players: players, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `players` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/aiflood.rs:22:13 [INFO] [stderr] | [INFO] [stderr] 22 | board: board, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `board` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/aiflood.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | pdata: pdata, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `pdata` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/floodfill.rs:31:13 [INFO] [stderr] | [INFO] [stderr] 31 | no_players: no_players, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `no_players` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/neural.rs:236:13 [INFO] [stderr] | [INFO] [stderr] 236 | board: board, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `board` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/neural.rs:237:13 [INFO] [stderr] | [INFO] [stderr] 237 | pdata: pdata, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `pdata` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/neural.rs:239:13 [INFO] [stderr] | [INFO] [stderr] 239 | nn: nn, [INFO] [stderr] | ^^^^^^ help: replace it with: `nn` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/main.rs:69:17 [INFO] [stderr] | [INFO] [stderr] 69 | let mut x = 0; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/board.rs:64:17 [INFO] [stderr] | [INFO] [stderr] 64 | / return if pos.1 > 0 && self.get((pos.0, pos.1 - 1)).0 == 0 { [INFO] [stderr] 65 | | Some((pos.0, pos.1 - 1)) [INFO] [stderr] 66 | | } else { [INFO] [stderr] 67 | | None [INFO] [stderr] 68 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 64 | if pos.1 > 0 && self.get((pos.0, pos.1 - 1)).0 == 0 { [INFO] [stderr] 65 | Some((pos.0, pos.1 - 1)) [INFO] [stderr] 66 | } else { [INFO] [stderr] 67 | None [INFO] [stderr] 68 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/board.rs:72:17 [INFO] [stderr] | [INFO] [stderr] 72 | / return if pos.1 < BHEIGHT - 1 && self.get((pos.0, pos.1 + 1)).0 == 0 { [INFO] [stderr] 73 | | Some((pos.0, pos.1 + 1)) [INFO] [stderr] 74 | | } else { [INFO] [stderr] 75 | | None [INFO] [stderr] 76 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 72 | if pos.1 < BHEIGHT - 1 && self.get((pos.0, pos.1 + 1)).0 == 0 { [INFO] [stderr] 73 | Some((pos.0, pos.1 + 1)) [INFO] [stderr] 74 | } else { [INFO] [stderr] 75 | None [INFO] [stderr] 76 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/board.rs:80:17 [INFO] [stderr] | [INFO] [stderr] 80 | / return if pos.0 > 0 && self.get((pos.0 - 1, pos.1)).0 == 0 { [INFO] [stderr] 81 | | Some((pos.0 - 1, pos.1)) [INFO] [stderr] 82 | | } else { [INFO] [stderr] 83 | | None [INFO] [stderr] 84 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 80 | if pos.0 > 0 && self.get((pos.0 - 1, pos.1)).0 == 0 { [INFO] [stderr] 81 | Some((pos.0 - 1, pos.1)) [INFO] [stderr] 82 | } else { [INFO] [stderr] 83 | None [INFO] [stderr] 84 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/board.rs:88:17 [INFO] [stderr] | [INFO] [stderr] 88 | / return if pos.0 < BWIDTH - 1 && self.get((pos.0 + 1, pos.1)).0 == 0 { [INFO] [stderr] 89 | | Some((pos.0 + 1, pos.1)) [INFO] [stderr] 90 | | } else { [INFO] [stderr] 91 | | None [INFO] [stderr] 92 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 88 | if pos.0 < BWIDTH - 1 && self.get((pos.0 + 1, pos.1)).0 == 0 { [INFO] [stderr] 89 | Some((pos.0 + 1, pos.1)) [INFO] [stderr] 90 | } else { [INFO] [stderr] 91 | None [INFO] [stderr] 92 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/board.rs:100:17 [INFO] [stderr] | [INFO] [stderr] 100 | / return if p.1 > 0 && self.get((p.0, p.1 - 1)).0 == 0 { [INFO] [stderr] 101 | | Some(Move::U((p.0, p.1 - 1))) [INFO] [stderr] 102 | | } else { [INFO] [stderr] 103 | | None [INFO] [stderr] 104 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 100 | if p.1 > 0 && self.get((p.0, p.1 - 1)).0 == 0 { [INFO] [stderr] 101 | Some(Move::U((p.0, p.1 - 1))) [INFO] [stderr] 102 | } else { [INFO] [stderr] 103 | None [INFO] [stderr] 104 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/board.rs:108:17 [INFO] [stderr] | [INFO] [stderr] 108 | / return if p.1 < BHEIGHT - 1 && self.get((p.0, p.1 + 1)).0 == 0 { [INFO] [stderr] 109 | | Some(Move::D((p.0, p.1 + 1))) [INFO] [stderr] 110 | | } else { [INFO] [stderr] 111 | | None [INFO] [stderr] 112 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 108 | if p.1 < BHEIGHT - 1 && self.get((p.0, p.1 + 1)).0 == 0 { [INFO] [stderr] 109 | Some(Move::D((p.0, p.1 + 1))) [INFO] [stderr] 110 | } else { [INFO] [stderr] 111 | None [INFO] [stderr] 112 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/board.rs:116:17 [INFO] [stderr] | [INFO] [stderr] 116 | / return if p.0 > 0 && self.get((p.0 - 1, p.1)).0 == 0 { [INFO] [stderr] 117 | | Some(Move::L((p.0 - 1, p.1))) [INFO] [stderr] 118 | | } else { [INFO] [stderr] 119 | | None [INFO] [stderr] 120 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 116 | if p.0 > 0 && self.get((p.0 - 1, p.1)).0 == 0 { [INFO] [stderr] 117 | Some(Move::L((p.0 - 1, p.1))) [INFO] [stderr] 118 | } else { [INFO] [stderr] 119 | None [INFO] [stderr] 120 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/board.rs:124:17 [INFO] [stderr] | [INFO] [stderr] 124 | / return if p.0 < BWIDTH - 1 && self.get((p.0 + 1, p.1)).0 == 0 { [INFO] [stderr] 125 | | Some(Move::R((p.0 + 1, p.1))) [INFO] [stderr] 126 | | } else { [INFO] [stderr] 127 | | None [INFO] [stderr] 128 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 124 | if p.0 < BWIDTH - 1 && self.get((p.0 + 1, p.1)).0 == 0 { [INFO] [stderr] 125 | Some(Move::R((p.0 + 1, p.1))) [INFO] [stderr] 126 | } else { [INFO] [stderr] 127 | None [INFO] [stderr] 128 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/board.rs:292:9 [INFO] [stderr] | [INFO] [stderr] 292 | return self.c; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `self.c` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/board.rs:336:19 [INFO] [stderr] | [INFO] [stderr] 336 | prev: 999999, [INFO] [stderr] | ^^^^^^ help: consider: `999_999` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cell::Cell` [INFO] [stderr] --> src/support.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::cell::Cell; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Duration` [INFO] [stderr] --> src/aiminmax.rs:13:17 [INFO] [stderr] | [INFO] [stderr] 13 | use std::time::{Duration, Instant}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/aiminmax.rs:269:9 [INFO] [stderr] | [INFO] [stderr] 269 | / if board.get(t_p).0 == 0 { [INFO] [stderr] 270 | | if !tree.is_point_in(node, t_p) { [INFO] [stderr] 271 | | panic!( [INFO] [stderr] 272 | | "One of the players ({}) positions {:?} is not marked as full at depth {}", [INFO] [stderr] ... | [INFO] [stderr] 275 | | } [INFO] [stderr] 276 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 269 | if board.get(t_p).0 == 0 && !tree.is_point_in(node, t_p) { [INFO] [stderr] 270 | panic!( [INFO] [stderr] 271 | "One of the players ({}) positions {:?} is not marked as full at depth {}", [INFO] [stderr] 272 | p.no, t_p, depth [INFO] [stderr] 273 | ); [INFO] [stderr] 274 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/aiminmax.rs:277:9 [INFO] [stderr] | [INFO] [stderr] 277 | / if board.get(t_p).1 != p.no as u8 { [INFO] [stderr] 278 | | if !tree.is_point_in(node, t_p) { [INFO] [stderr] 279 | | panic!("One of the players player cells is not marked with ply no"); [INFO] [stderr] 280 | | } [INFO] [stderr] 281 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 277 | if board.get(t_p).1 != p.no as u8 && !tree.is_point_in(node, t_p) { [INFO] [stderr] 278 | panic!("One of the players player cells is not marked with ply no"); [INFO] [stderr] 279 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `aiminmax::MinMaxAI` [INFO] [stderr] --> src/main.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | use aiminmax::MinMaxAI; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Duration` [INFO] [stderr] --> src/ailong.rs:11:17 [INFO] [stderr] | [INFO] [stderr] 11 | use std::time::{Duration, Instant}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Duration` [INFO] [stderr] --> src/aimonte.rs:14:17 [INFO] [stderr] | [INFO] [stderr] 14 | use std::time::{Duration, Instant}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/aimonte.rs:70:16 [INFO] [stderr] | [INFO] [stderr] 70 | const C: f32 = 1.414213; [INFO] [stderr] | ^^^^^^^^ help: consider: `1.414_213` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/aimonte.rs:135:9 [INFO] [stderr] | [INFO] [stderr] 135 | return n; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `n` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/aimonte.rs:458:20 [INFO] [stderr] | [INFO] [stderr] 458 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 459 | | if (x, y) == pdata.players[p as usize].pos { [INFO] [stderr] 460 | | l.push_str(&format!("\x1b[31m{}\x1b[0m", p)); [INFO] [stderr] 461 | | } else { [INFO] [stderr] 462 | | l.push_str(&format!("{}", p)); [INFO] [stderr] 463 | | } [INFO] [stderr] 464 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 458 | } else if (x, y) == pdata.players[p as usize].pos { [INFO] [stderr] 459 | l.push_str(&format!("\x1b[31m{}\x1b[0m", p)); [INFO] [stderr] 460 | } else { [INFO] [stderr] 461 | l.push_str(&format!("{}", p)); [INFO] [stderr] 462 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `support::PlayerData` [INFO] [stderr] --> src/simgame.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use support::PlayerData; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Duration` [INFO] [stderr] --> src/simgame.rs:5:17 [INFO] [stderr] | [INFO] [stderr] 5 | use std::time::{Duration, Instant}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/simgame.rs:133:20 [INFO] [stderr] | [INFO] [stderr] 133 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 134 | | if (x,y) == pos[p as usize] { [INFO] [stderr] 135 | | l.push_str(&format!("\x1b[31m{}\x1b[0m", p)); [INFO] [stderr] 136 | | } else { [INFO] [stderr] 137 | | l.push_str(&format!("{}", p)); [INFO] [stderr] 138 | | } [INFO] [stderr] 139 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 133 | } else if (x,y) == pos[p as usize] { [INFO] [stderr] 134 | l.push_str(&format!("\x1b[31m{}\x1b[0m", p)); [INFO] [stderr] 135 | } else { [INFO] [stderr] 136 | l.push_str(&format!("{}", p)); [INFO] [stderr] 137 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `Duration` [INFO] [stderr] --> src/aiflood.rs:8:17 [INFO] [stderr] | [INFO] [stderr] 8 | use std::time::{Duration, Instant}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Duration` [INFO] [stderr] --> src/ai.rs:6:17 [INFO] [stderr] | [INFO] [stderr] 6 | use std::time::{Duration, Instant}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io` [INFO] [stderr] --> src/floodfill.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::io; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/floodfill.rs:85:13 [INFO] [stderr] | [INFO] [stderr] 85 | / if play < MAXPLAYERS { [INFO] [stderr] 86 | | if v > max_depths[play] { [INFO] [stderr] 87 | | max_depths[play] = v; [INFO] [stderr] 88 | | } [INFO] [stderr] 89 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 85 | if play < MAXPLAYERS && v > max_depths[play] { [INFO] [stderr] 86 | max_depths[play] = v; [INFO] [stderr] 87 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `aiminmax::scan_move` [INFO] [stderr] --> src/neural.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | use aiminmax::scan_move; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `aiminmax::score_for_player` [INFO] [stderr] --> src/neural.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | use aiminmax::score_for_player;//(scores, player) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Duration` [INFO] [stderr] --> src/neural.rs:20:17 [INFO] [stderr] | [INFO] [stderr] 20 | use std::time::{Duration, Instant}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/neural.rs:53:9 [INFO] [stderr] | [INFO] [stderr] 53 | / if play < MAXPLAYERS { [INFO] [stderr] 54 | | if v > max_depths[play] { [INFO] [stderr] 55 | | max_depths[play] = v; [INFO] [stderr] 56 | | } [INFO] [stderr] 57 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 53 | if play < MAXPLAYERS && v > max_depths[play] { [INFO] [stderr] 54 | max_depths[play] = v; [INFO] [stderr] 55 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/neural.rs:249:9 [INFO] [stderr] | [INFO] [stderr] 249 | nai [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/neural.rs:235:19 [INFO] [stderr] | [INFO] [stderr] 235 | let nai = NeuralAI { [INFO] [stderr] | ___________________^ [INFO] [stderr] 236 | | board: board, [INFO] [stderr] 237 | | pdata: pdata, [INFO] [stderr] 238 | | pmap: [0; 4], [INFO] [stderr] ... | [INFO] [stderr] 246 | | rand_mv_made: false, [INFO] [stderr] 247 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:118:45 [INFO] [stderr] | [INFO] [stderr] 118 | let c = elapsed.subsec_nanos() as f64 / 1000000000f64; [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider: `1_000_000_000f64` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/board.rs:64:17 [INFO] [stderr] | [INFO] [stderr] 64 | / return if pos.1 > 0 && self.get((pos.0, pos.1 - 1)).0 == 0 { [INFO] [stderr] 65 | | Some((pos.0, pos.1 - 1)) [INFO] [stderr] 66 | | } else { [INFO] [stderr] 67 | | None [INFO] [stderr] 68 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 64 | if pos.1 > 0 && self.get((pos.0, pos.1 - 1)).0 == 0 { [INFO] [stderr] 65 | Some((pos.0, pos.1 - 1)) [INFO] [stderr] 66 | } else { [INFO] [stderr] 67 | None [INFO] [stderr] 68 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/board.rs:72:17 [INFO] [stderr] | [INFO] [stderr] 72 | / return if pos.1 < BHEIGHT - 1 && self.get((pos.0, pos.1 + 1)).0 == 0 { [INFO] [stderr] 73 | | Some((pos.0, pos.1 + 1)) [INFO] [stderr] 74 | | } else { [INFO] [stderr] 75 | | None [INFO] [stderr] 76 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 72 | if pos.1 < BHEIGHT - 1 && self.get((pos.0, pos.1 + 1)).0 == 0 { [INFO] [stderr] 73 | Some((pos.0, pos.1 + 1)) [INFO] [stderr] 74 | } else { [INFO] [stderr] 75 | None [INFO] [stderr] 76 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/board.rs:80:17 [INFO] [stderr] | [INFO] [stderr] 80 | / return if pos.0 > 0 && self.get((pos.0 - 1, pos.1)).0 == 0 { [INFO] [stderr] 81 | | Some((pos.0 - 1, pos.1)) [INFO] [stderr] 82 | | } else { [INFO] [stderr] 83 | | None [INFO] [stderr] 84 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 80 | if pos.0 > 0 && self.get((pos.0 - 1, pos.1)).0 == 0 { [INFO] [stderr] 81 | Some((pos.0 - 1, pos.1)) [INFO] [stderr] 82 | } else { [INFO] [stderr] 83 | None [INFO] [stderr] 84 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/board.rs:88:17 [INFO] [stderr] | [INFO] [stderr] 88 | / return if pos.0 < BWIDTH - 1 && self.get((pos.0 + 1, pos.1)).0 == 0 { [INFO] [stderr] 89 | | Some((pos.0 + 1, pos.1)) [INFO] [stderr] 90 | | } else { [INFO] [stderr] 91 | | None [INFO] [stderr] 92 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 88 | if pos.0 < BWIDTH - 1 && self.get((pos.0 + 1, pos.1)).0 == 0 { [INFO] [stderr] 89 | Some((pos.0 + 1, pos.1)) [INFO] [stderr] 90 | } else { [INFO] [stderr] 91 | None [INFO] [stderr] 92 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/board.rs:100:17 [INFO] [stderr] | [INFO] [stderr] 100 | / return if p.1 > 0 && self.get((p.0, p.1 - 1)).0 == 0 { [INFO] [stderr] 101 | | Some(Move::U((p.0, p.1 - 1))) [INFO] [stderr] 102 | | } else { [INFO] [stderr] 103 | | None [INFO] [stderr] 104 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 100 | if p.1 > 0 && self.get((p.0, p.1 - 1)).0 == 0 { [INFO] [stderr] 101 | Some(Move::U((p.0, p.1 - 1))) [INFO] [stderr] 102 | } else { [INFO] [stderr] 103 | None [INFO] [stderr] 104 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/board.rs:108:17 [INFO] [stderr] | [INFO] [stderr] 108 | / return if p.1 < BHEIGHT - 1 && self.get((p.0, p.1 + 1)).0 == 0 { [INFO] [stderr] 109 | | Some(Move::D((p.0, p.1 + 1))) [INFO] [stderr] 110 | | } else { [INFO] [stderr] 111 | | None [INFO] [stderr] 112 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 108 | if p.1 < BHEIGHT - 1 && self.get((p.0, p.1 + 1)).0 == 0 { [INFO] [stderr] 109 | Some(Move::D((p.0, p.1 + 1))) [INFO] [stderr] 110 | } else { [INFO] [stderr] 111 | None [INFO] [stderr] 112 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/board.rs:116:17 [INFO] [stderr] | [INFO] [stderr] 116 | / return if p.0 > 0 && self.get((p.0 - 1, p.1)).0 == 0 { [INFO] [stderr] 117 | | Some(Move::L((p.0 - 1, p.1))) [INFO] [stderr] 118 | | } else { [INFO] [stderr] 119 | | None [INFO] [stderr] 120 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 116 | if p.0 > 0 && self.get((p.0 - 1, p.1)).0 == 0 { [INFO] [stderr] 117 | Some(Move::L((p.0 - 1, p.1))) [INFO] [stderr] 118 | } else { [INFO] [stderr] 119 | None [INFO] [stderr] 120 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/board.rs:124:17 [INFO] [stderr] | [INFO] [stderr] 124 | / return if p.0 < BWIDTH - 1 && self.get((p.0 + 1, p.1)).0 == 0 { [INFO] [stderr] 125 | | Some(Move::R((p.0 + 1, p.1))) [INFO] [stderr] 126 | | } else { [INFO] [stderr] 127 | | None [INFO] [stderr] 128 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 124 | if p.0 < BWIDTH - 1 && self.get((p.0 + 1, p.1)).0 == 0 { [INFO] [stderr] 125 | Some(Move::R((p.0 + 1, p.1))) [INFO] [stderr] 126 | } else { [INFO] [stderr] 127 | None [INFO] [stderr] 128 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/board.rs:292:9 [INFO] [stderr] | [INFO] [stderr] 292 | return self.c; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `self.c` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/board.rs:336:19 [INFO] [stderr] | [INFO] [stderr] 336 | prev: 999999, [INFO] [stderr] | ^^^^^^ help: consider: `999_999` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cell::Cell` [INFO] [stderr] --> src/support.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::cell::Cell; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Duration` [INFO] [stderr] --> src/aiminmax.rs:13:17 [INFO] [stderr] | [INFO] [stderr] 13 | use std::time::{Duration, Instant}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/aiminmax.rs:269:9 [INFO] [stderr] | [INFO] [stderr] 269 | / if board.get(t_p).0 == 0 { [INFO] [stderr] 270 | | if !tree.is_point_in(node, t_p) { [INFO] [stderr] 271 | | panic!( [INFO] [stderr] 272 | | "One of the players ({}) positions {:?} is not marked as full at depth {}", [INFO] [stderr] ... | [INFO] [stderr] 275 | | } [INFO] [stderr] 276 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 269 | if board.get(t_p).0 == 0 && !tree.is_point_in(node, t_p) { [INFO] [stderr] 270 | panic!( [INFO] [stderr] 271 | "One of the players ({}) positions {:?} is not marked as full at depth {}", [INFO] [stderr] 272 | p.no, t_p, depth [INFO] [stderr] 273 | ); [INFO] [stderr] 274 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/aiminmax.rs:277:9 [INFO] [stderr] | [INFO] [stderr] 277 | / if board.get(t_p).1 != p.no as u8 { [INFO] [stderr] 278 | | if !tree.is_point_in(node, t_p) { [INFO] [stderr] 279 | | panic!("One of the players player cells is not marked with ply no"); [INFO] [stderr] 280 | | } [INFO] [stderr] 281 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 277 | if board.get(t_p).1 != p.no as u8 && !tree.is_point_in(node, t_p) { [INFO] [stderr] 278 | panic!("One of the players player cells is not marked with ply no"); [INFO] [stderr] 279 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `aiminmax::MinMaxAI` [INFO] [stderr] --> src/main.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | use aiminmax::MinMaxAI; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Duration` [INFO] [stderr] --> src/ailong.rs:11:17 [INFO] [stderr] | [INFO] [stderr] 11 | use std::time::{Duration, Instant}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Duration` [INFO] [stderr] --> src/aimonte.rs:14:17 [INFO] [stderr] | [INFO] [stderr] 14 | use std::time::{Duration, Instant}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/aimonte.rs:70:16 [INFO] [stderr] | [INFO] [stderr] 70 | const C: f32 = 1.414213; [INFO] [stderr] | ^^^^^^^^ help: consider: `1.414_213` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/aimonte.rs:135:9 [INFO] [stderr] | [INFO] [stderr] 135 | return n; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `n` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/aimonte.rs:458:20 [INFO] [stderr] | [INFO] [stderr] 458 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 459 | | if (x, y) == pdata.players[p as usize].pos { [INFO] [stderr] 460 | | l.push_str(&format!("\x1b[31m{}\x1b[0m", p)); [INFO] [stderr] 461 | | } else { [INFO] [stderr] 462 | | l.push_str(&format!("{}", p)); [INFO] [stderr] 463 | | } [INFO] [stderr] 464 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 458 | } else if (x, y) == pdata.players[p as usize].pos { [INFO] [stderr] 459 | l.push_str(&format!("\x1b[31m{}\x1b[0m", p)); [INFO] [stderr] 460 | } else { [INFO] [stderr] 461 | l.push_str(&format!("{}", p)); [INFO] [stderr] 462 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `support::PlayerData` [INFO] [stderr] --> src/simgame.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use support::PlayerData; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Duration` [INFO] [stderr] --> src/simgame.rs:5:17 [INFO] [stderr] | [INFO] [stderr] 5 | use std::time::{Duration, Instant}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/simgame.rs:133:20 [INFO] [stderr] | [INFO] [stderr] 133 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 134 | | if (x,y) == pos[p as usize] { [INFO] [stderr] 135 | | l.push_str(&format!("\x1b[31m{}\x1b[0m", p)); [INFO] [stderr] 136 | | } else { [INFO] [stderr] 137 | | l.push_str(&format!("{}", p)); [INFO] [stderr] 138 | | } [INFO] [stderr] 139 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 133 | } else if (x,y) == pos[p as usize] { [INFO] [stderr] 134 | l.push_str(&format!("\x1b[31m{}\x1b[0m", p)); [INFO] [stderr] 135 | } else { [INFO] [stderr] 136 | l.push_str(&format!("{}", p)); [INFO] [stderr] 137 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `Duration` [INFO] [stderr] --> src/aiflood.rs:8:17 [INFO] [stderr] | [INFO] [stderr] 8 | use std::time::{Duration, Instant}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Duration` [INFO] [stderr] --> src/ai.rs:6:17 [INFO] [stderr] | [INFO] [stderr] 6 | use std::time::{Duration, Instant}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io` [INFO] [stderr] --> src/floodfill.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::io; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/floodfill.rs:85:13 [INFO] [stderr] | [INFO] [stderr] 85 | / if play < MAXPLAYERS { [INFO] [stderr] 86 | | if v > max_depths[play] { [INFO] [stderr] 87 | | max_depths[play] = v; [INFO] [stderr] 88 | | } [INFO] [stderr] 89 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 85 | if play < MAXPLAYERS && v > max_depths[play] { [INFO] [stderr] 86 | max_depths[play] = v; [INFO] [stderr] 87 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `aiminmax::scan_move` [INFO] [stderr] --> src/neural.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | use aiminmax::scan_move; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `aiminmax::score_for_player` [INFO] [stderr] --> src/neural.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | use aiminmax::score_for_player;//(scores, player) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Duration` [INFO] [stderr] --> src/neural.rs:20:17 [INFO] [stderr] | [INFO] [stderr] 20 | use std::time::{Duration, Instant}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/neural.rs:53:9 [INFO] [stderr] | [INFO] [stderr] 53 | / if play < MAXPLAYERS { [INFO] [stderr] 54 | | if v > max_depths[play] { [INFO] [stderr] 55 | | max_depths[play] = v; [INFO] [stderr] 56 | | } [INFO] [stderr] 57 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 53 | if play < MAXPLAYERS && v > max_depths[play] { [INFO] [stderr] 54 | max_depths[play] = v; [INFO] [stderr] 55 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/neural.rs:249:9 [INFO] [stderr] | [INFO] [stderr] 249 | nai [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/neural.rs:235:19 [INFO] [stderr] | [INFO] [stderr] 235 | let nai = NeuralAI { [INFO] [stderr] | ___________________^ [INFO] [stderr] 236 | | board: board, [INFO] [stderr] 237 | | pdata: pdata, [INFO] [stderr] 238 | | pmap: [0; 4], [INFO] [stderr] ... | [INFO] [stderr] 246 | | rand_mv_made: false, [INFO] [stderr] 247 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:118:45 [INFO] [stderr] | [INFO] [stderr] 118 | let c = elapsed.subsec_nanos() as f64 / 1000000000f64; [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider: `1_000_000_000f64` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unused variable: `len` [INFO] [stderr] --> src/main.rs:53:9 [INFO] [stderr] | [INFO] [stderr] 53 | let len = file.read_line(&mut line); [INFO] [stderr] | ^^^ help: consider using `_len` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `empty_tree` [INFO] [stderr] --> src/main.rs:106:9 [INFO] [stderr] | [INFO] [stderr] 106 | let empty_tree = MoveTree::new(); [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_empty_tree` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ai3` [INFO] [stderr] --> src/main.rs:163:13 [INFO] [stderr] | [INFO] [stderr] 163 | let mut ai3 = LongAI::new(); [INFO] [stderr] | ^^^ help: consider using `_ai3` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ai_to_dump` [INFO] [stderr] --> src/main.rs:169:13 [INFO] [stderr] | [INFO] [stderr] 169 | let mut ai_to_dump:Option = None; [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_ai_to_dump` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `me` [INFO] [stderr] --> src/main.rs:250:13 [INFO] [stderr] | [INFO] [stderr] 250 | let me = parse_input!(inputs[1], usize); // your player number (0 to 3). [INFO] [stderr] | ^^ help: consider using `_me` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `len` [INFO] [stderr] --> src/main.rs:53:9 [INFO] [stderr] | [INFO] [stderr] 53 | let len = file.read_line(&mut line); [INFO] [stderr] | ^^^ help: consider using `_len` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable `turn` is assigned to, but never used [INFO] [stderr] --> src/simgame.rs:93:17 [INFO] [stderr] | [INFO] [stderr] 93 | let mut turn = 0; [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_turn` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `start` [INFO] [stderr] --> src/aiflood.rs:30:47 [INFO] [stderr] | [INFO] [stderr] 30 | fn next_move(&mut self, p_pos: &[PPos; 4],start:Instant) -> Move { [INFO] [stderr] | ^^^^^ help: consider using `_start` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `empty_tree` [INFO] [stderr] --> src/main.rs:106:9 [INFO] [stderr] | [INFO] [stderr] 106 | let empty_tree = MoveTree::new(); [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_empty_tree` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ai3` [INFO] [stderr] --> src/main.rs:163:13 [INFO] [stderr] | [INFO] [stderr] 163 | let mut ai3 = LongAI::new(); [INFO] [stderr] | ^^^ help: consider using `_ai3` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ai_to_dump` [INFO] [stderr] --> src/main.rs:169:13 [INFO] [stderr] | [INFO] [stderr] 169 | let mut ai_to_dump:Option = None; [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_ai_to_dump` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `v` [INFO] [stderr] --> src/floodfill.rs:216:22 [INFO] [stderr] | [INFO] [stderr] 216 | let (v,p) = self.get((x,y)); [INFO] [stderr] | ^ help: consider using `_v` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `me` [INFO] [stderr] --> src/main.rs:250:13 [INFO] [stderr] | [INFO] [stderr] 250 | let me = parse_input!(inputs[1], usize); // your player number (0 to 3). [INFO] [stderr] | ^^ help: consider using `_me` instead [INFO] [stderr] [INFO] [stderr] warning: variable `this_move` is assigned to, but never used [INFO] [stderr] --> src/neural.rs:306:29 [INFO] [stderr] | [INFO] [stderr] 306 | let mut this_move = avail_moves.moves[best_option].get_point(); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_this_move` instead [INFO] [stderr] [INFO] [stderr] warning: value assigned to `this_move` is never read [INFO] [stderr] --> src/neural.rs:312:21 [INFO] [stderr] | [INFO] [stderr] 312 | this_move = avail_moves.moves[second_option].get_point(); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `start_time` [INFO] [stderr] --> src/neural.rs:257:48 [INFO] [stderr] | [INFO] [stderr] 257 | fn next_move(&mut self, p_pos: &[PPos; 4], start_time:Instant) -> Move { [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_start_time` instead [INFO] [stderr] [INFO] [stderr] warning: variable `turn` is assigned to, but never used [INFO] [stderr] --> src/simgame.rs:93:17 [INFO] [stderr] | [INFO] [stderr] 93 | let mut turn = 0; [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_turn` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `start` [INFO] [stderr] --> src/aiflood.rs:30:47 [INFO] [stderr] | [INFO] [stderr] 30 | fn next_move(&mut self, p_pos: &[PPos; 4],start:Instant) -> Move { [INFO] [stderr] | ^^^^^ help: consider using `_start` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `v` [INFO] [stderr] --> src/floodfill.rs:216:22 [INFO] [stderr] | [INFO] [stderr] 216 | let (v,p) = self.get((x,y)); [INFO] [stderr] | ^ help: consider using `_v` instead [INFO] [stderr] [INFO] [stderr] warning: variable `this_move` is assigned to, but never used [INFO] [stderr] --> src/neural.rs:306:29 [INFO] [stderr] | [INFO] [stderr] 306 | let mut this_move = avail_moves.moves[best_option].get_point(); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_this_move` instead [INFO] [stderr] [INFO] [stderr] warning: value assigned to `this_move` is never read [INFO] [stderr] --> src/neural.rs:312:21 [INFO] [stderr] | [INFO] [stderr] 312 | this_move = avail_moves.moves[second_option].get_point(); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `start_time` [INFO] [stderr] --> src/neural.rs:257:48 [INFO] [stderr] | [INFO] [stderr] 257 | fn next_move(&mut self, p_pos: &[PPos; 4], start_time:Instant) -> Move { [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_start_time` instead [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:163:9 [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] | [INFO] [stderr] --> src/main.rs:163:9 [INFO] [stderr] 163 | let mut ai3 = LongAI::new(); [INFO] [stderr] | ----^^^ [INFO] [stderr] | [INFO] [stderr] 163 | let mut ai3 = LongAI::new(); [INFO] [stderr] | | [INFO] [stderr] | ----^^^ [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:168:9 [INFO] [stderr] | [INFO] [stderr] 168 | let mut improves = 0; [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:169:9 [INFO] [stderr] | [INFO] [stderr] 169 | let mut ai_to_dump:Option = None; [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:168:9 [INFO] [stderr] | [INFO] [stderr] 168 | let mut improves = 0; [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:169:9 [INFO] [stderr] | [INFO] [stderr] 169 | let mut ai_to_dump:Option = None; [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/neural.rs:260:13 [INFO] [stderr] | [INFO] [stderr] 260 | let mut avail_moves = AvailMoves::calc_board(&self.board, self.pdata.me().pos); [INFO] [stderr] | ----^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/neural.rs:260:13 [INFO] [stderr] | [INFO] [stderr] 260 | let mut avail_moves = AvailMoves::calc_board(&self.board, self.pdata.me().pos); [INFO] [stderr] | ----^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: method is never used: `cpy` [INFO] [stderr] --> src/board.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | pub fn cpy(&self) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `to_string` [INFO] [stderr] --> src/board.rs:132:5 [INFO] [stderr] | [INFO] [stderr] 132 | pub fn to_string(&self, pmap: [usize; 4]) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `cpy` [INFO] [stderr] --> src/board.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | pub fn cpy(&self) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] warning: method is never used: `tree_check` [INFO] [stderr] --> src/board.rs:257:5 [INFO] [stderr] | [INFO] [stderr] 257 | pub fn tree_check(self, tree: &MoveTree, node: usize) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] warning: method is never used: `contains` [INFO] [stderr] --> src/board.rs:272:5 [INFO] [stderr] | [INFO] [stderr] 272 | pub fn contains(&self, m: &Move) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `to_str` [INFO] [stderr] --> src/board.rs:320:5 [INFO] [stderr] | [INFO] [stderr] 320 | pub fn to_str(&self, node: usize) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `is_point_in` [INFO] [stderr] --> src/board.rs:352:5 [INFO] [stderr] | [INFO] [stderr] 352 | pub fn is_point_in(&self, node: usize, point: PPos) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] warning: method is never used: `to_string` [INFO] [stderr] --> src/board.rs:132:5 [INFO] [stderr] | [INFO] [stderr] --> src/support.rs:22:5 [INFO] [stderr] 132 | pub fn to_string(&self, pmap: [usize; 4]) -> String { [INFO] [stderr] | [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 22 | pub fn new()->Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/support.rs:36:5 [INFO] [stderr] | [INFO] [stderr] 36 | pub fn new()->Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `to_string` [INFO] [stderr] --> src/support.rs:59:5 [INFO] [stderr] | [INFO] [stderr] 59 | pub fn to_string(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `tree_check` [INFO] [stderr] --> src/board.rs:257:5 [INFO] [stderr] | [INFO] [stderr] 257 | pub fn tree_check(self, tree: &MoveTree, node: usize) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] warning: method is never used: `iter_live` [INFO] [stderr] --> src/support.rs:110:5 [INFO] [stderr] | [INFO] [stderr] 110 | pub fn iter_live(&self) -> ::std::iter::Filter<::std::slice::Iter, fn(&&Player) -> bool> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/aiminmax.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | pub fn new() -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `contains` [INFO] [stderr] --> src/board.rs:272:5 [INFO] [stderr] | [INFO] [stderr] 272 | pub fn contains(&self, m: &Move) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `to_str` [INFO] [stderr] --> src/board.rs:320:5 [INFO] [stderr] | [INFO] [stderr] 320 | pub fn to_str(&self, node: usize) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] warning: function is never used: `sanity_check_move` [INFO] [stderr] --> src/aiminmax.rs:237:1 [INFO] [stderr] | [INFO] [stderr] 237 | / fn sanity_check_move( [INFO] [stderr] 238 | | player: usize, [INFO] [stderr] 239 | | pdata: &PlayerData, [INFO] [stderr] 240 | | nmove: PPos, [INFO] [stderr] ... | [INFO] [stderr] 282 | | } [INFO] [stderr] 283 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: method is never used: `is_point_in` [INFO] [stderr] --> src/board.rs:352:5 [INFO] [stderr] | [INFO] [stderr] 352 | pub fn is_point_in(&self, node: usize, point: PPos) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] warning: method is never used: `print_players` [INFO] [stderr] [INFO] [stderr] --> src/aimonte.rs:151:5 [INFO] [stderr] | [INFO] [stderr] 151 | fn print_players(&self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_board` [INFO] [stderr] --> src/aimonte.rs:176:5 [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] | [INFO] [stderr] --> src/support.rs:22:5 [INFO] [stderr] 176 | fn get_board(&self, pp: PP) -> u8 { [INFO] [stderr] | [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 22 | pub fn new()->Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `MOVES` [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/support.rs:36:5 [INFO] [stderr] | [INFO] [stderr] 36 | pub fn new()->Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] --> src/aimonte.rs:391:1 [INFO] [stderr] | [INFO] [stderr] 391 | const MOVES: [u8; 4] = [MSK_N, MSK_S, MSK_W, MSK_E]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: function is never used: `print_turn` [INFO] [stderr] --> src/aimonte.rs:441:1 [INFO] [stderr] | [INFO] [stderr] 441 | pub fn print_turn(pdata: &PlayerData, b: &Board) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `to_string` [INFO] [stderr] --> src/support.rs:59:5 [INFO] [stderr] | [INFO] [stderr] 59 | pub fn to_string(&self) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] warning: method is never used: `replay` [INFO] [stderr] --> src/simgame.rs:59:5 [INFO] [stderr] | [INFO] [stderr] 59 | pub fn replay(&mut self, random_player:usize)->([usize;4],usize) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: function is never used: `print_turn` [INFO] [stderr] --> src/simgame.rs:121:1 [INFO] [stderr] | [INFO] [stderr] 121 | pub fn print_turn(pos:[PPos;4], b: &Board) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `iter_live` [INFO] [stderr] --> src/support.rs:110:5 [INFO] [stderr] | [INFO] [stderr] 110 | pub fn iter_live(&self) -> ::std::iter::Filter<::std::slice::Iter, fn(&&Player) -> bool> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/aiminmax.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | pub fn new() -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `sanity_check_move` [INFO] [stderr] --> src/aiminmax.rs:237:1 [INFO] [stderr] | [INFO] [stderr] 237 | / fn sanity_check_move( [INFO] [stderr] 238 | | player: usize, [INFO] [stderr] 239 | | pdata: &PlayerData, [INFO] [stderr] 240 | | nmove: PPos, [INFO] [stderr] ... | [INFO] [stderr] 282 | | } [INFO] [stderr] 283 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `print_players` [INFO] [stderr] --> src/aimonte.rs:151:5 [INFO] [stderr] | [INFO] [stderr] 151 | fn print_players(&self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_board` [INFO] [stderr] --> src/aimonte.rs:176:5 [INFO] [stderr] | [INFO] [stderr] 176 | fn get_board(&self, pp: PP) -> u8 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `MOVES` [INFO] [stderr] --> src/aimonte.rs:391:1 [INFO] [stderr] | [INFO] [stderr] 391 | const MOVES: [u8; 4] = [MSK_N, MSK_S, MSK_W, MSK_E]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `print_turn` [INFO] [stderr] --> src/aimonte.rs:441:1 [INFO] [stderr] | [INFO] [stderr] 441 | pub fn print_turn(pdata: &PlayerData, b: &Board) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `replay` [INFO] [stderr] --> src/simgame.rs:59:5 [INFO] [stderr] | [INFO] [stderr] 59 | pub fn replay(&mut self, random_player:usize)->([usize;4],usize) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `print_turn` [INFO] [stderr] --> src/simgame.rs:121:1 [INFO] [stderr] | [INFO] [stderr] 121 | pub fn print_turn(pos:[PPos;4], b: &Board) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `to_string` [INFO] [stderr] --> src/floodfill.rs:80:5 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn to_string(&self, perspect: u8) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `SCORE_NORMAL` [INFO] [stderr] --> src/neural.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | pub const SCORE_NORMAL: f32 = 500.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `INPUT_SIZE` [INFO] [stderr] --> src/neural.rs:24:1 [INFO] [stderr] | [INFO] [stderr] 24 | pub const INPUT_SIZE: usize = 600; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `sigmoid` [INFO] [stderr] --> src/neural.rs:81:1 [INFO] [stderr] | [INFO] [stderr] 81 | fn sigmoid(y: f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `to_string` [INFO] [stderr] --> src/floodfill.rs:80:5 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn to_string(&self, perspect: u8) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] warning: function is never used: `loadvec_from_str` [INFO] [stderr] --> src/neural.rs:103:1 [INFO] [stderr] | [INFO] [stderr] 103 | fn loadvec_from_str(v: &mut Vec, data: &str, delimiter: char) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: function is never used: `process_data` [INFO] [stderr] --> src/neural.rs:114:1 [INFO] [stderr] | [INFO] [stderr] 114 | pub fn process_data(nn: NeuralNet) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `tree` [INFO] [stderr] --> src/neural.rs:224:5 [INFO] [stderr] | [INFO] [stderr] 224 | tree: MoveTree, // Only used for evaluating random positions [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `SCORE_NORMAL` [INFO] [stderr] --> src/neural.rs:23:1 [INFO] [stderr] | [INFO] [stderr] 23 | pub const SCORE_NORMAL: f32 = 500.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `INPUT_SIZE` [INFO] [stderr] --> src/neural.rs:24:1 [INFO] [stderr] | [INFO] [stderr] 24 | pub const INPUT_SIZE: usize = 600; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `sigmoid` [INFO] [stderr] --> src/neural.rs:81:1 [INFO] [stderr] | [INFO] [stderr] 81 | fn sigmoid(y: f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `loadvec_from_str` [INFO] [stderr] --> src/neural.rs:103:1 [INFO] [stderr] | [INFO] [stderr] 103 | fn loadvec_from_str(v: &mut Vec, data: &str, delimiter: char) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `process_data` [INFO] [stderr] --> src/neural.rs:114:1 [INFO] [stderr] | [INFO] [stderr] 114 | pub fn process_data(nn: NeuralNet) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `tree` [INFO] [stderr] --> src/neural.rs:224:5 [INFO] [stderr] | [INFO] [stderr] 224 | tree: MoveTree, // Only used for evaluating random positions [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `dump_moves` [INFO] [stderr] --> src/neural.rs:251:5 [INFO] [stderr] | [INFO] [stderr] 251 | pub fn dump_moves(&self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `c_def` [INFO] [stderr] --> src/main.rs:39:1 [INFO] [stderr] | [INFO] [stderr] 39 | const c_def:&str = "\x1b[m"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `c_red` [INFO] [stderr] --> src/main.rs:40:1 [INFO] [stderr] | [INFO] [stderr] 40 | const c_red:&str = "\x1b[31m"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `c_grn` [INFO] [stderr] --> src/main.rs:41:1 [INFO] [stderr] | [INFO] [stderr] 41 | const c_grn:&str = "\x1b[32m"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `board_load` [INFO] [stderr] --> src/main.rs:49:1 [INFO] [stderr] | [INFO] [stderr] 49 | fn board_load(b: &mut Board, pdata: &mut PlayerData) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `time_floodfill` [INFO] [stderr] --> src/main.rs:86:1 [INFO] [stderr] | [INFO] [stderr] 86 | fn time_floodfill() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `test_nn` [INFO] [stderr] --> src/main.rs:219:1 [INFO] [stderr] | [INFO] [stderr] 219 | fn test_nn() { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `dump_moves` [INFO] [stderr] --> src/neural.rs:251:5 [INFO] [stderr] | [INFO] [stderr] 251 | pub fn dump_moves(&self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `c_def` [INFO] [stderr] --> src/main.rs:39:1 [INFO] [stderr] | [INFO] [stderr] 39 | const c_def:&str = "\x1b[m"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `c_red` [INFO] [stderr] --> src/main.rs:40:1 [INFO] [stderr] | [INFO] [stderr] 40 | const c_red:&str = "\x1b[31m"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `c_grn` [INFO] [stderr] --> src/main.rs:41:1 [INFO] [stderr] | [INFO] [stderr] 41 | const c_grn:&str = "\x1b[32m"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `board_load` [INFO] [stderr] --> src/main.rs:49:1 [INFO] [stderr] | [INFO] [stderr] 49 | fn board_load(b: &mut Board, pdata: &mut PlayerData) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `time_floodfill` [INFO] [stderr] --> src/main.rs:86:1 [INFO] [stderr] | [INFO] [stderr] 86 | fn time_floodfill() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `test_nn` [INFO] [stderr] --> src/main.rs:219:1 [INFO] [stderr] | [INFO] [stderr] 219 | fn test_nn() { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/board.rs:206:12 [INFO] [stderr] | [INFO] [stderr] 206 | if pdata.is_dead(pyr) == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!pdata.is_dead(pyr)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/board.rs:206:12 [INFO] [stderr] | [INFO] [stderr] 206 | if pdata.is_dead(pyr) == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!pdata.is_dead(pyr)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/support.rs:113:35 [INFO] [stderr] | [INFO] [stderr] 113 | t_slice.iter().filter(|s| s.dead == false) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!s.dead` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/support.rs:120:16 [INFO] [stderr] | [INFO] [stderr] 120 | if self.players[next_player].dead == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!self.players[next_player].dead` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/support.rs:133:16 [INFO] [stderr] | [INFO] [stderr] 133 | if self.players[i].dead == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!self.players[i].dead` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `start_pos` [INFO] [stderr] --> src/aiminmax.rs:129:18 [INFO] [stderr] | [INFO] [stderr] 129 | for i in 0..no_players { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 129 | for (i, ) in start_pos.iter().enumerate().take(no_players) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `scores` [INFO] [stderr] --> src/aiminmax.rs:227:14 [INFO] [stderr] | [INFO] [stderr] 227 | for i in 0..::support::MAXPLAYERS { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 227 | for (i, ) in scores.iter().enumerate().take(::support::MAXPLAYERS) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you probably are missing some parameter in your format string [INFO] [stderr] --> src/aiminmax.rs:247:16 [INFO] [stderr] | [INFO] [stderr] 247 | panic!("Width exceeded {}"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::panic_params)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#panic_params [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `start_pos` [INFO] [stderr] --> src/ailong.rs:88:18 [INFO] [stderr] | [INFO] [stderr] 88 | for i in 0..no_players { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 88 | for (i, ) in start_pos.iter().enumerate().take(no_players) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/support.rs:113:35 [INFO] [stderr] | [INFO] [stderr] 113 | t_slice.iter().filter(|s| s.dead == false) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!s.dead` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/support.rs:120:16 [INFO] [stderr] | [INFO] [stderr] 120 | if self.players[next_player].dead == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!self.players[next_player].dead` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/support.rs:133:16 [INFO] [stderr] | [INFO] [stderr] 133 | if self.players[i].dead == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!self.players[i].dead` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::SQRT_2` found. Consider using it directly [INFO] [stderr] --> src/aimonte.rs:70:16 [INFO] [stderr] | [INFO] [stderr] 70 | const C: f32 = 1.414213; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::approx_constant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `cells` [INFO] [stderr] --> src/aimonte.rs:76:18 [INFO] [stderr] | [INFO] [stderr] 76 | for i in 0..600 { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 76 | for (i, ) in cells.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `players` [INFO] [stderr] --> src/aimonte.rs:82:18 [INFO] [stderr] | [INFO] [stderr] 82 | for i in 0..pdata.no_players { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 82 | for (i, ) in players.iter_mut().enumerate().take(pdata.no_players) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/aimonte.rs:105:24 [INFO] [stderr] | [INFO] [stderr] 105 | let wins:f32 = self.wins[player as usize] as f32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(self.wins[player as usize])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/aimonte.rs:106:25 [INFO] [stderr] | [INFO] [stderr] 106 | let plays:f32 = self.plays as f32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f32::from(self.plays)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/aimonte.rs:114:42 [INFO] [stderr] | [INFO] [stderr] 114 | fn find_best_leaf(top: usize, mtree: &Vec)->usize{ [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[MonteNode]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: casting u16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/aimonte.rs:121:24 [INFO] [stderr] | [INFO] [stderr] 121 | let ln_n = (mtree[n].plays as f32).ln(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(mtree[n].plays)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `start_pos` [INFO] [stderr] --> src/aiminmax.rs:129:18 [INFO] [stderr] | [INFO] [stderr] 129 | for i in 0..no_players { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 129 | for (i, ) in start_pos.iter().enumerate().take(no_players) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `scores` [INFO] [stderr] --> src/aiminmax.rs:227:14 [INFO] [stderr] | [INFO] [stderr] 227 | for i in 0..::support::MAXPLAYERS { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 227 | for (i, ) in scores.iter().enumerate().take(::support::MAXPLAYERS) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: Calling `subsec_millis()` is more concise than this calculation [INFO] [stderr] --> src/aimonte.rs:413:38 [INFO] [stderr] | [INFO] [stderr] 413 | let elapsed_millis = Instant::now().duration_since(start_time).subsec_nanos() / 1_000_000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `Instant::now().duration_since(start_time).subsec_millis()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::duration_subsec)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duration_subsec [INFO] [stderr] [INFO] [stderr] warning: casting u16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/aimonte.rs:429:31 [INFO] [stderr] | [INFO] [stderr] 429 | let tscore: f32 = mn.plays as f32; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f32::from(mn.plays)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you probably are missing some parameter in your format string [INFO] [stderr] --> src/aiminmax.rs:247:16 [INFO] [stderr] | [INFO] [stderr] 247 | panic!("Width exceeded {}"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::panic_params)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#panic_params [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `start_pos` [INFO] [stderr] --> src/aimonte.rs:508:18 [INFO] [stderr] | [INFO] [stderr] 508 | for i in 0..no_players { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 508 | for (i, ) in start_pos.iter().enumerate().take(no_players) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `start_pos` [INFO] [stderr] --> src/ailong.rs:88:18 [INFO] [stderr] | [INFO] [stderr] 88 | for i in 0..no_players { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 88 | for (i, ) in start_pos.iter().enumerate().take(no_players) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `pos`. [INFO] [stderr] --> src/simgame.rs:123:14 [INFO] [stderr] | [INFO] [stderr] 123 | for i in 0..pos.len() { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 123 | for in &pos { [INFO] [stderr] | ^^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `start_pos` [INFO] [stderr] --> src/aiflood.rs:89:18 [INFO] [stderr] | [INFO] [stderr] 89 | for i in 0..no_players { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 89 | for (i, ) in start_pos.iter().enumerate().take(no_players) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::SQRT_2` found. Consider using it directly [INFO] [stderr] --> src/aimonte.rs:70:16 [INFO] [stderr] | [INFO] [stderr] 70 | const C: f32 = 1.414213; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::approx_constant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `cells` [INFO] [stderr] --> src/aimonte.rs:76:18 [INFO] [stderr] | [INFO] [stderr] 76 | for i in 0..600 { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 76 | for (i, ) in cells.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `players` [INFO] [stderr] --> src/aimonte.rs:82:18 [INFO] [stderr] | [INFO] [stderr] 82 | for i in 0..pdata.no_players { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 82 | for (i, ) in players.iter_mut().enumerate().take(pdata.no_players) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/aimonte.rs:105:24 [INFO] [stderr] | [INFO] [stderr] 105 | let wins:f32 = self.wins[player as usize] as f32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(self.wins[player as usize])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/aimonte.rs:106:25 [INFO] [stderr] | [INFO] [stderr] 106 | let plays:f32 = self.plays as f32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f32::from(self.plays)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/aimonte.rs:114:42 [INFO] [stderr] | [INFO] [stderr] 114 | fn find_best_leaf(top: usize, mtree: &Vec)->usize{ [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[MonteNode]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: casting u16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/aimonte.rs:121:24 [INFO] [stderr] | [INFO] [stderr] 121 | let ln_n = (mtree[n].plays as f32).ln(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(mtree[n].plays)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `scores` [INFO] [stderr] --> src/ai.rs:53:18 [INFO] [stderr] | [INFO] [stderr] 53 | for i in 0..::support::MAXPLAYERS { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 53 | for (i, ) in scores.iter().enumerate().take(::support::MAXPLAYERS) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/floodfill.rs:35:39 [INFO] [stderr] | [INFO] [stderr] 35 | if board.cells[i] != 0 && new_board.p_pos[board.play[i] as usize].dead == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!new_board.p_pos[board.play[i] as usize].dead` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/floodfill.rs:46:16 [INFO] [stderr] | [INFO] [stderr] 46 | if self.p_pos[play as usize].dead == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!self.p_pos[play as usize].dead` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/floodfill.rs:74:17 [INFO] [stderr] | [INFO] [stderr] 74 | scores[self.play[i] as usize] = scores[self.play[i] as usize] + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `scores[self.play[i] as usize] += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/floodfill.rs:162:15 [INFO] [stderr] | [INFO] [stderr] 162 | while queue.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!queue.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: Calling `subsec_millis()` is more concise than this calculation [INFO] [stderr] --> src/aimonte.rs:413:38 [INFO] [stderr] | [INFO] [stderr] 413 | let elapsed_millis = Instant::now().duration_since(start_time).subsec_nanos() / 1_000_000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `Instant::now().duration_since(start_time).subsec_millis()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::duration_subsec)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duration_subsec [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/floodfill.rs:201:16 [INFO] [stderr] | [INFO] [stderr] 201 | if self.p_pos[i].dead == false && self.p_pos[i].pos == pos { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!self.p_pos[i].dead` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: casting u16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/aimonte.rs:429:31 [INFO] [stderr] | [INFO] [stderr] 429 | let tscore: f32 = mn.plays as f32; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f32::from(mn.plays)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/neural.rs:33:14 [INFO] [stderr] | [INFO] [stderr] 33 | fn vec2str(v:&Vec)->String { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/neural.rs:46:18 [INFO] [stderr] | [INFO] [stderr] 46 | let h_flip = if p_pos.0 < 15 { false } else { true }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can reduce it to: `!(p_pos.0 < 15)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/neural.rs:47:18 [INFO] [stderr] | [INFO] [stderr] 47 | let v_flip = if p_pos.1 < 10 { false } else { true }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can reduce it to: `!(p_pos.1 < 10)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: casting u16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/neural.rs:67:32 [INFO] [stderr] | [INFO] [stderr] 67 | cval = scale_1((max_depths[p as usize] + 1 - v) as f32, CELL_NORMAL); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(max_depths[p as usize] + 1 - v)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `start_pos` [INFO] [stderr] --> src/aimonte.rs:508:18 [INFO] [stderr] | [INFO] [stderr] 508 | for i in 0..no_players { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] warning: the variable `count` is used as a loop counter. Consider using `for (count, item) in BufReader::new(file).lines().enumerate()` or similar iterators [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 508 | for (i, ) in start_pos.iter().enumerate().take(no_players) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] --> src/neural.rs:118:17 [INFO] [stderr] | [INFO] [stderr] 118 | for line in BufReader::new(file).lines() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/neural.rs:174:31 [INFO] [stderr] | [INFO] [stderr] 174 | pub fn calc(&self, input: &Vec) -> f32 { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `r1` [INFO] [stderr] --> src/neural.rs:181:18 [INFO] [stderr] | [INFO] [stderr] 181 | for i in 0..r1.len() { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 181 | for (i, ) in r1.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `j` is used to index `input` [INFO] [stderr] --> src/neural.rs:183:22 [INFO] [stderr] | [INFO] [stderr] 183 | for j in 0..LYR_INPUT { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 183 | for (j, ) in input.iter().enumerate().take(LYR_INPUT) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `r2` [INFO] [stderr] --> src/neural.rs:193:18 [INFO] [stderr] | [INFO] [stderr] 193 | for i in 0..r2.len() { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 193 | for (i, ) in r2.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `j` is used to index `r1` [INFO] [stderr] --> src/neural.rs:195:22 [INFO] [stderr] | [INFO] [stderr] 195 | for j in 0..LYR_H1 { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 195 | for (j, ) in r1.iter().enumerate().take(LYR_H1) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `r2` [INFO] [stderr] --> src/neural.rs:204:18 [INFO] [stderr] | [INFO] [stderr] 204 | for i in 0..r2.len() { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 204 | for (i, ) in r2.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `pos`. [INFO] [stderr] --> src/simgame.rs:123:14 [INFO] [stderr] | [INFO] [stderr] 123 | for i in 0..pos.len() { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 123 | for in &pos { [INFO] [stderr] | ^^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `move_scores` [INFO] [stderr] --> src/neural.rs:270:22 [INFO] [stderr] | [INFO] [stderr] 270 | for i in 0..avail_moves.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 270 | for (i, ) in move_scores.iter_mut().enumerate().take(avail_moves.len()) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `move_scores` [INFO] [stderr] --> src/neural.rs:282:22 [INFO] [stderr] | [INFO] [stderr] 282 | for i in 0..avail_moves.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 282 | for (i, ) in move_scores.iter().enumerate().take(avail_moves.len()) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `move_scores` [INFO] [stderr] --> src/neural.rs:294:26 [INFO] [stderr] | [INFO] [stderr] 294 | for i in 0..avail_moves.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 294 | for (i, ) in move_scores.iter().enumerate().take(avail_moves.len()) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `start_pos` [INFO] [stderr] --> src/aiflood.rs:89:18 [INFO] [stderr] | [INFO] [stderr] 89 | for i in 0..no_players { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 89 | for (i, ) in start_pos.iter().enumerate().take(no_players) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `scores` [INFO] [stderr] --> src/ai.rs:53:18 [INFO] [stderr] | [INFO] [stderr] 53 | for i in 0..::support::MAXPLAYERS { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 53 | for (i, ) in scores.iter().enumerate().take(::support::MAXPLAYERS) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/floodfill.rs:35:39 [INFO] [stderr] | [INFO] [stderr] 35 | if board.cells[i] != 0 && new_board.p_pos[board.play[i] as usize].dead == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!new_board.p_pos[board.play[i] as usize].dead` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `start_pos` [INFO] [stderr] --> src/neural.rs:361:18 [INFO] [stderr] | [INFO] [stderr] 361 | for i in 0..no_players { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 361 | for (i, ) in start_pos.iter().enumerate().take(no_players) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `c_def` should have an upper case name such as `C_DEF` [INFO] [stderr] --> src/main.rs:39:1 [INFO] [stderr] | [INFO] [stderr] 39 | const c_def:&str = "\x1b[m"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_upper_case_globals)] on by default [INFO] [stderr] [INFO] [stderr] warning: constant `c_red` should have an upper case name such as `C_RED` [INFO] [stderr] --> src/main.rs:40:1 [INFO] [stderr] | [INFO] [stderr] 40 | const c_red:&str = "\x1b[31m"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `c_grn` should have an upper case name such as `C_GRN` [INFO] [stderr] --> src/main.rs:41:1 [INFO] [stderr] | [INFO] [stderr] 41 | const c_grn:&str = "\x1b[32m"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/floodfill.rs:46:16 [INFO] [stderr] | [INFO] [stderr] 46 | if self.p_pos[play as usize].dead == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!self.p_pos[play as usize].dead` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:54:39 [INFO] [stderr] | [INFO] [stderr] 54 | let mut split = line.trim().split(" "); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: the variable `y` is used as a loop counter. Consider using `for (y, item) in file.lines().enumerate()` or similar iterators [INFO] [stderr] --> src/main.rs:65:17 [INFO] [stderr] | [INFO] [stderr] 65 | for line in file.lines() { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/floodfill.rs:74:17 [INFO] [stderr] | [INFO] [stderr] 74 | scores[self.play[i] as usize] = scores[self.play[i] as usize] + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `scores[self.play[i] as usize] += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: the variable `x` is used as a loop counter. Consider using `for (x, item) in ts.chars().enumerate()` or similar iterators [INFO] [stderr] --> src/main.rs:70:18 [INFO] [stderr] | [INFO] [stderr] 70 | for c in ts.chars() { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:118:13 [INFO] [stderr] | [INFO] [stderr] 118 | let c = elapsed.subsec_nanos() as f64 / 1000000000f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(elapsed.subsec_nanos())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `a`. [INFO] [stderr] --> src/main.rs:125:14 [INFO] [stderr] | [INFO] [stderr] 125 | for i in 0..4 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 125 | for in &a { [INFO] [stderr] | ^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/floodfill.rs:162:15 [INFO] [stderr] | [INFO] [stderr] 162 | while queue.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!queue.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/floodfill.rs:201:16 [INFO] [stderr] | [INFO] [stderr] 201 | if self.p_pos[i].dead == false && self.p_pos[i].pos == pos { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!self.p_pos[i].dead` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/neural.rs:33:14 [INFO] [stderr] | [INFO] [stderr] 33 | fn vec2str(v:&Vec)->String { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/neural.rs:46:18 [INFO] [stderr] | [INFO] [stderr] 46 | let h_flip = if p_pos.0 < 15 { false } else { true }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can reduce it to: `!(p_pos.0 < 15)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/neural.rs:47:18 [INFO] [stderr] | [INFO] [stderr] 47 | let v_flip = if p_pos.1 < 10 { false } else { true }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can reduce it to: `!(p_pos.1 < 10)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:248:39 [INFO] [stderr] | [INFO] [stderr] 248 | let inputs = input_line.split(" ").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:255:43 [INFO] [stderr] | [INFO] [stderr] 255 | let inputs = input_line.split(" ").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/neural.rs:67:32 [INFO] [stderr] | [INFO] [stderr] 67 | cval = scale_1((max_depths[p as usize] + 1 - v) as f32, CELL_NORMAL); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(max_depths[p as usize] + 1 - v)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the variable `count` is used as a loop counter. Consider using `for (count, item) in BufReader::new(file).lines().enumerate()` or similar iterators [INFO] [stderr] --> src/neural.rs:118:17 [INFO] [stderr] | [INFO] [stderr] 118 | for line in BufReader::new(file).lines() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/neural.rs:174:31 [INFO] [stderr] | [INFO] [stderr] 174 | pub fn calc(&self, input: &Vec) -> f32 { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `r1` [INFO] [stderr] --> src/neural.rs:181:18 [INFO] [stderr] | [INFO] [stderr] 181 | for i in 0..r1.len() { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 181 | for (i, ) in r1.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `j` is used to index `input` [INFO] [stderr] --> src/neural.rs:183:22 [INFO] [stderr] | [INFO] [stderr] 183 | for j in 0..LYR_INPUT { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 183 | for (j, ) in input.iter().enumerate().take(LYR_INPUT) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `r2` [INFO] [stderr] --> src/neural.rs:193:18 [INFO] [stderr] | [INFO] [stderr] 193 | for i in 0..r2.len() { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 193 | for (i, ) in r2.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `j` is used to index `r1` [INFO] [stderr] --> src/neural.rs:195:22 [INFO] [stderr] | [INFO] [stderr] 195 | for j in 0..LYR_H1 { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 195 | for (j, ) in r1.iter().enumerate().take(LYR_H1) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `r2` [INFO] [stderr] --> src/neural.rs:204:18 [INFO] [stderr] | [INFO] [stderr] 204 | for i in 0..r2.len() { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 204 | for (i, ) in r2.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `move_scores` [INFO] [stderr] --> src/neural.rs:270:22 [INFO] [stderr] | [INFO] [stderr] 270 | for i in 0..avail_moves.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 270 | for (i, ) in move_scores.iter_mut().enumerate().take(avail_moves.len()) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `move_scores` [INFO] [stderr] --> src/neural.rs:282:22 [INFO] [stderr] | [INFO] [stderr] 282 | for i in 0..avail_moves.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 282 | for (i, ) in move_scores.iter().enumerate().take(avail_moves.len()) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `move_scores` [INFO] [stderr] --> src/neural.rs:294:26 [INFO] [stderr] | [INFO] [stderr] 294 | for i in 0..avail_moves.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 294 | for (i, ) in move_scores.iter().enumerate().take(avail_moves.len()) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `start_pos` [INFO] [stderr] --> src/neural.rs:361:18 [INFO] [stderr] | [INFO] [stderr] 361 | for i in 0..no_players { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 361 | for (i, ) in start_pos.iter().enumerate().take(no_players) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `c_def` should have an upper case name such as `C_DEF` [INFO] [stderr] --> src/main.rs:39:1 [INFO] [stderr] | [INFO] [stderr] 39 | const c_def:&str = "\x1b[m"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_upper_case_globals)] on by default [INFO] [stderr] [INFO] [stderr] warning: constant `c_red` should have an upper case name such as `C_RED` [INFO] [stderr] --> src/main.rs:40:1 [INFO] [stderr] | [INFO] [stderr] 40 | const c_red:&str = "\x1b[31m"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant `c_grn` should have an upper case name such as `C_GRN` [INFO] [stderr] --> src/main.rs:41:1 [INFO] [stderr] | [INFO] [stderr] 41 | const c_grn:&str = "\x1b[32m"; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:54:39 [INFO] [stderr] | [INFO] [stderr] 54 | let mut split = line.trim().split(" "); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: the variable `y` is used as a loop counter. Consider using `for (y, item) in file.lines().enumerate()` or similar iterators [INFO] [stderr] --> src/main.rs:65:17 [INFO] [stderr] | [INFO] [stderr] 65 | for line in file.lines() { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: the variable `x` is used as a loop counter. Consider using `for (x, item) in ts.chars().enumerate()` or similar iterators [INFO] [stderr] --> src/main.rs:70:18 [INFO] [stderr] | [INFO] [stderr] 70 | for c in ts.chars() { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:118:13 [INFO] [stderr] | [INFO] [stderr] 118 | let c = elapsed.subsec_nanos() as f64 / 1000000000f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(elapsed.subsec_nanos())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `a`. [INFO] [stderr] --> src/main.rs:125:14 [INFO] [stderr] | [INFO] [stderr] 125 | for i in 0..4 { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 125 | for in &a { [INFO] [stderr] | ^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] error: Could not compile `codingame`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:248:39 [INFO] [stderr] | [INFO] [stderr] 248 | let inputs = input_line.split(" ").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:255:43 [INFO] [stderr] | [INFO] [stderr] 255 | let inputs = input_line.split(" ").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `codingame`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "6365a6bc9641cf40231dc0af9711950cb4b4ef460ab37c7b7be2642b9bb9cdd9"` [INFO] running `"docker" "rm" "-f" "6365a6bc9641cf40231dc0af9711950cb4b4ef460ab37c7b7be2642b9bb9cdd9"` [INFO] [stdout] 6365a6bc9641cf40231dc0af9711950cb4b4ef460ab37c7b7be2642b9bb9cdd9