[INFO] fetching crate gorrosion 0.1.3... [INFO] linting gorrosion-0.1.3 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate gorrosion 0.1.3 into /workspace/builds/worker-6-tc1/source [INFO] started tweaking crates.io crate gorrosion 0.1.3 [INFO] finished tweaking crates.io crate gorrosion 0.1.3 [INFO] tweaked toml for crates.io crate gorrosion 0.1.3 written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate gorrosion 0.1.3 on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 98a372eb9abe5159d6abe3da7e4b0ab9e43cf27e18aa5228f83098ab9be7db9f [INFO] running `Command { std: "docker" "start" "-a" "98a372eb9abe5159d6abe3da7e4b0ab9e43cf27e18aa5228f83098ab9be7db9f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "98a372eb9abe5159d6abe3da7e4b0ab9e43cf27e18aa5228f83098ab9be7db9f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "98a372eb9abe5159d6abe3da7e4b0ab9e43cf27e18aa5228f83098ab9be7db9f", kill_on_drop: false }` [INFO] [stdout] 98a372eb9abe5159d6abe3da7e4b0ab9e43cf27e18aa5228f83098ab9be7db9f [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 3cfcb5a47c93332ee0cc365198b139288a99fa05dbf2d3c1e1ce26ae58639f09 [INFO] running `Command { std: "docker" "start" "-a" "3cfcb5a47c93332ee0cc365198b139288a99fa05dbf2d3c1e1ce26ae58639f09", kill_on_drop: false }` [INFO] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024` [INFO] [stderr] Checking gorrosion v0.1.3 (/opt/rustwide/workdir) [INFO] [stdout] warning: using tabs in doc comments is not recommended [INFO] [stdout] --> src/core/util/bool_vec.rs:53:5 [INFO] [stdout] | [INFO] [stdout] 53 | /// assert_eq!(falses[i], false); [INFO] [stdout] | ^^^^ help: consider using four spaces per tab [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#tabs_in_doc_comments [INFO] [stdout] = note: `#[warn(clippy::tabs_in_doc_comments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using tabs in doc comments is not recommended [INFO] [stdout] --> src/core/util/bool_vec.rs:71:5 [INFO] [stdout] | [INFO] [stdout] 71 | /// assert_eq!(trues[i], true); [INFO] [stdout] | ^^^^ help: consider using four spaces per tab [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#tabs_in_doc_comments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PlayerState` is never constructed [INFO] [stdout] --> src/core/game.rs:12:8 [INFO] [stdout] | [INFO] [stdout] 12 | struct PlayerState<'board, T: 'board + Board> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `place_stone`, `survivors`, `kill`, and `kill_dead` are never used [INFO] [stdout] --> src/core/game.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 34 | / impl<'board, T> PlayerState<'board, T> [INFO] [stdout] 35 | | where [INFO] [stdout] 36 | | T: Board, [INFO] [stdout] | |_____________- methods in this implementation [INFO] [stdout] 37 | { [INFO] [stdout] 38 | fn place_stone(&mut self, i: ::Index) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | fn survivors(&self, free: &BoolVec) -> BoolVec { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | fn kill(&mut self, zombies: &BoolVec) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 67 | fn kill_dead(&mut self, liberties: &BoolVec) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Color` is never used [INFO] [stdout] --> src/core/game.rs:74:6 [INFO] [stdout] | [INFO] [stdout] 74 | enum Color { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `other` is never used [INFO] [stdout] --> src/core/game.rs:80:5 [INFO] [stdout] | [INFO] [stdout] 79 | impl Color { [INFO] [stdout] | ---------- method in this implementation [INFO] [stdout] 80 | fn other(&self) -> Color { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `GameState` is never constructed [INFO] [stdout] --> src/core/game.rs:89:8 [INFO] [stdout] | [INFO] [stdout] 89 | struct GameState<'board, T: 'board + Board> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `free`, `kill_dead`, `player_state`, and `place_stone` are never used [INFO] [stdout] --> src/core/game.rs:115:5 [INFO] [stdout] | [INFO] [stdout] 111 | / impl<'board, T> GameState<'board, T> [INFO] [stdout] 112 | | where [INFO] [stdout] 113 | | T: Board, [INFO] [stdout] | |_____________- methods in this implementation [INFO] [stdout] 114 | { [INFO] [stdout] 115 | fn free(&self) -> BoolVec { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 121 | fn kill_dead(&mut self, color: Color) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 126 | fn player_state( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 136 | fn place_stone(&mut self, i: ::Index, color: Color) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Action` is never used [INFO] [stdout] --> src/core/game.rs:165:6 [INFO] [stdout] | [INFO] [stdout] 165 | enum Action { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Move` is never constructed [INFO] [stdout] --> src/core/game.rs:172:8 [INFO] [stdout] | [INFO] [stdout] 172 | struct Move { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `LocalRules` is never constructed [INFO] [stdout] --> src/core/game.rs:177:8 [INFO] [stdout] | [INFO] [stdout] 177 | struct LocalRules { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Rules` is never constructed [INFO] [stdout] --> src/core/game.rs:182:8 [INFO] [stdout] | [INFO] [stdout] 182 | struct Rules { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `GameNode` is never constructed [INFO] [stdout] --> src/core/game.rs:190:8 [INFO] [stdout] | [INFO] [stdout] 190 | struct GameNode<'a, 'board: 'a, T: 'board + Board> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `Rules` is never used [INFO] [stdout] --> src/core/rules.rs:3:7 [INFO] [stdout] | [INFO] [stdout] 3 | trait Rules { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/core/board.rs:143:3 [INFO] [stdout] | [INFO] [stdout] 143 | &self.rect.adjacencies() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.rect.adjacencies()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/core/board.rs:171:3 [INFO] [stdout] | [INFO] [stdout] 171 | assert_eq!(eight_steps[((0, 0), (5, 3))], true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_assert_comparison)]` on by default [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 171 - assert_eq!(eight_steps[((0, 0), (5, 3))], true); [INFO] [stdout] 171 + assert!(eight_steps[((0, 0), (5, 3))]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/core/game.rs:47:4 [INFO] [stdout] | [INFO] [stdout] 46 | let new_connections = conn * adj * conn; [INFO] [stdout] | ---------------------------------------- unnecessary `let` binding [INFO] [stdout] 47 | new_connections [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 46 ~ [INFO] [stdout] 47 ~ conn * adj * conn [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using tabs in doc comments is not recommended [INFO] [stdout] --> src/core/util/bool_vec.rs:53:5 [INFO] [stdout] | [INFO] [stdout] 53 | /// assert_eq!(falses[i], false); [INFO] [stdout] | ^^^^ help: consider using four spaces per tab [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#tabs_in_doc_comments [INFO] [stdout] = note: `#[warn(clippy::tabs_in_doc_comments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using tabs in doc comments is not recommended [INFO] [stdout] --> src/core/util/bool_vec.rs:71:5 [INFO] [stdout] | [INFO] [stdout] 71 | /// assert_eq!(trues[i], true); [INFO] [stdout] | ^^^^ help: consider using four spaces per tab [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#tabs_in_doc_comments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/core/rules.rs:14:3 [INFO] [stdout] | [INFO] [stdout] 14 | !self.outcome(game).is_none() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.outcome(game).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `.map(...).any(identity)` [INFO] [stdout] --> src/core/util/bool_mat.rs:150:13 [INFO] [stdout] | [INFO] [stdout] 150 | (0..len).map(|k| { [INFO] [stdout] | ______________________^ [INFO] [stdout] 151 | | self.contents[(j, k)] & other.contents[(k, l)] [INFO] [stdout] 152 | | }).any(|b| b) [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_all_any_identity [INFO] [stdout] = note: `#[warn(clippy::map_all_any_identity)]` on by default [INFO] [stdout] help: use `.any(...)` instead [INFO] [stdout] | [INFO] [stdout] 150 ~ (0..len).any(|k| { [INFO] [stdout] 151 ~ self.contents[(j, k)] & other.contents[(k, l)] [INFO] [stdout] 152 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'now [INFO] [stdout] --> src/core/util/bool_mat.rs:170:6 [INFO] [stdout] | [INFO] [stdout] 170 | impl<'now, J, K, L> Mul> for &'now BoolMat [INFO] [stdout] | ^^^^ ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 170 - impl<'now, J, K, L> Mul> for &'now BoolMat [INFO] [stdout] 170 + impl Mul> for &BoolMat [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'now [INFO] [stdout] --> src/core/util/bool_vec.rs:187:6 [INFO] [stdout] | [INFO] [stdout] 187 | impl<'now, I> BitAnd for &'now BoolVec [INFO] [stdout] | ^^^^ ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 187 - impl<'now, I> BitAnd for &'now BoolVec [INFO] [stdout] 187 + impl BitAnd for &BoolVec [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'now [INFO] [stdout] --> src/core/util/bool_vec.rs:198:6 [INFO] [stdout] | [INFO] [stdout] 198 | impl<'now, I> BitOr for &'now BoolVec [INFO] [stdout] | ^^^^ ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 198 - impl<'now, I> BitOr for &'now BoolVec [INFO] [stdout] 198 + impl BitOr for &BoolVec [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'now [INFO] [stdout] --> src/core/util/bool_vec.rs:209:6 [INFO] [stdout] | [INFO] [stdout] 209 | impl<'now, I> Not for &'now BoolVec [INFO] [stdout] | ^^^^ ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 209 - impl<'now, I> Not for &'now BoolVec [INFO] [stdout] 209 + impl Not for &BoolVec [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/core/util/bool_vec.rs:231:4 [INFO] [stdout] | [INFO] [stdout] 231 | assert_eq!(falses[i], false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 231 - assert_eq!(falses[i], false); [INFO] [stdout] 231 + assert!(!falses[i]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/core/util/bool_vec.rs:236:4 [INFO] [stdout] | [INFO] [stdout] 236 | assert_eq!(trues[i], true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 236 - assert_eq!(trues[i], true); [INFO] [stdout] 236 + assert!(trues[i]); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PlayerState` is never constructed [INFO] [stdout] --> src/core/game.rs:12:8 [INFO] [stdout] | [INFO] [stdout] 12 | struct PlayerState<'board, T: 'board + Board> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `place_stone`, `survivors`, `kill`, and `kill_dead` are never used [INFO] [stdout] --> src/core/game.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 34 | / impl<'board, T> PlayerState<'board, T> [INFO] [stdout] 35 | | where [INFO] [stdout] 36 | | T: Board, [INFO] [stdout] | |_____________- methods in this implementation [INFO] [stdout] 37 | { [INFO] [stdout] 38 | fn place_stone(&mut self, i: ::Index) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 51 | fn survivors(&self, free: &BoolVec) -> BoolVec { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 57 | fn kill(&mut self, zombies: &BoolVec) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 67 | fn kill_dead(&mut self, liberties: &BoolVec) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Color` is never used [INFO] [stdout] --> src/core/game.rs:74:6 [INFO] [stdout] | [INFO] [stdout] 74 | enum Color { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `other` is never used [INFO] [stdout] --> src/core/game.rs:80:5 [INFO] [stdout] | [INFO] [stdout] 79 | impl Color { [INFO] [stdout] | ---------- method in this implementation [INFO] [stdout] 80 | fn other(&self) -> Color { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `GameState` is never constructed [INFO] [stdout] --> src/core/game.rs:89:8 [INFO] [stdout] | [INFO] [stdout] 89 | struct GameState<'board, T: 'board + Board> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `free`, `kill_dead`, `player_state`, and `place_stone` are never used [INFO] [stdout] --> src/core/game.rs:115:5 [INFO] [stdout] | [INFO] [stdout] 111 | / impl<'board, T> GameState<'board, T> [INFO] [stdout] 112 | | where [INFO] [stdout] 113 | | T: Board, [INFO] [stdout] | |_____________- methods in this implementation [INFO] [stdout] 114 | { [INFO] [stdout] 115 | fn free(&self) -> BoolVec { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 121 | fn kill_dead(&mut self, color: Color) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 126 | fn player_state( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 136 | fn place_stone(&mut self, i: ::Index, color: Color) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Action` is never used [INFO] [stdout] --> src/core/game.rs:165:6 [INFO] [stdout] | [INFO] [stdout] 165 | enum Action { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Move` is never constructed [INFO] [stdout] --> src/core/game.rs:172:8 [INFO] [stdout] | [INFO] [stdout] 172 | struct Move { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `LocalRules` is never constructed [INFO] [stdout] --> src/core/game.rs:177:8 [INFO] [stdout] | [INFO] [stdout] 177 | struct LocalRules { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Rules` is never constructed [INFO] [stdout] --> src/core/game.rs:182:8 [INFO] [stdout] | [INFO] [stdout] 182 | struct Rules { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `GameNode` is never constructed [INFO] [stdout] --> src/core/game.rs:190:8 [INFO] [stdout] | [INFO] [stdout] 190 | struct GameNode<'a, 'board: 'a, T: 'board + Board> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `Rules` is never used [INFO] [stdout] --> src/core/rules.rs:3:7 [INFO] [stdout] | [INFO] [stdout] 3 | trait Rules { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/core/board.rs:143:3 [INFO] [stdout] | [INFO] [stdout] 143 | &self.rect.adjacencies() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `self.rect.adjacencies()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/core/game.rs:47:4 [INFO] [stdout] | [INFO] [stdout] 46 | let new_connections = conn * adj * conn; [INFO] [stdout] | ---------------------------------------- unnecessary `let` binding [INFO] [stdout] 47 | new_connections [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 46 ~ [INFO] [stdout] 47 ~ conn * adj * conn [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/core/rules.rs:14:3 [INFO] [stdout] | [INFO] [stdout] 14 | !self.outcome(game).is_none() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.outcome(game).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `.map(...).any(identity)` [INFO] [stdout] --> src/core/util/bool_mat.rs:150:13 [INFO] [stdout] | [INFO] [stdout] 150 | (0..len).map(|k| { [INFO] [stdout] | ______________________^ [INFO] [stdout] 151 | | self.contents[(j, k)] & other.contents[(k, l)] [INFO] [stdout] 152 | | }).any(|b| b) [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_all_any_identity [INFO] [stdout] = note: `#[warn(clippy::map_all_any_identity)]` on by default [INFO] [stdout] help: use `.any(...)` instead [INFO] [stdout] | [INFO] [stdout] 150 ~ (0..len).any(|k| { [INFO] [stdout] 151 ~ self.contents[(j, k)] & other.contents[(k, l)] [INFO] [stdout] 152 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'now [INFO] [stdout] --> src/core/util/bool_mat.rs:170:6 [INFO] [stdout] | [INFO] [stdout] 170 | impl<'now, J, K, L> Mul> for &'now BoolMat [INFO] [stdout] | ^^^^ ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 170 - impl<'now, J, K, L> Mul> for &'now BoolMat [INFO] [stdout] 170 + impl Mul> for &BoolMat [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'now [INFO] [stdout] --> src/core/util/bool_vec.rs:187:6 [INFO] [stdout] | [INFO] [stdout] 187 | impl<'now, I> BitAnd for &'now BoolVec [INFO] [stdout] | ^^^^ ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 187 - impl<'now, I> BitAnd for &'now BoolVec [INFO] [stdout] 187 + impl BitAnd for &BoolVec [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'now [INFO] [stdout] --> src/core/util/bool_vec.rs:198:6 [INFO] [stdout] | [INFO] [stdout] 198 | impl<'now, I> BitOr for &'now BoolVec [INFO] [stdout] | ^^^^ ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 198 - impl<'now, I> BitOr for &'now BoolVec [INFO] [stdout] 198 + impl BitOr for &BoolVec [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'now [INFO] [stdout] --> src/core/util/bool_vec.rs:209:6 [INFO] [stdout] | [INFO] [stdout] 209 | impl<'now, I> Not for &'now BoolVec [INFO] [stdout] | ^^^^ ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 209 - impl<'now, I> Not for &'now BoolVec [INFO] [stdout] 209 + impl Not for &BoolVec [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.41s [INFO] running `Command { std: "docker" "inspect" "3cfcb5a47c93332ee0cc365198b139288a99fa05dbf2d3c1e1ce26ae58639f09", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3cfcb5a47c93332ee0cc365198b139288a99fa05dbf2d3c1e1ce26ae58639f09", kill_on_drop: false }` [INFO] [stdout] 3cfcb5a47c93332ee0cc365198b139288a99fa05dbf2d3c1e1ce26ae58639f09