[INFO] cloning repository https://github.com/aremath/rust-sokoban [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/aremath/rust-sokoban" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Faremath%2Frust-sokoban", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Faremath%2Frust-sokoban'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] e7eb2276e87114da9515bd0f78067c51069575fa [INFO] linting aremath/rust-sokoban against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Faremath%2Frust-sokoban" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/aremath/rust-sokoban [INFO] finished tweaking git repo https://github.com/aremath/rust-sokoban [INFO] tweaked toml for git repo https://github.com/aremath/rust-sokoban written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/aremath/rust-sokoban 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] crate git repo https://github.com/aremath/rust-sokoban already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded strum v0.28.0 [INFO] [stderr] Downloaded strum_macros v0.28.0 [INFO] [stderr] Downloaded nalgebra-macros v0.3.0 [INFO] [stderr] Downloaded glam v0.17.3 [INFO] [stderr] Downloaded glam v0.16.0 [INFO] [stderr] Downloaded glam v0.15.2 [INFO] [stderr] Downloaded pathfinding v4.14.0 [INFO] [stderr] Downloaded glam v0.19.0 [INFO] [stderr] Downloaded glam v0.18.0 [INFO] [stderr] Downloaded glam v0.28.0 [INFO] [stderr] Downloaded nalgebra v0.34.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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] 95b92e8a392df92416b406cc9968519258dbe77f68faf3f64edf43bb60ca68cd [INFO] running `Command { std: "docker" "start" "-a" "95b92e8a392df92416b406cc9968519258dbe77f68faf3f64edf43bb60ca68cd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "95b92e8a392df92416b406cc9968519258dbe77f68faf3f64edf43bb60ca68cd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "95b92e8a392df92416b406cc9968519258dbe77f68faf3f64edf43bb60ca68cd", kill_on_drop: false }` [INFO] [stdout] 95b92e8a392df92416b406cc9968519258dbe77f68faf3f64edf43bb60ca68cd [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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] fe0445ea973e8fc53e4b5ada4c11df1aa3af0c522cd4c45d9ece830243b3b72f [INFO] running `Command { std: "docker" "start" "-a" "fe0445ea973e8fc53e4b5ada4c11df1aa3af0c522cd4c45d9ece830243b3b72f", kill_on_drop: false }` [INFO] [stderr] Compiling quote v1.0.44 [INFO] [stderr] Checking bytemuck v1.25.0 [INFO] [stderr] Checking num-complex v0.4.6 [INFO] [stderr] Checking approx v0.5.1 [INFO] [stderr] Compiling semver v1.0.27 [INFO] [stderr] Checking num-rational v0.4.2 [INFO] [stderr] Checking integer-sqrt v0.1.5 [INFO] [stderr] Checking ordered-float v5.1.0 [INFO] [stderr] Checking bimap v0.6.3 [INFO] [stderr] Checking text_io v0.1.13 [INFO] [stderr] Checking strum v0.28.0 [INFO] [stderr] Compiling syn v2.0.116 [INFO] [stderr] Checking safe_arch v0.7.4 [INFO] [stderr] Checking ndarray v0.17.2 [INFO] [stderr] Checking wide v0.7.33 [INFO] [stderr] Checking simba v0.9.1 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling deprecate-until v0.1.1 [INFO] [stderr] Compiling nalgebra-macros v0.3.0 [INFO] [stderr] Compiling strum_macros v0.28.0 [INFO] [stderr] Checking thiserror v2.0.18 [INFO] [stderr] Checking pathfinding v4.14.0 [INFO] [stderr] Checking nalgebra v0.34.1 [INFO] [stderr] Checking rust-sokoban v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused imports: `Array`, `Ix2`, and `array` [INFO] [stdout] --> src/main.rs:2:15 [INFO] [stdout] | [INFO] [stdout] 2 | use ndarray::{Array, array, Ix2}; [INFO] [stdout] | ^^^^^ ^^^^^ ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `find_wall_traps` [INFO] [stdout] --> src/main.rs:7:25 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::heuristics::{find_wall_traps}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/sokoengine.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::isize::MAX` [INFO] [stdout] --> src/sokoengine.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::isize::MAX; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Axis` [INFO] [stdout] --> src/sokoengine.rs:3:22 [INFO] [stdout] | [INFO] [stdout] 3 | use ndarray::{Array, Axis, Ix2}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DefaultHasher` [INFO] [stdout] --> src/sokoengine.rs:5:17 [INFO] [stdout] | [INFO] [stdout] 5 | use std::hash::{DefaultHasher, Hash, Hasher}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Array` and `Ix2` [INFO] [stdout] --> src/sokoset.rs:4:15 [INFO] [stdout] | [INFO] [stdout] 4 | use ndarray::{Array, Ix2}; [INFO] [stdout] | ^^^^^ ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `DefaultHasher`, `Hash`, and `Hasher` [INFO] [stdout] --> src/sokoset.rs:5:17 [INFO] [stdout] | [INFO] [stdout] 5 | use std::hash::{DefaultHasher, Hash, Hasher}; [INFO] [stdout] | ^^^^^^^^^^^^^ ^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/sokoset.rs:56:29 [INFO] [stdout] | [INFO] [stdout] 56 | return SetManager { m: m, patterns: patterns }; [INFO] [stdout] | ^^^^ help: replace it with: `m` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/sokoset.rs:56:35 [INFO] [stdout] | [INFO] [stdout] 56 | return SetManager { m: m, patterns: patterns }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `patterns` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/sokoset.rs:118:13 [INFO] [stdout] | [INFO] [stdout] 118 | basic_move: basic_move, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `basic_move` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/sokoset.rs:119:13 [INFO] [stdout] | [INFO] [stdout] 119 | basic_push: basic_push, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `basic_push` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/sokoset.rs:140:16 [INFO] [stdout] | [INFO] [stdout] 140 | if ((m & p.cond.0) == 0 || (e & p.cond.1) == 0) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 140 - if ((m & p.cond.0) == 0 || (e & p.cond.1) == 0) { [INFO] [stdout] 140 + if (m & p.cond.0) == 0 || (e & p.cond.1) == 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/sokoset.rs:176:16 [INFO] [stdout] | [INFO] [stdout] 176 | if ((m & p.cond.0) == 0 || (e & p.cond.1) == 0) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 176 - if ((m & p.cond.0) == 0 || (e & p.cond.1) == 0) { [INFO] [stdout] 176 + if (m & p.cond.0) == 0 || (e & p.cond.1) == 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `SokoInterface`, `SokoManager`, and `Stringable` [INFO] [stdout] --> src/heuristics.rs:10:25 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::sokoengine::{SokoManager, SokoState, HasVecs, MapTile, Entity, Direction, SokoInterface, Stringable}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/heuristics.rs:167:34 [INFO] [stdout] | [INFO] [stdout] 167 | return HeuristicHelper { target_locs: target_locs, wall_traps: traps, trap_to_targets: traps_to_targets }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `target_locs` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Array`, `Ix2`, and `array` [INFO] [stdout] --> src/main.rs:2:15 [INFO] [stdout] | [INFO] [stdout] 2 | use ndarray::{Array, array, Ix2}; [INFO] [stdout] | ^^^^^ ^^^^^ ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `find_wall_traps` [INFO] [stdout] --> src/main.rs:7:25 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::heuristics::{find_wall_traps}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt` [INFO] [stdout] --> src/sokoengine.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::fmt; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::isize::MAX` [INFO] [stdout] --> src/sokoengine.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::isize::MAX; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Axis` [INFO] [stdout] --> src/sokoengine.rs:3:22 [INFO] [stdout] | [INFO] [stdout] 3 | use ndarray::{Array, Axis, Ix2}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `DefaultHasher` [INFO] [stdout] --> src/sokoengine.rs:5:17 [INFO] [stdout] | [INFO] [stdout] 5 | use std::hash::{DefaultHasher, Hash, Hasher}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Array` and `Ix2` [INFO] [stdout] --> src/sokoset.rs:4:15 [INFO] [stdout] | [INFO] [stdout] 4 | use ndarray::{Array, Ix2}; [INFO] [stdout] | ^^^^^ ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `DefaultHasher`, `Hash`, and `Hasher` [INFO] [stdout] --> src/sokoset.rs:5:17 [INFO] [stdout] | [INFO] [stdout] 5 | use std::hash::{DefaultHasher, Hash, Hasher}; [INFO] [stdout] | ^^^^^^^^^^^^^ ^^^^ ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/sokoset.rs:56:29 [INFO] [stdout] | [INFO] [stdout] 56 | return SetManager { m: m, patterns: patterns }; [INFO] [stdout] | ^^^^ help: replace it with: `m` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/sokoset.rs:56:35 [INFO] [stdout] | [INFO] [stdout] 56 | return SetManager { m: m, patterns: patterns }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `patterns` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/sokoset.rs:118:13 [INFO] [stdout] | [INFO] [stdout] 118 | basic_move: basic_move, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `basic_move` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/sokoset.rs:119:13 [INFO] [stdout] | [INFO] [stdout] 119 | basic_push: basic_push, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `basic_push` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/sokoset.rs:140:16 [INFO] [stdout] | [INFO] [stdout] 140 | if ((m & p.cond.0) == 0 || (e & p.cond.1) == 0) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 140 - if ((m & p.cond.0) == 0 || (e & p.cond.1) == 0) { [INFO] [stdout] 140 + if (m & p.cond.0) == 0 || (e & p.cond.1) == 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/sokoset.rs:176:16 [INFO] [stdout] | [INFO] [stdout] 176 | if ((m & p.cond.0) == 0 || (e & p.cond.1) == 0) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 176 - if ((m & p.cond.0) == 0 || (e & p.cond.1) == 0) { [INFO] [stdout] 176 + if (m & p.cond.0) == 0 || (e & p.cond.1) == 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `SokoInterface`, `SokoManager`, and `Stringable` [INFO] [stdout] --> src/heuristics.rs:10:25 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::sokoengine::{SokoManager, SokoState, HasVecs, MapTile, Entity, Direction, SokoInterface, Stringable}; [INFO] [stdout] | ^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/heuristics.rs:167:34 [INFO] [stdout] | [INFO] [stdout] 167 | return HeuristicHelper { target_locs: target_locs, wall_traps: traps, trap_to_targets: traps_to_targets }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `target_locs` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/heuristics.rs:135:5 [INFO] [stdout] | [INFO] [stdout] 125 | / match trap.direction { [INFO] [stdout] 126 | | // Vertical coordinate (which is .x) has to match [INFO] [stdout] 127 | | Direction::Left | Direction::Right => { [INFO] [stdout] 128 | | return p.x == trap.fixed_c && p.y >= trap.start && p.y <= trap.end; [INFO] [stdout] ... | [INFO] [stdout] 134 | | } [INFO] [stdout] | |_____- any code following this `match` expression is unreachable, as all arms diverge [INFO] [stdout] 135 | return false //TODO [INFO] [stdout] | ^^^^^^^^^^^^ unreachable expression [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SokoInterface` [INFO] [stdout] --> src/main.rs:6:37 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::sokoengine::{Stringable, SokoInterface}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `strum::IntoEnumIterator` [INFO] [stdout] --> src/sokoengine.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use strum::IntoEnumIterator; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `start_state` [INFO] [stdout] --> src/mcts.rs:93:31 [INFO] [stdout] | [INFO] [stdout] 93 | pub fn rollout(&mut self, start_state: T, rollout_length: Option) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_start_state` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rollout_length` [INFO] [stdout] --> src/mcts.rs:93:47 [INFO] [stdout] | [INFO] [stdout] 93 | pub fn rollout(&mut self, start_state: T, rollout_length: Option) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rollout_length` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `until` [INFO] [stdout] --> src/mcts.rs:97:28 [INFO] [stdout] | [INFO] [stdout] 97 | pub fn mcts(&mut self, until: Option bool>, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_until` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rollout_length` [INFO] [stdout] --> src/mcts.rs:98:9 [INFO] [stdout] | [INFO] [stdout] 98 | rollout_length: Option, eval: Option OrderedFloat>, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rollout_length` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `eval` [INFO] [stdout] --> src/mcts.rs:98:40 [INFO] [stdout] | [INFO] [stdout] 98 | rollout_length: Option, eval: Option OrderedFloat>, [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_eval` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `max_states` [INFO] [stdout] --> src/mcts.rs:99:9 [INFO] [stdout] | [INFO] [stdout] 99 | max_states: Option, mgr: &::V) -> Option { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_states` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mgr` [INFO] [stdout] --> src/mcts.rs:99:36 [INFO] [stdout] | [INFO] [stdout] 99 | max_states: Option, mgr: &::V) -> Option { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_mgr` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `s` [INFO] [stdout] --> src/heuristics.rs:241:25 [INFO] [stdout] | [INFO] [stdout] 241 | pub fn simple_heuristic(s: &SokoState) -> OrderedFloat { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Command` is never used [INFO] [stdout] --> src/main.rs:14:6 [INFO] [stdout] | [INFO] [stdout] 14 | enum Command { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `char_to_command` is never used [INFO] [stdout] --> src/main.rs:21:4 [INFO] [stdout] | [INFO] [stdout] 21 | fn char_to_command(c: Option<&u8>) -> Command { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `game_loop` is never used [INFO] [stdout] --> src/main.rs:38:4 [INFO] [stdout] | [INFO] [stdout] 38 | fn game_loop() -> () { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_MEMORY` is never used [INFO] [stdout] --> src/sokoengine.rs:14:7 [INFO] [stdout] | [INFO] [stdout] 14 | const MAX_MEMORY: usize = 100; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_open` is never used [INFO] [stdout] --> src/sokoengine.rs:24:8 [INFO] [stdout] | [INFO] [stdout] 23 | impl MapTile { [INFO] [stdout] | ------------ method in this implementation [INFO] [stdout] 24 | fn is_open(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `encode` is never used [INFO] [stdout] --> src/sokoengine.rs:61:8 [INFO] [stdout] | [INFO] [stdout] 60 | pub trait Coder { [INFO] [stdout] | ----- method in this trait [INFO] [stdout] 61 | fn encode(&self, t: (M, E)) -> char; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `to_str` is never used [INFO] [stdout] --> src/sokoengine.rs:71:8 [INFO] [stdout] | [INFO] [stdout] 69 | pub trait Stringable { [INFO] [stdout] | ---------- method in this trait [INFO] [stdout] 70 | fn from_str(s: &String, mgr: &C) -> Self; [INFO] [stdout] 71 | fn to_str(&self, mgr: &C) -> String; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `player_locs` is never read [INFO] [stdout] --> src/sokoengine.rs:140:9 [INFO] [stdout] | [INFO] [stdout] 137 | pub struct SokoState { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 140 | pub player_locs: Vec>, // Should never be negative, but have to update with isizes [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SokoState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `y_increasing` is never used [INFO] [stdout] --> src/sokoengine.rs:177:4 [INFO] [stdout] | [INFO] [stdout] 177 | fn y_increasing(a: &Vector2) -> isize { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `y_decreasing` is never used [INFO] [stdout] --> src/sokoengine.rs:181:4 [INFO] [stdout] | [INFO] [stdout] 181 | fn y_decreasing(a: &Vector2) -> isize { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/heuristics.rs:135:5 [INFO] [stdout] | [INFO] [stdout] 125 | / match trap.direction { [INFO] [stdout] 126 | | // Vertical coordinate (which is .x) has to match [INFO] [stdout] 127 | | Direction::Left | Direction::Right => { [INFO] [stdout] 128 | | return p.x == trap.fixed_c && p.y >= trap.start && p.y <= trap.end; [INFO] [stdout] ... | [INFO] [stdout] 134 | | } [INFO] [stdout] | |_____- any code following this `match` expression is unreachable, as all arms diverge [INFO] [stdout] 135 | return false //TODO [INFO] [stdout] | ^^^^^^^^^^^^ unreachable expression [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `x_increasing` is never used [INFO] [stdout] --> src/sokoengine.rs:185:4 [INFO] [stdout] | [INFO] [stdout] 185 | fn x_increasing(a: &Vector2) -> isize { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `x_decreasing` is never used [INFO] [stdout] --> src/sokoengine.rs:189:4 [INFO] [stdout] | [INFO] [stdout] 189 | fn x_decreasing(a: &Vector2) -> isize { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `choose_ordering` is never used [INFO] [stdout] --> src/sokoengine.rs:194:8 [INFO] [stdout] | [INFO] [stdout] 194 | pub fn choose_ordering(d: Direction) -> fn(&Vector2) -> isize { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `SokoInterface` is never used [INFO] [stdout] --> src/sokoengine.rs:211:11 [INFO] [stdout] | [INFO] [stdout] 211 | pub trait SokoInterface { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `set_tile` and `set_entity` are never used [INFO] [stdout] --> src/sokoengine.rs:234:12 [INFO] [stdout] | [INFO] [stdout] 217 | impl SokoState { [INFO] [stdout] | ------------------------------------------------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 234 | pub fn set_tile(&mut self, c: &Vector2, t: M) -> () { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 238 | pub fn set_entity(&mut self, c: &Vector2, e: E) -> () { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SokoMemory` is never constructed [INFO] [stdout] --> src/sokoengine.rs:352:12 [INFO] [stdout] | [INFO] [stdout] 352 | pub struct SokoMemory { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `update`, `undo`, and `is_win` are never used [INFO] [stdout] --> src/sokoengine.rs:384:12 [INFO] [stdout] | [INFO] [stdout] 378 | / impl> SokoMemory where [INFO] [stdout] 379 | | //C: as SokoInterface>::V, [INFO] [stdout] 380 | | SokoState: SokoInterface, [INFO] [stdout] 381 | | SokoState: Stringable, [INFO] [stdout] | |_________________________________________- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 384 | pub fn update(&mut self, d: Direction, mgr: & as SokoInterface>::V) -> () { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 400 | pub fn undo(&mut self) -> () { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 408 | pub fn is_win(&self) -> bool { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `NUM_PATTERNS` is never used [INFO] [stdout] --> src/sokoset.rs:9:7 [INFO] [stdout] | [INFO] [stdout] 9 | const NUM_PATTERNS: usize = 2; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `MapSet` is never used [INFO] [stdout] --> src/sokoset.rs:13:10 [INFO] [stdout] | [INFO] [stdout] 13 | pub type MapSet = u8; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAP_BLANK` is never used [INFO] [stdout] --> src/sokoset.rs:16:7 [INFO] [stdout] | [INFO] [stdout] 16 | const MAP_BLANK: MapSet = 1; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAP_WALL` is never used [INFO] [stdout] --> src/sokoset.rs:17:7 [INFO] [stdout] | [INFO] [stdout] 17 | const MAP_WALL: MapSet = 2; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAP_TARGET` is never used [INFO] [stdout] --> src/sokoset.rs:18:7 [INFO] [stdout] | [INFO] [stdout] 18 | const MAP_TARGET: MapSet = 4; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAP_ANY` is never used [INFO] [stdout] --> src/sokoset.rs:19:7 [INFO] [stdout] | [INFO] [stdout] 19 | const MAP_ANY: MapSet = 7; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAP_NOWALL` is never used [INFO] [stdout] --> src/sokoset.rs:20:7 [INFO] [stdout] | [INFO] [stdout] 20 | const MAP_NOWALL: MapSet = 5; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ENTITY_BLANK` is never used [INFO] [stdout] --> src/sokoset.rs:22:7 [INFO] [stdout] | [INFO] [stdout] 22 | const ENTITY_BLANK: EntitySet = 1; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ENTITY_BLOCK` is never used [INFO] [stdout] --> src/sokoset.rs:23:7 [INFO] [stdout] | [INFO] [stdout] 23 | const ENTITY_BLOCK: EntitySet = 2; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ENTITY_ANY` is never used [INFO] [stdout] --> src/sokoset.rs:25:7 [INFO] [stdout] | [INFO] [stdout] 25 | const ENTITY_ANY: EntitySet = 7; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `mk_set_to_text` is never used [INFO] [stdout] --> src/sokoset.rs:36:8 [INFO] [stdout] | [INFO] [stdout] 36 | pub fn mk_set_to_text() -> BiMap<(MapSet, EntitySet), char> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SetManager` is never constructed [INFO] [stdout] --> src/sokoset.rs:48:12 [INFO] [stdout] | [INFO] [stdout] 48 | pub struct SetManager { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/sokoset.rs:55:12 [INFO] [stdout] | [INFO] [stdout] 53 | impl SetManager { [INFO] [stdout] | --------------- associated function in this implementation [INFO] [stdout] 54 | [INFO] [stdout] 55 | pub fn new(m: sokoengine::SokoManager, patterns: Patterns) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PatternEntry` is never constructed [INFO] [stdout] --> src/sokoset.rs:83:12 [INFO] [stdout] | [INFO] [stdout] 83 | pub struct PatternEntry { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Patterns` is never constructed [INFO] [stdout] --> src/sokoset.rs:88:12 [INFO] [stdout] | [INFO] [stdout] 88 | pub struct Patterns { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/sokoset.rs:108:11 [INFO] [stdout] | [INFO] [stdout] 106 | impl Patterns { [INFO] [stdout] | ------------- associated function in this implementation [INFO] [stdout] 107 | [INFO] [stdout] 108 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `SokoSet` is never used [INFO] [stdout] --> src/sokoset.rs:125:6 [INFO] [stdout] | [INFO] [stdout] 125 | type SokoSet = sokoengine::SokoState; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `mut_pattern_at`, `apply_pattern_at`, and `apply_at_plocs` are never used [INFO] [stdout] --> src/sokoset.rs:131:8 [INFO] [stdout] | [INFO] [stdout] 127 | impl SokoSet { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 131 | fn mut_pattern_at(&mut self, c: &Vector2, d: sokoengine::Direction, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 167 | fn apply_pattern_at(&self, c: &Vector2, d: sokoengine::Direction, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 202 | fn apply_at_plocs(&self, d: sokoengine::Direction, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `Searchable` is never used [INFO] [stdout] --> src/mcts.rs:13:11 [INFO] [stdout] | [INFO] [stdout] 13 | pub trait Searchable { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SearchState` is never constructed [INFO] [stdout] --> src/mcts.rs:40:8 [INFO] [stdout] | [INFO] [stdout] 40 | struct SearchState { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StateData` is never constructed [INFO] [stdout] --> src/mcts.rs:47:8 [INFO] [stdout] | [INFO] [stdout] 47 | struct StateData { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SearchTree` is never constructed [INFO] [stdout] --> src/mcts.rs:64:12 [INFO] [stdout] | [INFO] [stdout] 64 | pub struct SearchTree { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `n_states`, `rollout`, `mcts`, `basic_search`, and `unroll_search` are never used [INFO] [stdout] --> src/mcts.rs:77:12 [INFO] [stdout] | [INFO] [stdout] 73 | / impl SearchTree where [INFO] [stdout] 74 | | T: Stringable::V> [INFO] [stdout] | |________________________________________________________- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 77 | pub fn new(initial_state: T) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 89 | pub fn n_states(&self) -> usize { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 93 | pub fn rollout(&mut self, start_state: T, rollout_length: Option) -> Option { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn mcts(&mut self, until: Option bool>, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 109 | pub fn basic_search(&mut self, until: Option bool>, max_states: Option, mgr: &::V) -> Optio... [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 160 | pub fn unroll_search(&self, end_state: T, start_state: T) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `rotate_270` is never used [INFO] [stdout] --> src/heuristics.rs:26:4 [INFO] [stdout] | [INFO] [stdout] 26 | fn rotate_270(v: &Vector2) -> Vector2 { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `wall_traps` is never read [INFO] [stdout] --> src/heuristics.rs:141:5 [INFO] [stdout] | [INFO] [stdout] 139 | pub struct HeuristicHelper { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] 140 | target_locs: Vec>, [INFO] [stdout] 141 | wall_traps: Vec, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `simple_heuristic` is never used [INFO] [stdout] --> src/heuristics.rs:241:8 [INFO] [stdout] | [INFO] [stdout] 241 | pub fn simple_heuristic(s: &SokoState) -> OrderedFloat { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: importing a legacy numeric constant [INFO] [stdout] --> src/sokoengine.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::isize::MAX; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove this import and use the associated constant `isize::MAX` from the primitive type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/sokoengine.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 25 | / match self { [INFO] [stdout] 26 | | MapTile::Blank => true, [INFO] [stdout] 27 | | MapTile::Target => true, [INFO] [stdout] 28 | | _ => false, [INFO] [stdout] 29 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 25 - match self { [INFO] [stdout] 26 - MapTile::Blank => true, [INFO] [stdout] 27 - MapTile::Target => true, [INFO] [stdout] 28 - _ => false, [INFO] [stdout] 29 - } [INFO] [stdout] 25 + matches!(self, MapTile::Blank | MapTile::Target) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoengine.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 35 | return MapTile::Wall; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 35 - return MapTile::Wall; [INFO] [stdout] 35 + MapTile::Wall [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoengine.rs:48:9 [INFO] [stdout] | [INFO] [stdout] 48 | return Entity::Blank; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 48 - return Entity::Blank; [INFO] [stdout] 48 + Entity::Blank [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SokoInterface` [INFO] [stdout] --> src/main.rs:6:37 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::sokoengine::{Stringable, SokoInterface}; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `strum::IntoEnumIterator` [INFO] [stdout] --> src/sokoengine.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use strum::IntoEnumIterator; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/sokoengine.rs:70:20 [INFO] [stdout] | [INFO] [stdout] 70 | fn from_str(s: &String, mgr: &C) -> Self; [INFO] [stdout] | ^^^^^^^ help: change this to: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoengine.rs:86:9 [INFO] [stdout] | [INFO] [stdout] 86 | return *self == Entity::Player; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 86 - return *self == Entity::Player; [INFO] [stdout] 86 + *self == Entity::Player [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoengine.rs:126:9 [INFO] [stdout] | [INFO] [stdout] 126 | return *self.symbol_table.get_by_left(&t).expect("Bad map, entity combination!"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 126 - return *self.symbol_table.get_by_left(&t).expect("Bad map, entity combination!"); [INFO] [stdout] 126 + *self.symbol_table.get_by_left(&t).expect("Bad map, entity combination!") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoengine.rs:130:9 [INFO] [stdout] | [INFO] [stdout] 130 | return *self.symbol_table.get_by_right(&c).expect("Bad character!"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 130 - return *self.symbol_table.get_by_right(&c).expect("Bad character!"); [INFO] [stdout] 130 + *self.symbol_table.get_by_right(&c).expect("Bad character!") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoengine.rs:173:5 [INFO] [stdout] | [INFO] [stdout] 173 | return type_to_text; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 173 - return type_to_text; [INFO] [stdout] 173 + type_to_text [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoengine.rs:205:5 [INFO] [stdout] | [INFO] [stdout] 205 | return a.get((c.x as usize, c.y as usize)).cloned(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 205 - return a.get((c.x as usize, c.y as usize)).cloned(); [INFO] [stdout] 205 + a.get((c.x as usize, c.y as usize)).cloned() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match can be simplified with `.unwrap_or_default()` [INFO] [stdout] --> src/sokoengine.rs:220:9 [INFO] [stdout] | [INFO] [stdout] 220 | / match index_checked(&self.map_layer, c) { [INFO] [stdout] 221 | | Some(a) => a, [INFO] [stdout] 222 | | None => M::default(), [INFO] [stdout] 223 | | } [INFO] [stdout] | |_________^ help: replace it with: `index_checked(&self.map_layer, c).unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::manual_unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match can be simplified with `.unwrap_or_default()` [INFO] [stdout] --> src/sokoengine.rs:227:9 [INFO] [stdout] | [INFO] [stdout] 227 | / match index_checked(&self.entity_layer, c) { [INFO] [stdout] 228 | | Some(a) => a, [INFO] [stdout] 229 | | None => E::default(), [INFO] [stdout] 230 | | } [INFO] [stdout] | |_________^ help: replace it with: `index_checked(&self.entity_layer, c).unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> src/sokoengine.rs:234:57 [INFO] [stdout] | [INFO] [stdout] 234 | pub fn set_tile(&mut self, c: &Vector2, t: M) -> () { [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> src/sokoengine.rs:238:59 [INFO] [stdout] | [INFO] [stdout] 238 | pub fn set_entity(&mut self, c: &Vector2, e: E) -> () { [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoengine.rs:260:9 [INFO] [stdout] | [INFO] [stdout] 260 | return s; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 260 - return s; [INFO] [stdout] 260 + s [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoengine.rs:279:9 [INFO] [stdout] | [INFO] [stdout] 279 | return SokoState{map_layer: tiles, entity_layer: entities, player_locs: locs}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 279 - return SokoState{map_layer: tiles, entity_layer: entities, player_locs: locs}; [INFO] [stdout] 279 + SokoState{map_layer: tiles, entity_layer: entities, player_locs: locs} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoengine.rs:335:13 [INFO] [stdout] | [INFO] [stdout] 335 | return Some(new_state) // placeholder [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 335 - return Some(new_state) // placeholder [INFO] [stdout] 335 + Some(new_state) // placeholder [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoengine.rs:337:13 [INFO] [stdout] | [INFO] [stdout] 337 | return None [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 337 - return None [INFO] [stdout] 337 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/sokoengine.rs:306:42 [INFO] [stdout] | [INFO] [stdout] 306 | new_state.set_entity(&loc, Entity::Blank); [INFO] [stdout] | ^^^^ help: change this to: `loc` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/sokoengine.rs:316:46 [INFO] [stdout] | [INFO] [stdout] 316 | new_state.set_entity(&loc, Entity::Blank); [INFO] [stdout] | ^^^^ help: change this to: `loc` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoengine.rs:348:9 [INFO] [stdout] | [INFO] [stdout] 348 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 348 - return true; [INFO] [stdout] 348 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoengine.rs:368:9 [INFO] [stdout] | [INFO] [stdout] 368 | return SokoMemory { current_state: s, past_states: VecDeque::new(), phantom: PhantomData}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 368 - return SokoMemory { current_state: s, past_states: VecDeque::new(), phantom: PhantomData}; [INFO] [stdout] 368 + SokoMemory { current_state: s, past_states: VecDeque::new(), phantom: PhantomData} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> src/sokoengine.rs:384:94 [INFO] [stdout] | [INFO] [stdout] 384 | pub fn update(&mut self, d: Direction, mgr: & as SokoInterface>::V) -> () { [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/sokoengine.rs:386:9 [INFO] [stdout] | [INFO] [stdout] 386 | / match s_opt { [INFO] [stdout] 387 | | // Only update the queue and the current state if the move succeeds [INFO] [stdout] 388 | | Some(s_next) => { [INFO] [stdout] 389 | | if self.past_states.len() >= MAX_MEMORY { [INFO] [stdout] ... | [INFO] [stdout] 396 | | None => {} [INFO] [stdout] 397 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: you might want to preserve the comments from inside the `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 386 ~ if let Some(s_next) = s_opt { [INFO] [stdout] 387 + if self.past_states.len() >= MAX_MEMORY { [INFO] [stdout] 388 + self.past_states.pop_front(); [INFO] [stdout] 389 + } [INFO] [stdout] 390 + //TODO: there is probably some way to do this without cloning [INFO] [stdout] 391 + self.past_states.push_back(self.current_state.clone()); [INFO] [stdout] 392 + self.current_state = s_next; [INFO] [stdout] 393 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> src/sokoengine.rs:400:27 [INFO] [stdout] | [INFO] [stdout] 400 | pub fn undo(&mut self) -> () { [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoset.rs:29:9 [INFO] [stdout] | [INFO] [stdout] 29 | return *self == ENTITY_PLAYER; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 29 - return *self == ENTITY_PLAYER; [INFO] [stdout] 29 + *self == ENTITY_PLAYER [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoset.rs:45:5 [INFO] [stdout] | [INFO] [stdout] 45 | return set_to_text; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 45 - return set_to_text; [INFO] [stdout] 45 + set_to_text [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoset.rs:56:9 [INFO] [stdout] | [INFO] [stdout] 56 | return SetManager { m: m, patterns: patterns }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 56 - return SetManager { m: m, patterns: patterns }; [INFO] [stdout] 56 + SetManager { m: m, patterns: patterns } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoset.rs:70:9 [INFO] [stdout] | [INFO] [stdout] 70 | return self.m.decode(c); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 70 - return self.m.decode(c); [INFO] [stdout] 70 + self.m.decode(c) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoset.rs:77:9 [INFO] [stdout] | [INFO] [stdout] 77 | return self.m.d_to_v(d); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 77 - return self.m.d_to_v(d); [INFO] [stdout] 77 + self.m.d_to_v(d) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoset.rs:117:9 [INFO] [stdout] | [INFO] [stdout] 117 | / return Patterns { [INFO] [stdout] 118 | | basic_move: basic_move, [INFO] [stdout] 119 | | basic_push: basic_push, [INFO] [stdout] 120 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 117 ~ Patterns { [INFO] [stdout] 118 + basic_move: basic_move, [INFO] [stdout] 119 + basic_push: basic_push, [INFO] [stdout] 120 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoset.rs:163:9 [INFO] [stdout] | [INFO] [stdout] 163 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 163 - return true; [INFO] [stdout] 163 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `start_state` [INFO] [stdout] --> src/mcts.rs:93:31 [INFO] [stdout] | [INFO] [stdout] 93 | pub fn rollout(&mut self, start_state: T, rollout_length: Option) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_start_state` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rollout_length` [INFO] [stdout] --> src/mcts.rs:93:47 [INFO] [stdout] | [INFO] [stdout] 93 | pub fn rollout(&mut self, start_state: T, rollout_length: Option) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rollout_length` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `until` [INFO] [stdout] --> src/mcts.rs:97:28 [INFO] [stdout] | [INFO] [stdout] 97 | pub fn mcts(&mut self, until: Option bool>, [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_until` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `rollout_length` [INFO] [stdout] --> src/mcts.rs:98:9 [INFO] [stdout] | [INFO] [stdout] 98 | rollout_length: Option, eval: Option OrderedFloat>, [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rollout_length` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `eval` [INFO] [stdout] --> src/mcts.rs:98:40 [INFO] [stdout] | [INFO] [stdout] 98 | rollout_length: Option, eval: Option OrderedFloat>, [INFO] [stdout] | ^^^^ help: if this is intentional, prefix it with an underscore: `_eval` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `max_states` [INFO] [stdout] --> src/mcts.rs:99:9 [INFO] [stdout] | [INFO] [stdout] 99 | max_states: Option, mgr: &::V) -> Option { [INFO] [stdout] | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_states` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `mgr` [INFO] [stdout] --> src/mcts.rs:99:36 [INFO] [stdout] | [INFO] [stdout] 99 | max_states: Option, mgr: &::V) -> Option { [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_mgr` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Matrix, Const<1>, ArrayStorage>` which implements the `Copy` trait [INFO] [stdout] --> src/sokoset.rs:133:31 [INFO] [stdout] | [INFO] [stdout] 133 | let mut current_pos = c.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/sokoset.rs:143:13 [INFO] [stdout] | [INFO] [stdout] 143 | current_pos = current_pos + dv; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `current_pos += dv` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Matrix, Const<1>, ArrayStorage>` which implements the `Copy` trait [INFO] [stdout] --> src/sokoset.rs:147:23 [INFO] [stdout] | [INFO] [stdout] 147 | current_pos = c.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/sokoset.rs:161:13 [INFO] [stdout] | [INFO] [stdout] 161 | current_pos = current_pos + dv; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `current_pos += dv` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoset.rs:198:9 [INFO] [stdout] | [INFO] [stdout] 198 | return Some(new_state); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 198 - return Some(new_state); [INFO] [stdout] 198 + Some(new_state) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Matrix, Const<1>, ArrayStorage>` which implements the `Copy` trait [INFO] [stdout] --> src/sokoset.rs:170:31 [INFO] [stdout] | [INFO] [stdout] 170 | let mut current_pos = c.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/sokoset.rs:179:13 [INFO] [stdout] | [INFO] [stdout] 179 | current_pos = current_pos + dv; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `current_pos += dv` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Matrix, Const<1>, ArrayStorage>` which implements the `Copy` trait [INFO] [stdout] --> src/sokoset.rs:182:23 [INFO] [stdout] | [INFO] [stdout] 182 | current_pos = c.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/sokoset.rs:196:13 [INFO] [stdout] | [INFO] [stdout] 196 | current_pos = current_pos + dv; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `current_pos += dv` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoset.rs:238:13 [INFO] [stdout] | [INFO] [stdout] 238 | return Some(new_state); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 238 - return Some(new_state); [INFO] [stdout] 238 + Some(new_state) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoset.rs:240:13 [INFO] [stdout] | [INFO] [stdout] 240 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 240 - return None; [INFO] [stdout] 240 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `s` [INFO] [stdout] --> src/heuristics.rs:241:25 [INFO] [stdout] | [INFO] [stdout] 241 | pub fn simple_heuristic(s: &SokoState) -> OrderedFloat { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_s` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoset.rs:253:9 [INFO] [stdout] | [INFO] [stdout] 253 | return self.apply_at_plocs(d, patterns, mgr); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 253 - return self.apply_at_plocs(d, patterns, mgr); [INFO] [stdout] 253 + self.apply_at_plocs(d, patterns, mgr) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/sokoset.rs:262:51 [INFO] [stdout] | [INFO] [stdout] 262 | if self.map_layer[i] == MAP_TARGET && !(self.entity_layer[i] == ENTITY_BLOCK) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(self.entity_layer[i] != ENTITY_BLOCK)` [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: unneeded `return` statement [INFO] [stdout] --> src/sokoset.rs:266:9 [INFO] [stdout] | [INFO] [stdout] 266 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 266 - return true; [INFO] [stdout] 266 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/mcts.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 35 | return v; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 35 - return v; [INFO] [stdout] 35 + v [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/mcts.rs:30:13 [INFO] [stdout] | [INFO] [stdout] 30 | / match self.update(d, mgr) { [INFO] [stdout] 31 | | Some(s) => { v.push(s) }, [INFO] [stdout] 32 | | None => {} [INFO] [stdout] 33 | | } [INFO] [stdout] | |_____________^ help: try: `if let Some(s) = self.update(d, mgr) { v.push(s) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Command` is never used [INFO] [stdout] --> src/main.rs:14:6 [INFO] [stdout] | [INFO] [stdout] 14 | enum Command { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `char_to_command` is never used [INFO] [stdout] --> src/main.rs:21:4 [INFO] [stdout] | [INFO] [stdout] 21 | fn char_to_command(c: Option<&u8>) -> Command { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `game_loop` is never used [INFO] [stdout] --> src/main.rs:38:4 [INFO] [stdout] | [INFO] [stdout] 38 | fn game_loop() -> () { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_MEMORY` is never used [INFO] [stdout] --> src/sokoengine.rs:14:7 [INFO] [stdout] | [INFO] [stdout] 14 | const MAX_MEMORY: usize = 100; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_open` is never used [INFO] [stdout] --> src/sokoengine.rs:24:8 [INFO] [stdout] | [INFO] [stdout] 23 | impl MapTile { [INFO] [stdout] | ------------ method in this implementation [INFO] [stdout] 24 | fn is_open(&self) -> bool { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `encode` is never used [INFO] [stdout] --> src/sokoengine.rs:61:8 [INFO] [stdout] | [INFO] [stdout] 60 | pub trait Coder { [INFO] [stdout] | ----- method in this trait [INFO] [stdout] 61 | fn encode(&self, t: (M, E)) -> char; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `to_str` is never used [INFO] [stdout] --> src/sokoengine.rs:71:8 [INFO] [stdout] | [INFO] [stdout] 69 | pub trait Stringable { [INFO] [stdout] | ---------- method in this trait [INFO] [stdout] 70 | fn from_str(s: &String, mgr: &C) -> Self; [INFO] [stdout] 71 | fn to_str(&self, mgr: &C) -> String; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `Box>`. Consider using just `HashSet<..>` [INFO] [stdout] --> src/mcts.rs:67:14 [INFO] [stdout] | [INFO] [stdout] 67 | visited: Box>, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `HashSet<..>` is already on the heap, `Box>` makes an extra allocation [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#box_collection [INFO] [stdout] = note: `#[warn(clippy::box_collection)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `Box>`. Consider using just `HashMap<..>` [INFO] [stdout] --> src/mcts.rs:68:17 [INFO] [stdout] | [INFO] [stdout] 68 | state_tree: Box>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `HashMap<..>` is already on the heap, `Box>` makes an extra allocation [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#box_collection [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `Box>`. Consider using just `HashMap<..>` [INFO] [stdout] --> src/mcts.rs:69:17 [INFO] [stdout] | [INFO] [stdout] 69 | state_data: Box>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `HashMap<..>` is already on the heap, `Box>` makes an extra allocation [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#box_collection [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `Box>`. Consider using just `BinaryHeap<..>` [INFO] [stdout] --> src/mcts.rs:70:18 [INFO] [stdout] | [INFO] [stdout] 70 | state_queue: Box>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `BinaryHeap<..>` is already on the heap, `Box>` makes an extra allocation [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#box_collection [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/mcts.rs:85:9 [INFO] [stdout] | [INFO] [stdout] 85 | ... return SearchTree { initial_state: initial_state.clone(), t: 1, visited : Box::new(v), state_tree : Box::new(h), state_data: Box::new(d), state_queue : Box::new(p) }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 85 - return SearchTree { initial_state: initial_state.clone(), t: 1, visited : Box::new(v), state_tree : Box::new(h), state_data: Box::new(d), state_queue : Box::new(p) }; [INFO] [stdout] 85 + SearchTree { initial_state: initial_state.clone(), t: 1, visited : Box::new(v), state_tree : Box::new(h), state_data: Box::new(d), state_queue : Box::new(p) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/mcts.rs:90:9 [INFO] [stdout] | [INFO] [stdout] 90 | return self.visited.len(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 90 - return self.visited.len(); [INFO] [stdout] 90 + self.visited.len() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `player_locs` is never read [INFO] [stdout] --> src/sokoengine.rs:140:9 [INFO] [stdout] | [INFO] [stdout] 137 | pub struct SokoState { [INFO] [stdout] | --------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 140 | pub player_locs: Vec>, // Should never be negative, but have to update with isizes [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SokoState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `y_increasing` is never used [INFO] [stdout] --> src/sokoengine.rs:177:4 [INFO] [stdout] | [INFO] [stdout] 177 | fn y_increasing(a: &Vector2) -> isize { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `y_decreasing` is never used [INFO] [stdout] --> src/sokoengine.rs:181:4 [INFO] [stdout] | [INFO] [stdout] 181 | fn y_decreasing(a: &Vector2) -> isize { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `x_increasing` is never used [INFO] [stdout] --> src/sokoengine.rs:185:4 [INFO] [stdout] | [INFO] [stdout] 185 | fn x_increasing(a: &Vector2) -> isize { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `x_decreasing` is never used [INFO] [stdout] --> src/sokoengine.rs:189:4 [INFO] [stdout] | [INFO] [stdout] 189 | fn x_decreasing(a: &Vector2) -> isize { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/mcts.rs:94:9 [INFO] [stdout] | [INFO] [stdout] 94 | return None //TODO [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 94 - return None //TODO [INFO] [stdout] 94 + None //TODO [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `choose_ordering` is never used [INFO] [stdout] --> src/sokoengine.rs:194:8 [INFO] [stdout] | [INFO] [stdout] 194 | pub fn choose_ordering(d: Direction) -> fn(&Vector2) -> isize { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `SokoInterface` is never used [INFO] [stdout] --> src/sokoengine.rs:211:11 [INFO] [stdout] | [INFO] [stdout] 211 | pub trait SokoInterface { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `set_tile` and `set_entity` are never used [INFO] [stdout] --> src/sokoengine.rs:234:12 [INFO] [stdout] | [INFO] [stdout] 217 | impl SokoState { [INFO] [stdout] | ------------------------------------------------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 234 | pub fn set_tile(&mut self, c: &Vector2, t: M) -> () { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 238 | pub fn set_entity(&mut self, c: &Vector2, e: E) -> () { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SokoMemory` is never constructed [INFO] [stdout] --> src/sokoengine.rs:352:12 [INFO] [stdout] | [INFO] [stdout] 352 | pub struct SokoMemory { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `update`, `undo`, and `is_win` are never used [INFO] [stdout] --> src/sokoengine.rs:384:12 [INFO] [stdout] | [INFO] [stdout] 378 | / impl> SokoMemory where [INFO] [stdout] 379 | | //C: as SokoInterface>::V, [INFO] [stdout] 380 | | SokoState: SokoInterface, [INFO] [stdout] 381 | | SokoState: Stringable, [INFO] [stdout] | |_________________________________________- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 384 | pub fn update(&mut self, d: Direction, mgr: & as SokoInterface>::V) -> () { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 400 | pub fn undo(&mut self) -> () { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 408 | pub fn is_win(&self) -> bool { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `NUM_PATTERNS` is never used [INFO] [stdout] --> src/sokoset.rs:9:7 [INFO] [stdout] | [INFO] [stdout] 9 | const NUM_PATTERNS: usize = 2; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `MapSet` is never used [INFO] [stdout] --> src/sokoset.rs:13:10 [INFO] [stdout] | [INFO] [stdout] 13 | pub type MapSet = u8; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAP_BLANK` is never used [INFO] [stdout] --> src/sokoset.rs:16:7 [INFO] [stdout] | [INFO] [stdout] 16 | const MAP_BLANK: MapSet = 1; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/mcts.rs:100:9 [INFO] [stdout] | [INFO] [stdout] 100 | return None //TODO [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 100 - return None //TODO [INFO] [stdout] 100 + None //TODO [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAP_WALL` is never used [INFO] [stdout] --> src/sokoset.rs:17:7 [INFO] [stdout] | [INFO] [stdout] 17 | const MAP_WALL: MapSet = 2; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAP_TARGET` is never used [INFO] [stdout] --> src/sokoset.rs:18:7 [INFO] [stdout] | [INFO] [stdout] 18 | const MAP_TARGET: MapSet = 4; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAP_ANY` is never used [INFO] [stdout] --> src/sokoset.rs:19:7 [INFO] [stdout] | [INFO] [stdout] 19 | const MAP_ANY: MapSet = 7; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAP_NOWALL` is never used [INFO] [stdout] --> src/sokoset.rs:20:7 [INFO] [stdout] | [INFO] [stdout] 20 | const MAP_NOWALL: MapSet = 5; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ENTITY_BLANK` is never used [INFO] [stdout] --> src/sokoset.rs:22:7 [INFO] [stdout] | [INFO] [stdout] 22 | const ENTITY_BLANK: EntitySet = 1; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ENTITY_BLOCK` is never used [INFO] [stdout] --> src/sokoset.rs:23:7 [INFO] [stdout] | [INFO] [stdout] 23 | const ENTITY_BLOCK: EntitySet = 2; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `ENTITY_ANY` is never used [INFO] [stdout] --> src/sokoset.rs:25:7 [INFO] [stdout] | [INFO] [stdout] 25 | const ENTITY_ANY: EntitySet = 7; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `mk_set_to_text` is never used [INFO] [stdout] --> src/sokoset.rs:36:8 [INFO] [stdout] | [INFO] [stdout] 36 | pub fn mk_set_to_text() -> BiMap<(MapSet, EntitySet), char> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/mcts.rs:155:9 [INFO] [stdout] | [INFO] [stdout] 155 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 155 - return None; [INFO] [stdout] 155 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SetManager` is never constructed [INFO] [stdout] --> src/sokoset.rs:48:12 [INFO] [stdout] | [INFO] [stdout] 48 | pub struct SetManager { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/sokoset.rs:55:12 [INFO] [stdout] | [INFO] [stdout] 53 | impl SetManager { [INFO] [stdout] | --------------- associated function in this implementation [INFO] [stdout] 54 | [INFO] [stdout] 55 | pub fn new(m: sokoengine::SokoManager, patterns: Patterns) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PatternEntry` is never constructed [INFO] [stdout] --> src/sokoset.rs:83:12 [INFO] [stdout] | [INFO] [stdout] 83 | pub struct PatternEntry { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Patterns` is never constructed [INFO] [stdout] --> src/sokoset.rs:88:12 [INFO] [stdout] | [INFO] [stdout] 88 | pub struct Patterns { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/sokoset.rs:108:11 [INFO] [stdout] | [INFO] [stdout] 106 | impl Patterns { [INFO] [stdout] | ------------- associated function in this implementation [INFO] [stdout] 107 | [INFO] [stdout] 108 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `SokoSet` is never used [INFO] [stdout] --> src/sokoset.rs:125:6 [INFO] [stdout] | [INFO] [stdout] 125 | type SokoSet = sokoengine::SokoState; [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `mut_pattern_at`, `apply_pattern_at`, and `apply_at_plocs` are never used [INFO] [stdout] --> src/sokoset.rs:131:8 [INFO] [stdout] | [INFO] [stdout] 127 | impl SokoSet { [INFO] [stdout] | ------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 131 | fn mut_pattern_at(&mut self, c: &Vector2, d: sokoengine::Direction, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 167 | fn apply_pattern_at(&self, c: &Vector2, d: sokoengine::Direction, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 202 | fn apply_at_plocs(&self, d: sokoengine::Direction, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `Searchable` is never used [INFO] [stdout] --> src/mcts.rs:13:11 [INFO] [stdout] | [INFO] [stdout] 13 | pub trait Searchable { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SearchState` is never constructed [INFO] [stdout] --> src/mcts.rs:40:8 [INFO] [stdout] | [INFO] [stdout] 40 | struct SearchState { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `StateData` is never constructed [INFO] [stdout] --> src/mcts.rs:47:8 [INFO] [stdout] | [INFO] [stdout] 47 | struct StateData { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `SearchTree` is never constructed [INFO] [stdout] --> src/mcts.rs:64:12 [INFO] [stdout] | [INFO] [stdout] 64 | pub struct SearchTree { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `n_states`, `rollout`, `mcts`, `basic_search`, and `unroll_search` are never used [INFO] [stdout] --> src/mcts.rs:77:12 [INFO] [stdout] | [INFO] [stdout] 73 | / impl SearchTree where [INFO] [stdout] 74 | | T: Stringable::V> [INFO] [stdout] | |________________________________________________________- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 77 | pub fn new(initial_state: T) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 89 | pub fn n_states(&self) -> usize { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 93 | pub fn rollout(&mut self, start_state: T, rollout_length: Option) -> Option { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | pub fn mcts(&mut self, until: Option bool>, [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 109 | pub fn basic_search(&mut self, until: Option bool>, max_states: Option, mgr: &::V) -> Optio... [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 160 | pub fn unroll_search(&self, end_state: T, start_state: T) -> Option> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `rotate_270` is never used [INFO] [stdout] --> src/heuristics.rs:26:4 [INFO] [stdout] | [INFO] [stdout] 26 | fn rotate_270(v: &Vector2) -> Vector2 { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `wall_traps` is never read [INFO] [stdout] --> src/heuristics.rs:141:5 [INFO] [stdout] | [INFO] [stdout] 139 | pub struct HeuristicHelper { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] 140 | target_locs: Vec>, [INFO] [stdout] 141 | wall_traps: Vec, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `simple_heuristic` is never used [INFO] [stdout] --> src/heuristics.rs:241:8 [INFO] [stdout] | [INFO] [stdout] 241 | pub fn simple_heuristic(s: &SokoState) -> OrderedFloat { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: importing a legacy numeric constant [INFO] [stdout] --> src/sokoengine.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::isize::MAX; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: remove this import and use the associated constant `isize::MAX` from the primitive type instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/sokoengine.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 25 | / match self { [INFO] [stdout] 26 | | MapTile::Blank => true, [INFO] [stdout] 27 | | MapTile::Target => true, [INFO] [stdout] 28 | | _ => false, [INFO] [stdout] 29 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 25 - match self { [INFO] [stdout] 26 - MapTile::Blank => true, [INFO] [stdout] 27 - MapTile::Target => true, [INFO] [stdout] 28 - _ => false, [INFO] [stdout] 29 - } [INFO] [stdout] 25 + matches!(self, MapTile::Blank | MapTile::Target) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoengine.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 35 | return MapTile::Wall; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 35 - return MapTile::Wall; [INFO] [stdout] 35 + MapTile::Wall [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoengine.rs:48:9 [INFO] [stdout] | [INFO] [stdout] 48 | return Entity::Blank; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 48 - return Entity::Blank; [INFO] [stdout] 48 + Entity::Blank [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/sokoengine.rs:70:20 [INFO] [stdout] | [INFO] [stdout] 70 | fn from_str(s: &String, mgr: &C) -> Self; [INFO] [stdout] | ^^^^^^^ help: change this to: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoengine.rs:86:9 [INFO] [stdout] | [INFO] [stdout] 86 | return *self == Entity::Player; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 86 - return *self == Entity::Player; [INFO] [stdout] 86 + *self == Entity::Player [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoengine.rs:126:9 [INFO] [stdout] | [INFO] [stdout] 126 | return *self.symbol_table.get_by_left(&t).expect("Bad map, entity combination!"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 126 - return *self.symbol_table.get_by_left(&t).expect("Bad map, entity combination!"); [INFO] [stdout] 126 + *self.symbol_table.get_by_left(&t).expect("Bad map, entity combination!") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoengine.rs:130:9 [INFO] [stdout] | [INFO] [stdout] 130 | return *self.symbol_table.get_by_right(&c).expect("Bad character!"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 130 - return *self.symbol_table.get_by_right(&c).expect("Bad character!"); [INFO] [stdout] 130 + *self.symbol_table.get_by_right(&c).expect("Bad character!") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoengine.rs:173:5 [INFO] [stdout] | [INFO] [stdout] 173 | return type_to_text; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 173 - return type_to_text; [INFO] [stdout] 173 + type_to_text [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoengine.rs:205:5 [INFO] [stdout] | [INFO] [stdout] 205 | return a.get((c.x as usize, c.y as usize)).cloned(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 205 - return a.get((c.x as usize, c.y as usize)).cloned(); [INFO] [stdout] 205 + a.get((c.x as usize, c.y as usize)).cloned() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match can be simplified with `.unwrap_or_default()` [INFO] [stdout] --> src/sokoengine.rs:220:9 [INFO] [stdout] | [INFO] [stdout] 220 | / match index_checked(&self.map_layer, c) { [INFO] [stdout] 221 | | Some(a) => a, [INFO] [stdout] 222 | | None => M::default(), [INFO] [stdout] 223 | | } [INFO] [stdout] | |_________^ help: replace it with: `index_checked(&self.map_layer, c).unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::manual_unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match can be simplified with `.unwrap_or_default()` [INFO] [stdout] --> src/sokoengine.rs:227:9 [INFO] [stdout] | [INFO] [stdout] 227 | / match index_checked(&self.entity_layer, c) { [INFO] [stdout] 228 | | Some(a) => a, [INFO] [stdout] 229 | | None => E::default(), [INFO] [stdout] 230 | | } [INFO] [stdout] | |_________^ help: replace it with: `index_checked(&self.entity_layer, c).unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_unwrap_or_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> src/sokoengine.rs:234:57 [INFO] [stdout] | [INFO] [stdout] 234 | pub fn set_tile(&mut self, c: &Vector2, t: M) -> () { [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> src/sokoengine.rs:238:59 [INFO] [stdout] | [INFO] [stdout] 238 | pub fn set_entity(&mut self, c: &Vector2, e: E) -> () { [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoengine.rs:260:9 [INFO] [stdout] | [INFO] [stdout] 260 | return s; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 260 - return s; [INFO] [stdout] 260 + s [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/mcts.rs:126:21 [INFO] [stdout] | [INFO] [stdout] 126 | self.t = self.t + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.t += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/mcts.rs:127:24 [INFO] [stdout] | [INFO] [stdout] 127 | if (self.n_states() % 10000) == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `self.n_states().is_multiple_of(10000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/mcts.rs:139:36 [INFO] [stdout] | [INFO] [stdout] 139 | Some(m) => if self.t > m { [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 140 | | return None [INFO] [stdout] 141 | | }, [INFO] [stdout] | |_____________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 139 ~ Some(m)f self.t > m => { [INFO] [stdout] 140 ~ return None, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/mcts.rs:138:21 [INFO] [stdout] | [INFO] [stdout] 138 | / match max_states { [INFO] [stdout] 139 | | Some(m) => if self.t > m { [INFO] [stdout] 140 | | return None [INFO] [stdout] 141 | | }, [INFO] [stdout] ... | [INFO] [stdout] 144 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 138 ~ if let Some(m) = max_states { if self.t > m { [INFO] [stdout] 139 + return None [INFO] [stdout] 140 + } } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/mcts.rs:147:37 [INFO] [stdout] | [INFO] [stdout] 147 | Some(f) => {if f(&neighbor) { [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 148 | | return Some(neighbor); [INFO] [stdout] 149 | | }}, [INFO] [stdout] | |_____________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 147 ~ Some(f)if f(&neighbor) => { [INFO] [stdout] 148 | return Some(neighbor); [INFO] [stdout] 149 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/mcts.rs:146:21 [INFO] [stdout] | [INFO] [stdout] 146 | / match until { [INFO] [stdout] 147 | | Some(f) => {if f(&neighbor) { [INFO] [stdout] 148 | | return Some(neighbor); [INFO] [stdout] 149 | | }}, [INFO] [stdout] 150 | | None => {} [INFO] [stdout] 151 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 146 ~ if let Some(f) = until {if f(&neighbor) { [INFO] [stdout] 147 + return Some(neighbor); [INFO] [stdout] 148 + }} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/mcts.rs:173:9 [INFO] [stdout] | [INFO] [stdout] 173 | return Some(result); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 173 - return Some(result); [INFO] [stdout] 173 + Some(result) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/heuristics.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | return Vector2::new(-v.y, v.x); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 19 - return Vector2::new(-v.y, v.x); [INFO] [stdout] 19 + Vector2::new(-v.y, v.x) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/heuristics.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | return Vector2::new(-v.x, -v.y); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 23 - return Vector2::new(-v.x, -v.y); [INFO] [stdout] 23 + Vector2::new(-v.x, -v.y) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/heuristics.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 27 | return Vector2::new(v.y, -v.x); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 27 - return Vector2::new(v.y, -v.x); [INFO] [stdout] 27 + Vector2::new(v.y, -v.x) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Matrix, Const<1>, ArrayStorage>` which implements the `Copy` trait [INFO] [stdout] --> src/heuristics.rs:31:17 [INFO] [stdout] | [INFO] [stdout] 31 | let start = p.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*p` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Matrix, Const<1>, ArrayStorage>` which implements the `Copy` trait [INFO] [stdout] --> src/heuristics.rs:32:19 [INFO] [stdout] | [INFO] [stdout] 32 | let mut end = p.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*p` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/heuristics.rs:41:9 [INFO] [stdout] | [INFO] [stdout] 41 | end = end + dv; [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `end += dv` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/heuristics.rs:46:5 [INFO] [stdout] | [INFO] [stdout] 46 | end = end - dv; [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `end -= dv` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/heuristics.rs:121:5 [INFO] [stdout] | [INFO] [stdout] 121 | return wall_traps; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 121 - return wall_traps; [INFO] [stdout] 121 + wall_traps [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/heuristics.rs:113:21 [INFO] [stdout] | [INFO] [stdout] 113 | / match check_trap(s, &iv, &dv, &dv_p, d) { [INFO] [stdout] 114 | | Some(t) => { wall_traps.push(t); } [INFO] [stdout] 115 | | None => {} [INFO] [stdout] 116 | | } [INFO] [stdout] | |_____________________^ help: try: `if let Some(t) = check_trap(s, &iv, &dv, &dv_p, d) { wall_traps.push(t); }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/heuristics.rs:113:46 [INFO] [stdout] | [INFO] [stdout] 113 | match check_trap(s, &iv, &dv, &dv_p, d) { [INFO] [stdout] | ^^^ help: change this to: `dv` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/heuristics.rs:135:5 [INFO] [stdout] | [INFO] [stdout] 135 | return false //TODO [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 135 - return false //TODO [INFO] [stdout] 135 + false //TODO [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/heuristics.rs:167:9 [INFO] [stdout] | [INFO] [stdout] 167 | return HeuristicHelper { target_locs: target_locs, wall_traps: traps, trap_to_targets: traps_to_targets }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 167 - return HeuristicHelper { target_locs: target_locs, wall_traps: traps, trap_to_targets: traps_to_targets }; [INFO] [stdout] 167 + HeuristicHelper { target_locs: target_locs, wall_traps: traps, trap_to_targets: traps_to_targets } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Matrix, Const<1>, ArrayStorage>` which implements the `Copy` trait [INFO] [stdout] --> src/heuristics.rs:152:34 [INFO] [stdout] | [INFO] [stdout] 152 | target_locs.push(iv.clone()); [INFO] [stdout] | ^^^^^^^^^^ help: try removing the `clone` call: `iv` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Matrix, Const<1>, ArrayStorage>` which implements the `Copy` trait [INFO] [stdout] --> src/heuristics.rs:163:88 [INFO] [stdout] | [INFO] [stdout] 163 | traps_to_targets.get_mut(t).expect("Couldn't find the trap!").push(loc.clone()); [INFO] [stdout] | ^^^^^^^^^^^ help: try dereferencing it: `*loc` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/heuristics.rs:174:5 [INFO] [stdout] | [INFO] [stdout] 174 | return (v1.x - v2.x).abs() + (v1.y - v2.y).abs(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 174 - return (v1.x - v2.x).abs() + (v1.y - v2.y).abs(); [INFO] [stdout] 174 + (v1.x - v2.x).abs() + (v1.y - v2.y).abs() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/heuristics.rs:238:5 [INFO] [stdout] | [INFO] [stdout] 238 | return distance_matrix; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 238 - return distance_matrix; [INFO] [stdout] 238 + distance_matrix [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/heuristics.rs:193:37 [INFO] [stdout] | [INFO] [stdout] 193 | for (j, block) in (&block_locs).into_iter().enumerate() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] = note: `#[warn(clippy::into_iter_on_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoengine.rs:279:9 [INFO] [stdout] | [INFO] [stdout] 279 | return SokoState{map_layer: tiles, entity_layer: entities, player_locs: locs}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 279 - return SokoState{map_layer: tiles, entity_layer: entities, player_locs: locs}; [INFO] [stdout] 279 + SokoState{map_layer: tiles, entity_layer: entities, player_locs: locs} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/heuristics.rs:199:58 [INFO] [stdout] | [INFO] [stdout] 199 | for (i, target) in (&helper.target_locs).into_iter().enumerate() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoengine.rs:335:13 [INFO] [stdout] | [INFO] [stdout] 335 | return Some(new_state) // placeholder [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 335 - return Some(new_state) // placeholder [INFO] [stdout] 335 + Some(new_state) // placeholder [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoengine.rs:337:13 [INFO] [stdout] | [INFO] [stdout] 337 | return None [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 337 - return None [INFO] [stdout] 337 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/sokoengine.rs:306:42 [INFO] [stdout] | [INFO] [stdout] 306 | new_state.set_entity(&loc, Entity::Blank); [INFO] [stdout] | ^^^^ help: change this to: `loc` [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: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/heuristics.rs:214:58 [INFO] [stdout] | [INFO] [stdout] 214 | for (i, target) in (&helper.target_locs).into_iter().enumerate() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/heuristics.rs:224:58 [INFO] [stdout] | [INFO] [stdout] 224 | for (i, target) in (&helper.target_locs).into_iter().enumerate() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/heuristics.rs:242:5 [INFO] [stdout] | [INFO] [stdout] 242 | return OrderedFloat(0.0); //TODO [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 242 - return OrderedFloat(0.0); //TODO [INFO] [stdout] 242 + OrderedFloat(0.0)//TODO [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/sokoengine.rs:316:46 [INFO] [stdout] | [INFO] [stdout] 316 | new_state.set_entity(&loc, Entity::Blank); [INFO] [stdout] | ^^^^ help: change this to: `loc` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoengine.rs:348:9 [INFO] [stdout] | [INFO] [stdout] 348 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 348 - return true; [INFO] [stdout] 348 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/heuristics.rs:255:5 [INFO] [stdout] | [INFO] [stdout] 255 | return OrderedFloat(c as f64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 255 - return OrderedFloat(c as f64); [INFO] [stdout] 255 + OrderedFloat(c as f64) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> src/main.rs:38:15 [INFO] [stdout] | [INFO] [stdout] 38 | fn game_loop() -> () { [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoengine.rs:368:9 [INFO] [stdout] | [INFO] [stdout] 368 | return SokoMemory { current_state: s, past_states: VecDeque::new(), phantom: PhantomData}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 368 - return SokoMemory { current_state: s, past_states: VecDeque::new(), phantom: PhantomData}; [INFO] [stdout] 368 + SokoMemory { current_state: s, past_states: VecDeque::new(), phantom: PhantomData} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> src/sokoengine.rs:384:94 [INFO] [stdout] | [INFO] [stdout] 384 | pub fn update(&mut self, d: Direction, mgr: & as SokoInterface>::V) -> () { [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/sokoengine.rs:386:9 [INFO] [stdout] | [INFO] [stdout] 386 | / match s_opt { [INFO] [stdout] 387 | | // Only update the queue and the current state if the move succeeds [INFO] [stdout] 388 | | Some(s_next) => { [INFO] [stdout] 389 | | if self.past_states.len() >= MAX_MEMORY { [INFO] [stdout] ... | [INFO] [stdout] 396 | | None => {} [INFO] [stdout] 397 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: you might want to preserve the comments from inside the `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 386 ~ if let Some(s_next) = s_opt { [INFO] [stdout] 387 + if self.past_states.len() >= MAX_MEMORY { [INFO] [stdout] 388 + self.past_states.pop_front(); [INFO] [stdout] 389 + } [INFO] [stdout] 390 + //TODO: there is probably some way to do this without cloning [INFO] [stdout] 391 + self.past_states.push_back(self.current_state.clone()); [INFO] [stdout] 392 + self.current_state = s_next; [INFO] [stdout] 393 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> src/sokoengine.rs:400:27 [INFO] [stdout] | [INFO] [stdout] 400 | pub fn undo(&mut self) -> () { [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoset.rs:29:9 [INFO] [stdout] | [INFO] [stdout] 29 | return *self == ENTITY_PLAYER; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 29 - return *self == ENTITY_PLAYER; [INFO] [stdout] 29 + *self == ENTITY_PLAYER [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoset.rs:45:5 [INFO] [stdout] | [INFO] [stdout] 45 | return set_to_text; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 45 - return set_to_text; [INFO] [stdout] 45 + set_to_text [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoset.rs:56:9 [INFO] [stdout] | [INFO] [stdout] 56 | return SetManager { m: m, patterns: patterns }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 56 - return SetManager { m: m, patterns: patterns }; [INFO] [stdout] 56 + SetManager { m: m, patterns: patterns } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoset.rs:70:9 [INFO] [stdout] | [INFO] [stdout] 70 | return self.m.decode(c); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 70 - return self.m.decode(c); [INFO] [stdout] 70 + self.m.decode(c) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoset.rs:77:9 [INFO] [stdout] | [INFO] [stdout] 77 | return self.m.d_to_v(d); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 77 - return self.m.d_to_v(d); [INFO] [stdout] 77 + self.m.d_to_v(d) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoset.rs:117:9 [INFO] [stdout] | [INFO] [stdout] 117 | / return Patterns { [INFO] [stdout] 118 | | basic_move: basic_move, [INFO] [stdout] 119 | | basic_push: basic_push, [INFO] [stdout] 120 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 117 ~ Patterns { [INFO] [stdout] 118 + basic_move: basic_move, [INFO] [stdout] 119 + basic_push: basic_push, [INFO] [stdout] 120 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `i.as_bytes().get(0)` [INFO] [stdout] --> src/main.rs:56:30 [INFO] [stdout] | [INFO] [stdout] 56 | let c: Option<&u8> = i.as_bytes().get(0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `i.as_bytes().first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoset.rs:163:9 [INFO] [stdout] | [INFO] [stdout] 163 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 163 - return true; [INFO] [stdout] 163 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Matrix, Const<1>, ArrayStorage>` which implements the `Copy` trait [INFO] [stdout] --> src/sokoset.rs:133:31 [INFO] [stdout] | [INFO] [stdout] 133 | let mut current_pos = c.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/sokoset.rs:143:13 [INFO] [stdout] | [INFO] [stdout] 143 | current_pos = current_pos + dv; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `current_pos += dv` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Matrix, Const<1>, ArrayStorage>` which implements the `Copy` trait [INFO] [stdout] --> src/sokoset.rs:147:23 [INFO] [stdout] | [INFO] [stdout] 147 | current_pos = c.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/sokoset.rs:161:13 [INFO] [stdout] | [INFO] [stdout] 161 | current_pos = current_pos + dv; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `current_pos += dv` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoset.rs:198:9 [INFO] [stdout] | [INFO] [stdout] 198 | return Some(new_state); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 198 - return Some(new_state); [INFO] [stdout] 198 + Some(new_state) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Matrix, Const<1>, ArrayStorage>` which implements the `Copy` trait [INFO] [stdout] --> src/sokoset.rs:170:31 [INFO] [stdout] | [INFO] [stdout] 170 | let mut current_pos = c.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/sokoset.rs:179:13 [INFO] [stdout] | [INFO] [stdout] 179 | current_pos = current_pos + dv; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `current_pos += dv` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Matrix, Const<1>, ArrayStorage>` which implements the `Copy` trait [INFO] [stdout] --> src/sokoset.rs:182:23 [INFO] [stdout] | [INFO] [stdout] 182 | current_pos = c.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*c` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/sokoset.rs:196:13 [INFO] [stdout] | [INFO] [stdout] 196 | current_pos = current_pos + dv; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `current_pos += dv` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoset.rs:238:13 [INFO] [stdout] | [INFO] [stdout] 238 | return Some(new_state); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 238 - return Some(new_state); [INFO] [stdout] 238 + Some(new_state) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoset.rs:240:13 [INFO] [stdout] | [INFO] [stdout] 240 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 240 - return None; [INFO] [stdout] 240 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/sokoset.rs:253:9 [INFO] [stdout] | [INFO] [stdout] 253 | return self.apply_at_plocs(d, patterns, mgr); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 253 - return self.apply_at_plocs(d, patterns, mgr); [INFO] [stdout] 253 + self.apply_at_plocs(d, patterns, mgr) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/sokoset.rs:262:51 [INFO] [stdout] | [INFO] [stdout] 262 | if self.map_layer[i] == MAP_TARGET && !(self.entity_layer[i] == ENTITY_BLOCK) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(self.entity_layer[i] != ENTITY_BLOCK)` [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: unneeded `return` statement [INFO] [stdout] --> src/sokoset.rs:266:9 [INFO] [stdout] | [INFO] [stdout] 266 | return true; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 266 - return true; [INFO] [stdout] 266 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/mcts.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 35 | return v; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 35 - return v; [INFO] [stdout] 35 + v [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/mcts.rs:30:13 [INFO] [stdout] | [INFO] [stdout] 30 | / match self.update(d, mgr) { [INFO] [stdout] 31 | | Some(s) => { v.push(s) }, [INFO] [stdout] 32 | | None => {} [INFO] [stdout] 33 | | } [INFO] [stdout] | |_____________^ help: try: `if let Some(s) = self.update(d, mgr) { v.push(s) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `Box>`. Consider using just `HashSet<..>` [INFO] [stdout] --> src/mcts.rs:67:14 [INFO] [stdout] | [INFO] [stdout] 67 | visited: Box>, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `HashSet<..>` is already on the heap, `Box>` makes an extra allocation [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#box_collection [INFO] [stdout] = note: `#[warn(clippy::box_collection)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `Box>`. Consider using just `HashMap<..>` [INFO] [stdout] --> src/mcts.rs:68:17 [INFO] [stdout] | [INFO] [stdout] 68 | state_tree: Box>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `HashMap<..>` is already on the heap, `Box>` makes an extra allocation [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#box_collection [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `Box>`. Consider using just `HashMap<..>` [INFO] [stdout] --> src/mcts.rs:69:17 [INFO] [stdout] | [INFO] [stdout] 69 | state_data: Box>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `HashMap<..>` is already on the heap, `Box>` makes an extra allocation [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#box_collection [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `Box>`. Consider using just `BinaryHeap<..>` [INFO] [stdout] --> src/mcts.rs:70:18 [INFO] [stdout] | [INFO] [stdout] 70 | state_queue: Box>>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `BinaryHeap<..>` is already on the heap, `Box>` makes an extra allocation [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#box_collection [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/mcts.rs:85:9 [INFO] [stdout] | [INFO] [stdout] 85 | ... return SearchTree { initial_state: initial_state.clone(), t: 1, visited : Box::new(v), state_tree : Box::new(h), state_data: Box::new(d), state_queue : Box::new(p) }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 85 - return SearchTree { initial_state: initial_state.clone(), t: 1, visited : Box::new(v), state_tree : Box::new(h), state_data: Box::new(d), state_queue : Box::new(p) }; [INFO] [stdout] 85 + SearchTree { initial_state: initial_state.clone(), t: 1, visited : Box::new(v), state_tree : Box::new(h), state_data: Box::new(d), state_queue : Box::new(p) } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/mcts.rs:90:9 [INFO] [stdout] | [INFO] [stdout] 90 | return self.visited.len(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 90 - return self.visited.len(); [INFO] [stdout] 90 + self.visited.len() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/mcts.rs:94:9 [INFO] [stdout] | [INFO] [stdout] 94 | return None //TODO [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 94 - return None //TODO [INFO] [stdout] 94 + None //TODO [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/mcts.rs:100:9 [INFO] [stdout] | [INFO] [stdout] 100 | return None //TODO [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 100 - return None //TODO [INFO] [stdout] 100 + None //TODO [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/mcts.rs:155:9 [INFO] [stdout] | [INFO] [stdout] 155 | return None; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 155 - return None; [INFO] [stdout] 155 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/mcts.rs:126:21 [INFO] [stdout] | [INFO] [stdout] 126 | self.t = self.t + 1; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.t += 1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/mcts.rs:127:24 [INFO] [stdout] | [INFO] [stdout] 127 | if (self.n_states() % 10000) == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `self.n_states().is_multiple_of(10000)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/mcts.rs:139:36 [INFO] [stdout] | [INFO] [stdout] 139 | Some(m) => if self.t > m { [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 140 | | return None [INFO] [stdout] 141 | | }, [INFO] [stdout] | |_____________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 139 ~ Some(m)f self.t > m => { [INFO] [stdout] 140 ~ return None, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/mcts.rs:138:21 [INFO] [stdout] | [INFO] [stdout] 138 | / match max_states { [INFO] [stdout] 139 | | Some(m) => if self.t > m { [INFO] [stdout] 140 | | return None [INFO] [stdout] 141 | | }, [INFO] [stdout] ... | [INFO] [stdout] 144 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 138 ~ if let Some(m) = max_states { if self.t > m { [INFO] [stdout] 139 + return None [INFO] [stdout] 140 + } } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 27.26s [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/mcts.rs:147:37 [INFO] [stdout] | [INFO] [stdout] 147 | Some(f) => {if f(&neighbor) { [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 148 | | return Some(neighbor); [INFO] [stdout] 149 | | }}, [INFO] [stdout] | |_____________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 147 ~ Some(f)if f(&neighbor) => { [INFO] [stdout] 148 | return Some(neighbor); [INFO] [stdout] 149 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/mcts.rs:146:21 [INFO] [stdout] | [INFO] [stdout] 146 | / match until { [INFO] [stdout] 147 | | Some(f) => {if f(&neighbor) { [INFO] [stdout] 148 | | return Some(neighbor); [INFO] [stdout] 149 | | }}, [INFO] [stdout] 150 | | None => {} [INFO] [stdout] 151 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 146 ~ if let Some(f) = until {if f(&neighbor) { [INFO] [stdout] 147 + return Some(neighbor); [INFO] [stdout] 148 + }} [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/mcts.rs:173:9 [INFO] [stdout] | [INFO] [stdout] 173 | return Some(result); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 173 - return Some(result); [INFO] [stdout] 173 + Some(result) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/heuristics.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | return Vector2::new(-v.y, v.x); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 19 - return Vector2::new(-v.y, v.x); [INFO] [stdout] 19 + Vector2::new(-v.y, v.x) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/heuristics.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | return Vector2::new(-v.x, -v.y); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 23 - return Vector2::new(-v.x, -v.y); [INFO] [stdout] 23 + Vector2::new(-v.x, -v.y) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/heuristics.rs:27:5 [INFO] [stdout] | [INFO] [stdout] 27 | return Vector2::new(v.y, -v.x); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 27 - return Vector2::new(v.y, -v.x); [INFO] [stdout] 27 + Vector2::new(v.y, -v.x) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Matrix, Const<1>, ArrayStorage>` which implements the `Copy` trait [INFO] [stdout] --> src/heuristics.rs:31:17 [INFO] [stdout] | [INFO] [stdout] 31 | let start = p.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*p` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Matrix, Const<1>, ArrayStorage>` which implements the `Copy` trait [INFO] [stdout] --> src/heuristics.rs:32:19 [INFO] [stdout] | [INFO] [stdout] 32 | let mut end = p.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*p` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/heuristics.rs:41:9 [INFO] [stdout] | [INFO] [stdout] 41 | end = end + dv; [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `end += dv` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/heuristics.rs:46:5 [INFO] [stdout] | [INFO] [stdout] 46 | end = end - dv; [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `end -= dv` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/heuristics.rs:121:5 [INFO] [stdout] | [INFO] [stdout] 121 | return wall_traps; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 121 - return wall_traps; [INFO] [stdout] 121 + wall_traps [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/heuristics.rs:113:21 [INFO] [stdout] | [INFO] [stdout] 113 | / match check_trap(s, &iv, &dv, &dv_p, d) { [INFO] [stdout] 114 | | Some(t) => { wall_traps.push(t); } [INFO] [stdout] 115 | | None => {} [INFO] [stdout] 116 | | } [INFO] [stdout] | |_____________________^ help: try: `if let Some(t) = check_trap(s, &iv, &dv, &dv_p, d) { wall_traps.push(t); }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/heuristics.rs:113:46 [INFO] [stdout] | [INFO] [stdout] 113 | match check_trap(s, &iv, &dv, &dv_p, d) { [INFO] [stdout] | ^^^ help: change this to: `dv` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/heuristics.rs:135:5 [INFO] [stdout] | [INFO] [stdout] 135 | return false //TODO [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 135 - return false //TODO [INFO] [stdout] 135 + false //TODO [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/heuristics.rs:167:9 [INFO] [stdout] | [INFO] [stdout] 167 | return HeuristicHelper { target_locs: target_locs, wall_traps: traps, trap_to_targets: traps_to_targets }; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 167 - return HeuristicHelper { target_locs: target_locs, wall_traps: traps, trap_to_targets: traps_to_targets }; [INFO] [stdout] 167 + HeuristicHelper { target_locs: target_locs, wall_traps: traps, trap_to_targets: traps_to_targets } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Matrix, Const<1>, ArrayStorage>` which implements the `Copy` trait [INFO] [stdout] --> src/heuristics.rs:152:34 [INFO] [stdout] | [INFO] [stdout] 152 | target_locs.push(iv.clone()); [INFO] [stdout] | ^^^^^^^^^^ help: try removing the `clone` call: `iv` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Matrix, Const<1>, ArrayStorage>` which implements the `Copy` trait [INFO] [stdout] --> src/heuristics.rs:163:88 [INFO] [stdout] | [INFO] [stdout] 163 | traps_to_targets.get_mut(t).expect("Couldn't find the trap!").push(loc.clone()); [INFO] [stdout] | ^^^^^^^^^^^ help: try dereferencing it: `*loc` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/heuristics.rs:174:5 [INFO] [stdout] | [INFO] [stdout] 174 | return (v1.x - v2.x).abs() + (v1.y - v2.y).abs(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 174 - return (v1.x - v2.x).abs() + (v1.y - v2.y).abs(); [INFO] [stdout] 174 + (v1.x - v2.x).abs() + (v1.y - v2.y).abs() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/heuristics.rs:238:5 [INFO] [stdout] | [INFO] [stdout] 238 | return distance_matrix; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 238 - return distance_matrix; [INFO] [stdout] 238 + distance_matrix [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/heuristics.rs:193:37 [INFO] [stdout] | [INFO] [stdout] 193 | for (j, block) in (&block_locs).into_iter().enumerate() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] = note: `#[warn(clippy::into_iter_on_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/heuristics.rs:199:58 [INFO] [stdout] | [INFO] [stdout] 199 | for (i, target) in (&helper.target_locs).into_iter().enumerate() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/heuristics.rs:214:58 [INFO] [stdout] | [INFO] [stdout] 214 | for (i, target) in (&helper.target_locs).into_iter().enumerate() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/heuristics.rs:224:58 [INFO] [stdout] | [INFO] [stdout] 224 | for (i, target) in (&helper.target_locs).into_iter().enumerate() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/heuristics.rs:242:5 [INFO] [stdout] | [INFO] [stdout] 242 | return OrderedFloat(0.0); //TODO [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 242 - return OrderedFloat(0.0); //TODO [INFO] [stdout] 242 + OrderedFloat(0.0)//TODO [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/heuristics.rs:255:5 [INFO] [stdout] | [INFO] [stdout] 255 | return OrderedFloat(c as f64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 255 - return OrderedFloat(c as f64); [INFO] [stdout] 255 + OrderedFloat(c as f64) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> src/main.rs:38:15 [INFO] [stdout] | [INFO] [stdout] 38 | fn game_loop() -> () { [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `i.as_bytes().get(0)` [INFO] [stdout] --> src/main.rs:56:30 [INFO] [stdout] | [INFO] [stdout] 56 | let c: Option<&u8> = i.as_bytes().get(0); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `i.as_bytes().first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "fe0445ea973e8fc53e4b5ada4c11df1aa3af0c522cd4c45d9ece830243b3b72f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "fe0445ea973e8fc53e4b5ada4c11df1aa3af0c522cd4c45d9ece830243b3b72f", kill_on_drop: false }` [INFO] [stdout] fe0445ea973e8fc53e4b5ada4c11df1aa3af0c522cd4c45d9ece830243b3b72f