[INFO] cloning repository https://github.com/skarlman/Codingame-SpringChallenge-2021 [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/skarlman/Codingame-SpringChallenge-2021" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fskarlman%2FCodingame-SpringChallenge-2021", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fskarlman%2FCodingame-SpringChallenge-2021'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 314f6fc5dc7cfe9bfccb2d4dd69af384c9624bb1 [INFO] testing skarlman/Codingame-SpringChallenge-2021 against try#8de4c7234dd9b97c9d76b58671343fdbbc9a433e+target=x86_64-unknown-linux-musl for musl_upgrade_1_2_5_with_libc_patch_0 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fskarlman%2FCodingame-SpringChallenge-2021" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/skarlman/Codingame-SpringChallenge-2021 [INFO] finished tweaking git repo https://github.com/skarlman/Codingame-SpringChallenge-2021 [INFO] tweaked toml for git repo https://github.com/skarlman/Codingame-SpringChallenge-2021 written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/skarlman/Codingame-SpringChallenge-2021 on toolchain 8de4c7234dd9b97c9d76b58671343fdbbc9a433e [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/skarlman/Codingame-SpringChallenge-2021 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" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 7406baaf463522409b0eeb97b1c9fc4988d378587b0b0169a733a6f01c426975 [INFO] running `Command { std: "docker" "start" "-a" "7406baaf463522409b0eeb97b1c9fc4988d378587b0b0169a733a6f01c426975", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "7406baaf463522409b0eeb97b1c9fc4988d378587b0b0169a733a6f01c426975", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "7406baaf463522409b0eeb97b1c9fc4988d378587b0b0169a733a6f01c426975", kill_on_drop: false }` [INFO] [stdout] 7406baaf463522409b0eeb97b1c9fc4988d378587b0b0169a733a6f01c426975 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "build" "--frozen" "--message-format=json" "--target" "x86_64-unknown-linux-musl", kill_on_drop: false }` [INFO] [stdout] 5e429519e64dc6b0e6e8548a6f1b3d666067a15ebc06f2173a7aaaa300b9d33e [INFO] running `Command { std: "docker" "start" "-a" "5e429519e64dc6b0e6e8548a6f1b3d666067a15ebc06f2173a7aaaa300b9d33e", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.94 [INFO] [stderr] Compiling getrandom v0.2.2 [INFO] [stderr] Compiling rand_core v0.6.2 [INFO] [stderr] Compiling rand_chacha v0.3.0 [INFO] [stderr] Compiling rand v0.8.3 [INFO] [stderr] Compiling rustbot v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::panic::resume_unwind` [INFO] [stdout] --> src/main.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::panic::resume_unwind; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Duration` [INFO] [stdout] --> src/main.rs:7:17 [INFO] [stdout] | [INFO] [stdout] 7 | use std::time::{Duration, Instant}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::arch::x86_64::_mm_sha1rnds4_epu32` [INFO] [stdout] --> src/main.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use std::arch::x86_64::_mm_sha1rnds4_epu32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/main.rs:422:12 [INFO] [stdout] | [INFO] [stdout] 422 | if (current_sun_balance[player] < 4 || possible_choices.len() == 0) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 422 - if (current_sun_balance[player] < 4 || possible_choices.len() == 0) { [INFO] [stdout] 422 + if current_sun_balance[player] < 4 || possible_choices.len() == 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/main.rs:516:36 [INFO] [stdout] | [INFO] [stdout] 516 | shadow_cost += (match board.get(&cell_index).unwrap().richness { [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 520 | }); [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 516 ~ shadow_cost += match board.get(&cell_index).unwrap().richness { [INFO] [stdout] 517 | 2 => nutrients + 2, [INFO] [stdout] 518 | 3 => nutrients + 4, [INFO] [stdout] 519 | _ => nutrients [INFO] [stdout] 520 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/main.rs:65:17 [INFO] [stdout] | [INFO] [stdout] 64 | panic!("Wrong action input"); [INFO] [stdout] | ---------------------------- any code following this expression is unreachable [INFO] [stdout] 65 | Action::Wait [INFO] [stdout] | ^^^^^^^^^^^^ unreachable expression [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/main.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 32 | for i in 0..number_of_trees as usize { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/main.rs:105:9 [INFO] [stdout] | [INFO] [stdout] 105 | for i in 0..number_of_possible_actions as usize { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/main.rs:161:9 [INFO] [stdout] | [INFO] [stdout] 161 | for i in 0..number_of_cells as usize { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `neigh_0` [INFO] [stdout] --> src/main.rs:168:13 [INFO] [stdout] | [INFO] [stdout] 168 | let neigh_0 = parse_input!(inputs[2], i32); // the index of the neighbouring cell for each direction [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_0` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `neigh_1` [INFO] [stdout] --> src/main.rs:169:13 [INFO] [stdout] | [INFO] [stdout] 169 | let neigh_1 = parse_input!(inputs[3], i32); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `neigh_2` [INFO] [stdout] --> src/main.rs:170:13 [INFO] [stdout] | [INFO] [stdout] 170 | let neigh_2 = parse_input!(inputs[4], i32); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `neigh_3` [INFO] [stdout] --> src/main.rs:171:13 [INFO] [stdout] | [INFO] [stdout] 171 | let neigh_3 = parse_input!(inputs[5], i32); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_3` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `neigh_4` [INFO] [stdout] --> src/main.rs:172:13 [INFO] [stdout] | [INFO] [stdout] 172 | let neigh_4 = parse_input!(inputs[6], i32); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_4` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `neigh_5` [INFO] [stdout] --> src/main.rs:173:13 [INFO] [stdout] | [INFO] [stdout] 173 | let neigh_5 = parse_input!(inputs[7], i32); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_5` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `previous_action` [INFO] [stdout] --> src/main.rs:189:13 [INFO] [stdout] | [INFO] [stdout] 189 | let mut previous_action = Action::Null; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_previous_action` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `is_new_day` is assigned to, but never used [INFO] [stdout] --> src/main.rs:192:13 [INFO] [stdout] | [INFO] [stdout] 192 | let mut is_new_day = false; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_is_new_day` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `is_new_day` is never read [INFO] [stdout] --> src/main.rs:200:13 [INFO] [stdout] | [INFO] [stdout] 200 | is_new_day = true; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:189:9 [INFO] [stdout] | [INFO] [stdout] 189 | let mut previous_action = Action::Null; [INFO] [stdout] | ----^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `i` is assigned to, but never used [INFO] [stdout] --> src/main.rs:242:17 [INFO] [stdout] | [INFO] [stdout] 242 | let mut i = 0; [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_i` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ak` [INFO] [stdout] --> src/main.rs:332:23 [INFO] [stdout] | [INFO] [stdout] 332 | .max_by(|(ak, (a_count, a_score)), (bk, (b_count, b_score))| a_score.partial_cmp(&b_score).unwrap()) [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_ak` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `a_count` [INFO] [stdout] --> src/main.rs:332:28 [INFO] [stdout] | [INFO] [stdout] 332 | .max_by(|(ak, (a_count, a_score)), (bk, (b_count, b_score))| a_score.partial_cmp(&b_score).unwrap()) [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_a_count` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bk` [INFO] [stdout] --> src/main.rs:332:49 [INFO] [stdout] | [INFO] [stdout] 332 | .max_by(|(ak, (a_count, a_score)), (bk, (b_count, b_score))| a_score.partial_cmp(&b_score).unwrap()) [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_bk` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `b_count` [INFO] [stdout] --> src/main.rs:332:54 [INFO] [stdout] | [INFO] [stdout] 332 | .max_by(|(ak, (a_count, a_score)), (bk, (b_count, b_score))| a_score.partial_cmp(&b_score).unwrap()) [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_b_count` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:222:45 [INFO] [stdout] | [INFO] [stdout] 222 | fn playout_moves(context: &GameContext, mut forest: &mut Forest, board: &Area, expected_actions: &ActionList) -> (String, f64, i32, i... [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `k` [INFO] [stdout] --> src/main.rs:497:26 [INFO] [stdout] | [INFO] [stdout] 497 | for (k, t) in trees { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_k` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `expected_actions` [INFO] [stdout] --> src/main.rs:338:298 [INFO] [stdout] | [INFO] [stdout] 338 | ...g: &mut ThreadRng, expected_actions: &ActionList) -> ([i32; 2], [i32; 2], i32, Action, GameContext, [[i32; 4]; 2], [bool; 2]) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expected_actions` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `origin_id` [INFO] [stdout] --> src/main.rs:531:37 [INFO] [stdout] | [INFO] [stdout] 531 | Action::Seed(target_id, origin_id) => { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_origin_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `x` [INFO] [stdout] --> src/main.rs:532:109 [INFO] [stdout] | [INFO] [stdout] 532 | let n:i32 = board[target_id].neighbors_ids.iter().filter(|id| !trees.contains_key(id)).map(|x| 1).sum(); [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_x` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `visited` [INFO] [stdout] --> src/main.rs:588:17 [INFO] [stdout] | [INFO] [stdout] 588 | let mut visited: HashSet = HashSet::new(); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_visited` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:588:13 [INFO] [stdout] | [INFO] [stdout] 588 | let mut visited: HashSet = HashSet::new(); [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/main.rs:639:23 [INFO] [stdout] | [INFO] [stdout] 639 | .filter(|(id, tree)| (tree.is_mine && player == 0 || !tree.is_mine && player == 1) && !tree.is_dormant && tree.size == 3) [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/main.rs:640:20 [INFO] [stdout] | [INFO] [stdout] 640 | .map(|(id, tree)| Action::Complete(tree.cell_index)) [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/main.rs:667:23 [INFO] [stdout] | [INFO] [stdout] 667 | ... .filter(|(id, tree)| (tree.is_mine && player == 0 || !tree.is_mine && player == 1) && !tree.is_dormant && tree.size < 3 && tree_cos... [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:649:13 [INFO] [stdout] | [INFO] [stdout] 649 | let mut tree_costs = [0 + my_trees_counts[0], 1 + my_trees_counts[1], 3 + my_trees_counts[2], 7 + my_trees_counts[3]]; [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/main.rs:710:27 [INFO] [stdout] | [INFO] [stdout] 710 | .filter(|(id, tree)| (tree.is_mine && player == 0 || !tree.is_mine && player == 1) && tree.size > 0) [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/main.rs:711:24 [INFO] [stdout] | [INFO] [stdout] 711 | .map(|(id, tree)| get_sun_points_from_tree(&tree, &board, &trees, sun_direction)).sum(); [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `op_is_waiting` is never read [INFO] [stdout] --> src/main.rs:122:5 [INFO] [stdout] | [INFO] [stdout] 115 | struct GameContext { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 122 | op_is_waiting: bool, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `GameContext` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `index` is never read [INFO] [stdout] --> src/main.rs:148:5 [INFO] [stdout] | [INFO] [stdout] 147 | struct Cell { [INFO] [stdout] | ---- field in this struct [INFO] [stdout] 148 | index: i32, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.10s [INFO] running `Command { std: "docker" "inspect" "5e429519e64dc6b0e6e8548a6f1b3d666067a15ebc06f2173a7aaaa300b9d33e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "5e429519e64dc6b0e6e8548a6f1b3d666067a15ebc06f2173a7aaaa300b9d33e", kill_on_drop: false }` [INFO] [stdout] 5e429519e64dc6b0e6e8548a6f1b3d666067a15ebc06f2173a7aaaa300b9d33e [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "test" "--frozen" "--no-run" "--message-format=json" "--target" "x86_64-unknown-linux-musl", kill_on_drop: false }` [INFO] [stdout] aa98b72c09573dbb6264c1f464e2541d877c2984df5eb03ffbd6505d98573663 [INFO] running `Command { std: "docker" "start" "-a" "aa98b72c09573dbb6264c1f464e2541d877c2984df5eb03ffbd6505d98573663", kill_on_drop: false }` [INFO] [stderr] Compiling rustbot v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::panic::resume_unwind` [INFO] [stdout] --> src/main.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::panic::resume_unwind; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Duration` [INFO] [stdout] --> src/main.rs:7:17 [INFO] [stdout] | [INFO] [stdout] 7 | use std::time::{Duration, Instant}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::arch::x86_64::_mm_sha1rnds4_epu32` [INFO] [stdout] --> src/main.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use std::arch::x86_64::_mm_sha1rnds4_epu32; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around `if` condition [INFO] [stdout] --> src/main.rs:422:12 [INFO] [stdout] | [INFO] [stdout] 422 | if (current_sun_balance[player] < 4 || possible_choices.len() == 0) { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 422 - if (current_sun_balance[player] < 4 || possible_choices.len() == 0) { [INFO] [stdout] 422 + if current_sun_balance[player] < 4 || possible_choices.len() == 0 { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> src/main.rs:516:36 [INFO] [stdout] | [INFO] [stdout] 516 | shadow_cost += (match board.get(&cell_index).unwrap().richness { [INFO] [stdout] | ^ [INFO] [stdout] ... [INFO] [stdout] 520 | }); [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 516 ~ shadow_cost += match board.get(&cell_index).unwrap().richness { [INFO] [stdout] 517 | 2 => nutrients + 2, [INFO] [stdout] 518 | 3 => nutrients + 4, [INFO] [stdout] 519 | _ => nutrients [INFO] [stdout] 520 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unreachable expression [INFO] [stdout] --> src/main.rs:65:17 [INFO] [stdout] | [INFO] [stdout] 64 | panic!("Wrong action input"); [INFO] [stdout] | ---------------------------- any code following this expression is unreachable [INFO] [stdout] 65 | Action::Wait [INFO] [stdout] | ^^^^^^^^^^^^ unreachable expression [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unreachable_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/main.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 32 | for i in 0..number_of_trees as usize { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/main.rs:105:9 [INFO] [stdout] | [INFO] [stdout] 105 | for i in 0..number_of_possible_actions as usize { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> src/main.rs:161:9 [INFO] [stdout] | [INFO] [stdout] 161 | for i in 0..number_of_cells as usize { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `neigh_0` [INFO] [stdout] --> src/main.rs:168:13 [INFO] [stdout] | [INFO] [stdout] 168 | let neigh_0 = parse_input!(inputs[2], i32); // the index of the neighbouring cell for each direction [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_0` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `neigh_1` [INFO] [stdout] --> src/main.rs:169:13 [INFO] [stdout] | [INFO] [stdout] 169 | let neigh_1 = parse_input!(inputs[3], i32); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `neigh_2` [INFO] [stdout] --> src/main.rs:170:13 [INFO] [stdout] | [INFO] [stdout] 170 | let neigh_2 = parse_input!(inputs[4], i32); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_2` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `neigh_3` [INFO] [stdout] --> src/main.rs:171:13 [INFO] [stdout] | [INFO] [stdout] 171 | let neigh_3 = parse_input!(inputs[5], i32); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_3` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `neigh_4` [INFO] [stdout] --> src/main.rs:172:13 [INFO] [stdout] | [INFO] [stdout] 172 | let neigh_4 = parse_input!(inputs[6], i32); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_4` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `neigh_5` [INFO] [stdout] --> src/main.rs:173:13 [INFO] [stdout] | [INFO] [stdout] 173 | let neigh_5 = parse_input!(inputs[7], i32); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_5` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `previous_action` [INFO] [stdout] --> src/main.rs:189:13 [INFO] [stdout] | [INFO] [stdout] 189 | let mut previous_action = Action::Null; [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_previous_action` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `is_new_day` is assigned to, but never used [INFO] [stdout] --> src/main.rs:192:13 [INFO] [stdout] | [INFO] [stdout] 192 | let mut is_new_day = false; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_is_new_day` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `is_new_day` is never read [INFO] [stdout] --> src/main.rs:200:13 [INFO] [stdout] | [INFO] [stdout] 200 | is_new_day = true; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] = note: `#[warn(unused_assignments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:189:9 [INFO] [stdout] | [INFO] [stdout] 189 | let mut previous_action = Action::Null; [INFO] [stdout] | ----^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable `i` is assigned to, but never used [INFO] [stdout] --> src/main.rs:242:17 [INFO] [stdout] | [INFO] [stdout] 242 | let mut i = 0; [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = note: consider using `_i` instead [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `ak` [INFO] [stdout] --> src/main.rs:332:23 [INFO] [stdout] | [INFO] [stdout] 332 | .max_by(|(ak, (a_count, a_score)), (bk, (b_count, b_score))| a_score.partial_cmp(&b_score).unwrap()) [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_ak` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `a_count` [INFO] [stdout] --> src/main.rs:332:28 [INFO] [stdout] | [INFO] [stdout] 332 | .max_by(|(ak, (a_count, a_score)), (bk, (b_count, b_score))| a_score.partial_cmp(&b_score).unwrap()) [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_a_count` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `bk` [INFO] [stdout] --> src/main.rs:332:49 [INFO] [stdout] | [INFO] [stdout] 332 | .max_by(|(ak, (a_count, a_score)), (bk, (b_count, b_score))| a_score.partial_cmp(&b_score).unwrap()) [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_bk` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `b_count` [INFO] [stdout] --> src/main.rs:332:54 [INFO] [stdout] | [INFO] [stdout] 332 | .max_by(|(ak, (a_count, a_score)), (bk, (b_count, b_score))| a_score.partial_cmp(&b_score).unwrap()) [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_b_count` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:222:45 [INFO] [stdout] | [INFO] [stdout] 222 | fn playout_moves(context: &GameContext, mut forest: &mut Forest, board: &Area, expected_actions: &ActionList) -> (String, f64, i32, i... [INFO] [stdout] | ----^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `k` [INFO] [stdout] --> src/main.rs:497:26 [INFO] [stdout] | [INFO] [stdout] 497 | for (k, t) in trees { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_k` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `expected_actions` [INFO] [stdout] --> src/main.rs:338:298 [INFO] [stdout] | [INFO] [stdout] 338 | ...g: &mut ThreadRng, expected_actions: &ActionList) -> ([i32; 2], [i32; 2], i32, Action, GameContext, [[i32; 4]; 2], [bool; 2]) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expected_actions` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `origin_id` [INFO] [stdout] --> src/main.rs:531:37 [INFO] [stdout] | [INFO] [stdout] 531 | Action::Seed(target_id, origin_id) => { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_origin_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `x` [INFO] [stdout] --> src/main.rs:532:109 [INFO] [stdout] | [INFO] [stdout] 532 | let n:i32 = board[target_id].neighbors_ids.iter().filter(|id| !trees.contains_key(id)).map(|x| 1).sum(); [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_x` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `visited` [INFO] [stdout] --> src/main.rs:588:17 [INFO] [stdout] | [INFO] [stdout] 588 | let mut visited: HashSet = HashSet::new(); [INFO] [stdout] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_visited` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:588:13 [INFO] [stdout] | [INFO] [stdout] 588 | let mut visited: HashSet = HashSet::new(); [INFO] [stdout] | ----^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/main.rs:639:23 [INFO] [stdout] | [INFO] [stdout] 639 | .filter(|(id, tree)| (tree.is_mine && player == 0 || !tree.is_mine && player == 1) && !tree.is_dormant && tree.size == 3) [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/main.rs:640:20 [INFO] [stdout] | [INFO] [stdout] 640 | .map(|(id, tree)| Action::Complete(tree.cell_index)) [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/main.rs:667:23 [INFO] [stdout] | [INFO] [stdout] 667 | ... .filter(|(id, tree)| (tree.is_mine && player == 0 || !tree.is_mine && player == 1) && !tree.is_dormant && tree.size < 3 && tree_cos... [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> src/main.rs:649:13 [INFO] [stdout] | [INFO] [stdout] 649 | let mut tree_costs = [0 + my_trees_counts[0], 1 + my_trees_counts[1], 3 + my_trees_counts[2], 7 + my_trees_counts[3]]; [INFO] [stdout] | ----^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/main.rs:710:27 [INFO] [stdout] | [INFO] [stdout] 710 | .filter(|(id, tree)| (tree.is_mine && player == 0 || !tree.is_mine && player == 1) && tree.size > 0) [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `id` [INFO] [stdout] --> src/main.rs:711:24 [INFO] [stdout] | [INFO] [stdout] 711 | .map(|(id, tree)| get_sun_points_from_tree(&tree, &board, &trees, sun_direction)).sum(); [INFO] [stdout] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `op_is_waiting` is never read [INFO] [stdout] --> src/main.rs:122:5 [INFO] [stdout] | [INFO] [stdout] 115 | struct GameContext { [INFO] [stdout] | ----------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 122 | op_is_waiting: bool, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `GameContext` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `index` is never read [INFO] [stdout] --> src/main.rs:148:5 [INFO] [stdout] | [INFO] [stdout] 147 | struct Cell { [INFO] [stdout] | ---- field in this struct [INFO] [stdout] 148 | index: i32, [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.52s [INFO] running `Command { std: "docker" "inspect" "aa98b72c09573dbb6264c1f464e2541d877c2984df5eb03ffbd6505d98573663", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "aa98b72c09573dbb6264c1f464e2541d877c2984df5eb03ffbd6505d98573663", kill_on_drop: false }` [INFO] [stdout] aa98b72c09573dbb6264c1f464e2541d877c2984df5eb03ffbd6505d98573663 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8de4c7234dd9b97c9d76b58671343fdbbc9a433e" "test" "--frozen" "--target" "x86_64-unknown-linux-musl", kill_on_drop: false }` [INFO] [stdout] b8f06aeba314b831c805e3d589612ece13ab9d4eeabdd15398cae4b0540ad2a6 [INFO] running `Command { std: "docker" "start" "-a" "b8f06aeba314b831c805e3d589612ece13ab9d4eeabdd15398cae4b0540ad2a6", kill_on_drop: false }` [INFO] [stderr] warning: unused import: `std::panic::resume_unwind` [INFO] [stderr] --> src/main.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::panic::resume_unwind; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Duration` [INFO] [stderr] --> src/main.rs:7:17 [INFO] [stderr] | [INFO] [stderr] 7 | use std::time::{Duration, Instant}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::arch::x86_64::_mm_sha1rnds4_epu32` [INFO] [stderr] --> src/main.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use std::arch::x86_64::_mm_sha1rnds4_epu32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:422:12 [INFO] [stderr] | [INFO] [stderr] 422 | if (current_sun_balance[player] < 4 || possible_choices.len() == 0) { [INFO] [stderr] | ^ ^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_parens)]` on by default [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 422 - if (current_sun_balance[player] < 4 || possible_choices.len() == 0) { [INFO] [stderr] 422 + if current_sun_balance[player] < 4 || possible_choices.len() == 0 { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around assigned value [INFO] [stderr] --> src/main.rs:516:36 [INFO] [stderr] | [INFO] [stderr] 516 | shadow_cost += (match board.get(&cell_index).unwrap().richness { [INFO] [stderr] | ^ [INFO] [stderr] ... [INFO] [stderr] 520 | }); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 516 ~ shadow_cost += match board.get(&cell_index).unwrap().richness { [INFO] [stderr] 517 | 2 => nutrients + 2, [INFO] [stderr] 518 | 3 => nutrients + 4, [INFO] [stderr] 519 | _ => nutrients [INFO] [stderr] 520 ~ }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> src/main.rs:65:17 [INFO] [stderr] | [INFO] [stderr] 64 | panic!("Wrong action input"); [INFO] [stderr] | ---------------------------- any code following this expression is unreachable [INFO] [stderr] 65 | Action::Wait [INFO] [stderr] | ^^^^^^^^^^^^ unreachable expression [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unreachable_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/main.rs:32:9 [INFO] [stderr] | [INFO] [stderr] 32 | for i in 0..number_of_trees as usize { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/main.rs:105:9 [INFO] [stderr] | [INFO] [stderr] 105 | for i in 0..number_of_possible_actions as usize { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> src/main.rs:161:9 [INFO] [stderr] | [INFO] [stderr] 161 | for i in 0..number_of_cells as usize { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `neigh_0` [INFO] [stderr] --> src/main.rs:168:13 [INFO] [stderr] | [INFO] [stderr] 168 | let neigh_0 = parse_input!(inputs[2], i32); // the index of the neighbouring cell for each direction [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_0` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `neigh_1` [INFO] [stderr] --> src/main.rs:169:13 [INFO] [stderr] | [INFO] [stderr] 169 | let neigh_1 = parse_input!(inputs[3], i32); [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_1` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `neigh_2` [INFO] [stderr] --> src/main.rs:170:13 [INFO] [stderr] | [INFO] [stderr] 170 | let neigh_2 = parse_input!(inputs[4], i32); [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_2` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `neigh_3` [INFO] [stderr] --> src/main.rs:171:13 [INFO] [stderr] | [INFO] [stderr] 171 | let neigh_3 = parse_input!(inputs[5], i32); [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_3` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `neigh_4` [INFO] [stderr] --> src/main.rs:172:13 [INFO] [stderr] | [INFO] [stderr] 172 | let neigh_4 = parse_input!(inputs[6], i32); [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_4` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `neigh_5` [INFO] [stderr] --> src/main.rs:173:13 [INFO] [stderr] | [INFO] [stderr] 173 | let neigh_5 = parse_input!(inputs[7], i32); [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neigh_5` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `previous_action` [INFO] [stderr] --> src/main.rs:189:13 [INFO] [stderr] | [INFO] [stderr] 189 | let mut previous_action = Action::Null; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_previous_action` [INFO] [stderr] [INFO] [stderr] warning: variable `is_new_day` is assigned to, but never used [INFO] [stderr] --> src/main.rs:192:13 [INFO] [stderr] | [INFO] [stderr] 192 | let mut is_new_day = false; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_is_new_day` instead [INFO] [stderr] [INFO] [stderr] warning: value assigned to `is_new_day` is never read [INFO] [stderr] --> src/main.rs:200:13 [INFO] [stderr] | [INFO] [stderr] 200 | is_new_day = true; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: maybe it is overwritten before being read? [INFO] [stderr] = note: `#[warn(unused_assignments)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:189:9 [INFO] [stderr] | [INFO] [stderr] 189 | let mut previous_action = Action::Null; [INFO] [stderr] | ----^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` on by default [INFO] [stderr] [INFO] [stderr] warning: variable `i` is assigned to, but never used [INFO] [stderr] --> src/main.rs:242:17 [INFO] [stderr] | [INFO] [stderr] 242 | let mut i = 0; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: consider using `_i` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `ak` [INFO] [stderr] --> src/main.rs:332:23 [INFO] [stderr] | [INFO] [stderr] 332 | .max_by(|(ak, (a_count, a_score)), (bk, (b_count, b_score))| a_score.partial_cmp(&b_score).unwrap()) [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_ak` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `a_count` [INFO] [stderr] --> src/main.rs:332:28 [INFO] [stderr] | [INFO] [stderr] 332 | .max_by(|(ak, (a_count, a_score)), (bk, (b_count, b_score))| a_score.partial_cmp(&b_score).unwrap()) [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_a_count` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `bk` [INFO] [stderr] --> src/main.rs:332:49 [INFO] [stderr] | [INFO] [stderr] 332 | .max_by(|(ak, (a_count, a_score)), (bk, (b_count, b_score))| a_score.partial_cmp(&b_score).unwrap()) [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_bk` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `b_count` [INFO] [stderr] --> src/main.rs:332:54 [INFO] [stderr] | [INFO] [stderr] 332 | .max_by(|(ak, (a_count, a_score)), (bk, (b_count, b_score))| a_score.partial_cmp(&b_score).unwrap()) [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_b_count` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:222:45 [INFO] [stderr] | [INFO] [stderr] 222 | fn playout_moves(context: &GameContext, mut forest: &mut Forest, board: &Area, expected_actions: &ActionList) -> (String, f64, i32, i... [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `k` [INFO] [stderr] --> src/main.rs:497:26 [INFO] [stderr] | [INFO] [stderr] 497 | for (k, t) in trees { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_k` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `expected_actions` [INFO] [stderr] --> src/main.rs:338:298 [INFO] [stderr] | [INFO] [stderr] 338 | ...g: &mut ThreadRng, expected_actions: &ActionList) -> ([i32; 2], [i32; 2], i32, Action, GameContext, [[i32; 4]; 2], [bool; 2]) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expected_actions` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `origin_id` [INFO] [stderr] --> src/main.rs:531:37 [INFO] [stderr] | [INFO] [stderr] 531 | Action::Seed(target_id, origin_id) => { [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_origin_id` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `x` [INFO] [stderr] --> src/main.rs:532:109 [INFO] [stderr] | [INFO] [stderr] 532 | let n:i32 = board[target_id].neighbors_ids.iter().filter(|id| !trees.contains_key(id)).map(|x| 1).sum(); [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_x` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `visited` [INFO] [stderr] --> src/main.rs:588:17 [INFO] [stderr] | [INFO] [stderr] 588 | let mut visited: HashSet = HashSet::new(); [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_visited` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:588:13 [INFO] [stderr] | [INFO] [stderr] 588 | let mut visited: HashSet = HashSet::new(); [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `id` [INFO] [stderr] --> src/main.rs:639:23 [INFO] [stderr] | [INFO] [stderr] 639 | .filter(|(id, tree)| (tree.is_mine && player == 0 || !tree.is_mine && player == 1) && !tree.is_dormant && tree.size == 3) [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `id` [INFO] [stderr] --> src/main.rs:640:20 [INFO] [stderr] | [INFO] [stderr] 640 | .map(|(id, tree)| Action::Complete(tree.cell_index)) [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `id` [INFO] [stderr] --> src/main.rs:667:23 [INFO] [stderr] | [INFO] [stderr] 667 | ... .filter(|(id, tree)| (tree.is_mine && player == 0 || !tree.is_mine && player == 1) && !tree.is_dormant && tree.size < 3 && tree_cos... [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:649:13 [INFO] [stderr] | [INFO] [stderr] 649 | let mut tree_costs = [0 + my_trees_counts[0], 1 + my_trees_counts[1], 3 + my_trees_counts[2], 7 + my_trees_counts[3]]; [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `id` [INFO] [stderr] --> src/main.rs:710:27 [INFO] [stderr] | [INFO] [stderr] 710 | .filter(|(id, tree)| (tree.is_mine && player == 0 || !tree.is_mine && player == 1) && tree.size > 0) [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `id` [INFO] [stderr] --> src/main.rs:711:24 [INFO] [stderr] | [INFO] [stderr] 711 | .map(|(id, tree)| get_sun_points_from_tree(&tree, &board, &trees, sun_direction)).sum(); [INFO] [stderr] | ^^ help: if this is intentional, prefix it with an underscore: `_id` [INFO] [stderr] [INFO] [stderr] warning: field `op_is_waiting` is never read [INFO] [stderr] --> src/main.rs:122:5 [INFO] [stderr] | [INFO] [stderr] 115 | struct GameContext { [INFO] [stderr] | ----------- field in this struct [INFO] [stderr] ... [INFO] [stderr] 122 | op_is_waiting: bool, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `GameContext` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis [INFO] [stderr] = note: `#[warn(dead_code)]` on by default [INFO] [stderr] [INFO] [stderr] warning: field `index` is never read [INFO] [stderr] --> src/main.rs:148:5 [INFO] [stderr] | [INFO] [stderr] 147 | struct Cell { [INFO] [stderr] | ---- field in this struct [INFO] [stderr] 148 | index: i32, [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `rustbot` (bin "rustbot" test) generated 39 warnings (run `cargo fix --bin "rustbot" --tests` to apply 9 suggestions) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.05s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/x86_64-unknown-linux-musl/debug/deps/rustbot-6a05f6de940597cb) [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "b8f06aeba314b831c805e3d589612ece13ab9d4eeabdd15398cae4b0540ad2a6", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "b8f06aeba314b831c805e3d589612ece13ab9d4eeabdd15398cae4b0540ad2a6", kill_on_drop: false }` [INFO] [stdout] b8f06aeba314b831c805e3d589612ece13ab9d4eeabdd15398cae4b0540ad2a6