[INFO] cloning repository https://github.com/IdioticRemi/fall-challenge-2022 [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/IdioticRemi/fall-challenge-2022" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FIdioticRemi%2Ffall-challenge-2022", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FIdioticRemi%2Ffall-challenge-2022'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] aeac353076b6ab6d1c173cad3e605809f34e6836 [INFO] linting IdioticRemi/fall-challenge-2022 against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FIdioticRemi%2Ffall-challenge-2022" "/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/IdioticRemi/fall-challenge-2022 [INFO] finished tweaking git repo https://github.com/IdioticRemi/fall-challenge-2022 [INFO] tweaked toml for git repo https://github.com/IdioticRemi/fall-challenge-2022 written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/IdioticRemi/fall-challenge-2022 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/IdioticRemi/fall-challenge-2022 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 libc v0.2.138 [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] 0f0d0180ca15a3b14735aaaba377017c7c4f63a3f8ebda280dea34a6084d1606 [INFO] running `Command { std: "docker" "start" "-a" "0f0d0180ca15a3b14735aaaba377017c7c4f63a3f8ebda280dea34a6084d1606", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "0f0d0180ca15a3b14735aaaba377017c7c4f63a3f8ebda280dea34a6084d1606", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0f0d0180ca15a3b14735aaaba377017c7c4f63a3f8ebda280dea34a6084d1606", kill_on_drop: false }` [INFO] [stdout] 0f0d0180ca15a3b14735aaaba377017c7c4f63a3f8ebda280dea34a6084d1606 [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] bef7642de5ea23d0c6134a7eedbec8a51e48d39e2ed68b64a3a1c403241070c9 [INFO] running `Command { std: "docker" "start" "-a" "bef7642de5ea23d0c6134a7eedbec8a51e48d39e2ed68b64a3a1c403241070c9", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.138 [INFO] [stderr] Checking getrandom v0.2.8 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking fall_challenge_2022 v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:165:21 [INFO] [stdout] | [INFO] [stdout] 165 | let mut tile = self.tiles[x].get_mut(y).unwrap(); [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `next_tile` [INFO] [stdout] --> src/main.rs:336:21 [INFO] [stdout] | [INFO] [stdout] 336 | let next_tile = &self.tiles[next.0][next.1]; [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_next_tile` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `turn` is assigned to, but never used [INFO] [stdout] --> src/main.rs:424:9 [INFO] [stdout] | [INFO] [stdout] 424 | let mut turn: usize = 0; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_turn` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bfs_nearest_neutral` [INFO] [stdout] --> src/main.rs:428:9 [INFO] [stdout] | [INFO] [stdout] 428 | let bfs_nearest_neutral = |tile: &Tile| tile.owner == Owner::NEUTRAL; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bfs_nearest_neutral` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bfs_nearest_enemy` [INFO] [stdout] --> src/main.rs:430:9 [INFO] [stdout] | [INFO] [stdout] 430 | let bfs_nearest_enemy = |tile: &Tile| tile.owner == Owner::OPP; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bfs_nearest_enemy` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `turn` is never read [INFO] [stdout] --> src/main.rs:679:9 [INFO] [stdout] | [INFO] [stdout] 679 | turn += 1; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `bfs_to` is never used [INFO] [stdout] --> src/main.rs:320:8 [INFO] [stdout] | [INFO] [stdout] 89 | impl Game { [INFO] [stdout] | --------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 320 | fn bfs_to(&self, start: Position, end: Position) -> Vec { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `OPP` contains a capitalized acronym [INFO] [stdout] --> src/main.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | OPP = 0, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Opp` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `NEUTRAL` contains a capitalized acronym [INFO] [stdout] --> src/main.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | NEUTRAL = -1, [INFO] [stdout] | ^^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Neutral` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct implementation of `ToString` [INFO] [stdout] --> src/main.rs:23:1 [INFO] [stdout] | [INFO] [stdout] 23 | / impl ToString for Owner { [INFO] [stdout] 24 | | fn to_string(&self) -> String { [INFO] [stdout] 25 | | match self { [INFO] [stdout] 26 | | Owner::ME => ".".to_string(), [INFO] [stdout] ... | [INFO] [stdout] 31 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: prefer implementing `Display` instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_trait_impl [INFO] [stdout] = note: `#[warn(clippy::to_string_trait_impl)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `side_worth` [INFO] [stdout] --> src/main.rs:211:22 [INFO] [stdout] | [INFO] [stdout] 211 | for i in 0..side_worth.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 211 - for i in 0..side_worth.len() { [INFO] [stdout] 211 + for in &mut side_worth { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/main.rs:234:15 [INFO] [stdout] | [INFO] [stdout] 234 | while queue.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!queue.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/main.rs:243:92 [INFO] [stdout] | [INFO] [stdout] 243 | ... map.get(&(*x1, *y1)).map(|t| Some(t))).collect::>>(); [INFO] [stdout] | ^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Some` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/main.rs:245:16 [INFO] [stdout] | [INFO] [stdout] 245 | if tmp.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `tmp.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/main.rs:292:15 [INFO] [stdout] | [INFO] [stdout] 292 | while queue.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!queue.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:366:9 [INFO] [stdout] | [INFO] [stdout] 366 | return path; [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] 366 - return path; [INFO] [stdout] 366 + path [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:334:17 [INFO] [stdout] | [INFO] [stdout] 334 | ... !nei.is_recycler && nei.scrap > 0 && !(nei.is_recycler_near && nei.scrap <= distance(&start, &(*x1, *y1))) && !(nei.owner == Owner::ME && nei.units > tile.units) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!(nei.is_recycler || nei.scrap <= 0 || nei.is_recycler_near && nei.scrap <= distance(&start, &(*x1, *y1)) || nei.owner == Owner::ME && nei.units > tile.units)` [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/main.rs:417:9 [INFO] [stdout] | [INFO] [stdout] 417 | return path; [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] 417 - return path; [INFO] [stdout] 417 + path [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:384:17 [INFO] [stdout] | [INFO] [stdout] 384 | ... !nei.is_recycler && nei.scrap > 0 && !(nei.is_recycler_near && nei.scrap <= distance(&start, &(*x1, *y1))) && !(nei.owner == Owner::ME && nei.units > tile.units) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!(nei.is_recycler || nei.scrap <= 0 || nei.is_recycler_near && nei.scrap <= distance(&start, &(*x1, *y1)) || nei.owner == Owner::ME && nei.units > tile.units)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual checked division [INFO] [stdout] --> src/main.rs:524:20 [INFO] [stdout] | [INFO] [stdout] 524 | if path_count > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ check performed here [INFO] [stdout] ... [INFO] [stdout] 527 | let qty = unit.units / path_count + (i < unit.units % path_count) as usize; [INFO] [stdout] | ----------------------- division performed here [INFO] [stdout] | [INFO] [stdout] = help: consider using `checked_div` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_checked_ops [INFO] [stdout] = note: `#[warn(clippy::manual_checked_ops)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:165:21 [INFO] [stdout] | [INFO] [stdout] 165 | let mut tile = self.tiles[x].get_mut(y).unwrap(); [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `(to_spawn - tile.units)` is never smaller than `0` and has therefore no effect [INFO] [stdout] --> src/main.rs:646:54 [INFO] [stdout] | [INFO] [stdout] 646 | to_spawn = to_spawn.min(matter / 10).min((to_spawn - tile.units).max(0)).max(1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(to_spawn - tile.units)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_min_or_max [INFO] [stdout] = note: `#[warn(clippy::unnecessary_min_or_max)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `f64` is unnecessary [INFO] [stdout] --> src/main.rs:670:91 [INFO] [stdout] | [INFO] [stdout] 670 | actions.push(format!("MESSAGE Took {:.3} ms", (now.elapsed().as_micros() as f64 / 1000 as f64))); [INFO] [stdout] | ^^^^^^^^^^^ help: try: `1000_f64` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/main.rs:673:12 [INFO] [stdout] | [INFO] [stdout] 673 | if actions.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!actions.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `next_tile` [INFO] [stdout] --> src/main.rs:336:21 [INFO] [stdout] | [INFO] [stdout] 336 | let next_tile = &self.tiles[next.0][next.1]; [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_next_tile` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `turn` is assigned to, but never used [INFO] [stdout] --> src/main.rs:424:9 [INFO] [stdout] | [INFO] [stdout] 424 | let mut turn: usize = 0; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_turn` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bfs_nearest_neutral` [INFO] [stdout] --> src/main.rs:428:9 [INFO] [stdout] | [INFO] [stdout] 428 | let bfs_nearest_neutral = |tile: &Tile| tile.owner == Owner::NEUTRAL; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bfs_nearest_neutral` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bfs_nearest_enemy` [INFO] [stdout] --> src/main.rs:430:9 [INFO] [stdout] | [INFO] [stdout] 430 | let bfs_nearest_enemy = |tile: &Tile| tile.owner == Owner::OPP; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_bfs_nearest_enemy` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `turn` is never read [INFO] [stdout] --> src/main.rs:679:9 [INFO] [stdout] | [INFO] [stdout] 679 | turn += 1; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `bfs_to` is never used [INFO] [stdout] --> src/main.rs:320:8 [INFO] [stdout] | [INFO] [stdout] 89 | impl Game { [INFO] [stdout] | --------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 320 | fn bfs_to(&self, start: Position, end: Position) -> Vec { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `OPP` contains a capitalized acronym [INFO] [stdout] --> src/main.rs:19:5 [INFO] [stdout] | [INFO] [stdout] 19 | OPP = 0, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Opp` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `NEUTRAL` contains a capitalized acronym [INFO] [stdout] --> src/main.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | NEUTRAL = -1, [INFO] [stdout] | ^^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Neutral` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct implementation of `ToString` [INFO] [stdout] --> src/main.rs:23:1 [INFO] [stdout] | [INFO] [stdout] 23 | / impl ToString for Owner { [INFO] [stdout] 24 | | fn to_string(&self) -> String { [INFO] [stdout] 25 | | match self { [INFO] [stdout] 26 | | Owner::ME => ".".to_string(), [INFO] [stdout] ... | [INFO] [stdout] 31 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: prefer implementing `Display` instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_trait_impl [INFO] [stdout] = note: `#[warn(clippy::to_string_trait_impl)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `side_worth` [INFO] [stdout] --> src/main.rs:211:22 [INFO] [stdout] | [INFO] [stdout] 211 | for i in 0..side_worth.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 211 - for i in 0..side_worth.len() { [INFO] [stdout] 211 + for in &mut side_worth { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/main.rs:234:15 [INFO] [stdout] | [INFO] [stdout] 234 | while queue.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!queue.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/main.rs:243:92 [INFO] [stdout] | [INFO] [stdout] 243 | ... map.get(&(*x1, *y1)).map(|t| Some(t))).collect::>>(); [INFO] [stdout] | ^^^^^^^^^^^ help: replace the closure with the tuple variant itself: `Some` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/main.rs:245:16 [INFO] [stdout] | [INFO] [stdout] 245 | if tmp.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `tmp.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/main.rs:292:15 [INFO] [stdout] | [INFO] [stdout] 292 | while queue.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!queue.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:366:9 [INFO] [stdout] | [INFO] [stdout] 366 | return path; [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] 366 - return path; [INFO] [stdout] 366 + path [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:334:17 [INFO] [stdout] | [INFO] [stdout] 334 | ... !nei.is_recycler && nei.scrap > 0 && !(nei.is_recycler_near && nei.scrap <= distance(&start, &(*x1, *y1))) && !(nei.owner == Owner::ME && nei.units > tile.units) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!(nei.is_recycler || nei.scrap <= 0 || nei.is_recycler_near && nei.scrap <= distance(&start, &(*x1, *y1)) || nei.owner == Owner::ME && nei.units > tile.units)` [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/main.rs:417:9 [INFO] [stdout] | [INFO] [stdout] 417 | return path; [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] 417 - return path; [INFO] [stdout] 417 + path [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:384:17 [INFO] [stdout] | [INFO] [stdout] 384 | ... !nei.is_recycler && nei.scrap > 0 && !(nei.is_recycler_near && nei.scrap <= distance(&start, &(*x1, *y1))) && !(nei.owner == Owner::ME && nei.units > tile.units) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!(nei.is_recycler || nei.scrap <= 0 || nei.is_recycler_near && nei.scrap <= distance(&start, &(*x1, *y1)) || nei.owner == Owner::ME && nei.units > tile.units)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual checked division [INFO] [stdout] --> src/main.rs:524:20 [INFO] [stdout] | [INFO] [stdout] 524 | if path_count > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^ check performed here [INFO] [stdout] ... [INFO] [stdout] 527 | let qty = unit.units / path_count + (i < unit.units % path_count) as usize; [INFO] [stdout] | ----------------------- division performed here [INFO] [stdout] | [INFO] [stdout] = help: consider using `checked_div` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_checked_ops [INFO] [stdout] = note: `#[warn(clippy::manual_checked_ops)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `(to_spawn - tile.units)` is never smaller than `0` and has therefore no effect [INFO] [stdout] --> src/main.rs:646:54 [INFO] [stdout] | [INFO] [stdout] 646 | to_spawn = to_spawn.min(matter / 10).min((to_spawn - tile.units).max(0)).max(1); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(to_spawn - tile.units)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_min_or_max [INFO] [stdout] = note: `#[warn(clippy::unnecessary_min_or_max)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `f64` is unnecessary [INFO] [stdout] --> src/main.rs:670:91 [INFO] [stdout] | [INFO] [stdout] 670 | actions.push(format!("MESSAGE Took {:.3} ms", (now.elapsed().as_micros() as f64 / 1000 as f64))); [INFO] [stdout] | ^^^^^^^^^^^ help: try: `1000_f64` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/main.rs:673:12 [INFO] [stdout] | [INFO] [stdout] 673 | if actions.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!actions.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.85s [INFO] running `Command { std: "docker" "inspect" "bef7642de5ea23d0c6134a7eedbec8a51e48d39e2ed68b64a3a1c403241070c9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "bef7642de5ea23d0c6134a7eedbec8a51e48d39e2ed68b64a3a1c403241070c9", kill_on_drop: false }` [INFO] [stdout] bef7642de5ea23d0c6134a7eedbec8a51e48d39e2ed68b64a3a1c403241070c9