[INFO] cloning repository https://github.com/daffyd-jones/rust_dungeon
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/daffyd-jones/rust_dungeon" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdaffyd-jones%2Frust_dungeon", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdaffyd-jones%2Frust_dungeon'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 97c4847369793caf29395baad9070c0a7983d7e0
[INFO] checking daffyd-jones/rust_dungeon against try#ce3348c21531b911ca5aadbbbe7ad63a1bc4c382 for pr-149596
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdaffyd-jones%2Frust_dungeon" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/daffyd-jones/rust_dungeon
[INFO] finished tweaking git repo https://github.com/daffyd-jones/rust_dungeon
[INFO] tweaked toml for git repo https://github.com/daffyd-jones/rust_dungeon written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/daffyd-jones/rust_dungeon on toolchain ce3348c21531b911ca5aadbbbe7ad63a1bc4c382
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ce3348c21531b911ca5aadbbbe7ad63a1bc4c382" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/daffyd-jones/rust_dungeon 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" "+ce3348c21531b911ca5aadbbbe7ad63a1bc4c382" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/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:94a0c148923f5b2b52a63ef0eeb1882ad339ab61bce784c8077cbe41c61feb6c" "/opt/rustwide/cargo-home/bin/cargo" "+ce3348c21531b911ca5aadbbbe7ad63a1bc4c382" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 22849ac16a7faf75fea9f288debc2103b894d9480606f7a6ff5f4fd4bbedbc99
[INFO] running `Command { std: "docker" "start" "-a" "22849ac16a7faf75fea9f288debc2103b894d9480606f7a6ff5f4fd4bbedbc99", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "22849ac16a7faf75fea9f288debc2103b894d9480606f7a6ff5f4fd4bbedbc99", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "22849ac16a7faf75fea9f288debc2103b894d9480606f7a6ff5f4fd4bbedbc99", kill_on_drop: false }`
[INFO] [stdout] 22849ac16a7faf75fea9f288debc2103b894d9480606f7a6ff5f4fd4bbedbc99
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/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:94a0c148923f5b2b52a63ef0eeb1882ad339ab61bce784c8077cbe41c61feb6c" "/opt/rustwide/cargo-home/bin/cargo" "+ce3348c21531b911ca5aadbbbe7ad63a1bc4c382" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] c5c9edd2984ccfe3eea57504147a4fd22d571de5efd6bd9901ab8b58f86191aa
[INFO] running `Command { std: "docker" "start" "-a" "c5c9edd2984ccfe3eea57504147a4fd22d571de5efd6bd9901ab8b58f86191aa", kill_on_drop: false }`
[INFO] [stderr]    Compiling version_check v0.9.4
[INFO] [stderr]    Compiling typenum v1.18.0
[INFO] [stderr]    Compiling libc v0.2.155
[INFO] [stderr]    Compiling proc-macro2 v1.0.85
[INFO] [stderr]    Compiling unicode-ident v1.0.12
[INFO] [stderr]    Compiling rustversion v1.0.17
[INFO] [stderr]    Compiling autocfg v1.3.0
[INFO] [stderr]    Compiling signal-hook v0.3.17
[INFO] [stderr]     Checking smallvec v1.13.2
[INFO] [stderr]    Compiling cfg-if v1.0.0
[INFO] [stderr]     Checking once_cell v1.19.0
[INFO] [stderr]     Checking log v0.4.21
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]     Checking zerocopy v0.7.34
[INFO] [stderr]     Checking either v1.12.0
[INFO] [stderr]    Compiling rustix v0.38.34
[INFO] [stderr]     Checking itoa v1.0.11
[INFO] [stderr]     Checking ryu v1.0.18
[INFO] [stderr]     Checking bitflags v2.5.0
[INFO] [stderr]     Checking allocator-api2 v0.2.18
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling ahash v0.8.11
[INFO] [stderr]    Compiling paste v1.0.15
[INFO] [stderr]    Compiling lock_api v0.4.12
[INFO] [stderr]    Compiling serde v1.0.208
[INFO] [stderr]     Checking linux-raw-sys v0.4.14
[INFO] [stderr]     Checking itertools v0.12.1
[INFO] [stderr]     Checking deranged v0.3.11
[INFO] [stderr]     Checking num_threads v0.1.7
[INFO] [stderr]     Checking ppv-lite86 v0.2.17
[INFO] [stderr]     Checking unicode-width v0.1.13
[INFO] [stderr]    Compiling serde_json v1.0.127
[INFO] [stderr]     Checking time-core v0.1.2
[INFO] [stderr]     Checking itertools v0.13.0
[INFO] [stderr]     Checking unicode-segmentation v1.11.0
[INFO] [stderr]     Checking cassowary v0.3.0
[INFO] [stderr]     Checking memchr v2.7.4
[INFO] [stderr]     Checking signal-hook-registry v1.4.2
[INFO] [stderr]     Checking getrandom v0.2.15
[INFO] [stderr]    Compiling quote v1.0.36
[INFO] [stderr]     Checking parking_lot_core v0.9.10
[INFO] [stderr]     Checking mio v1.0.2
[INFO] [stderr]     Checking parking_lot v0.12.3
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking time v0.3.36
[INFO] [stderr]     Checking lazy_static v1.4.0
[INFO] [stderr]     Checking castaway v0.2.3
[INFO] [stderr]    Compiling syn v2.0.66
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking compact_str v0.8.0
[INFO] [stderr]     Checking signal-hook-mio v0.2.4
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking lru v0.12.3
[INFO] [stderr]     Checking crossterm v0.28.1
[INFO] [stderr]    Compiling block-buffer v0.10.4
[INFO] [stderr]    Compiling crypto-common v0.1.6
[INFO] [stderr]     Checking unicode-truncate v1.0.0
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking rust-embed-utils v8.7.2
[INFO] [stderr]    Compiling strum_macros v0.26.3
[INFO] [stderr]    Compiling serde_derive v1.0.208
[INFO] [stderr]    Compiling instability v0.3.2
[INFO] [stderr]    Compiling rust-embed-impl v8.7.2
[INFO] [stderr]     Checking rust-embed v8.7.2
[INFO] [stderr]     Checking strum v0.26.2
[INFO] [stderr]     Checking ratatui v0.28.0
[INFO] [stderr]     Checking dungeon v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `ratatui::text::ToLine`
[INFO] [stdout]  --> src/assets.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use ratatui::text::ToLine;
[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: `rand::Rng`
[INFO] [stdout]   --> src/assets.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use rand::Rng;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::StreamDeserializer`
[INFO] [stdout]   --> src/assets.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use serde_json::StreamDeserializer;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::enums::Cells`
[INFO] [stdout]  --> src/enemy.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::enums::Cells;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TaskNPC`
[INFO] [stdout]  --> src/enums.rs:5:64
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::npc::{BaseNPC, CommNPC, ConvNPC, ShopNPC, SpawnNPC, TaskNPC, TradeNPC};
[INFO] [stdout]   |                                                                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Door` and `Items`
[INFO] [stdout]  --> src/features.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::enums::{Cells, Door, EnvInter, FeatureType, Items, NPCWrap, ShopItem};
[INFO] [stdout]   |                           ^^^^                         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `parse_map`
[INFO] [stdout]  --> src/features.rs:9:34
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::parsing::{ch_to_enum, parse_map};
[INFO] [stdout]   |                                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]   --> src/features.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use rand::Rng;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Door` and `FeatureType`
[INFO] [stdout]  --> src/features/abandoned_shacks.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::enums::{Cells, Door, EnvInter, FeatureType, NPCWrap};
[INFO] [stdout]   |                           ^^^^            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand_hermit_item`
[INFO] [stdout]  --> src/features/abandoned_shacks.rs:2:19
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::item::{rand_hermit_item, Item};
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Convo`, `ShopConvos`, `ShopData`, `new_comm_npc`, `new_conv_npc`, and `new_shop_npc`
[INFO] [stdout]  --> src/features/abandoned_shacks.rs:3:18
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::npc::{new_comm_npc, new_conv_npc, new_shop_npc, Convo, ShopConvos, ShopData};
[INFO] [stdout]   |                  ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^  ^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tile_to_chars`
[INFO] [stdout]  --> src/features/abandoned_shacks.rs:4:33
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::parsing::{parse_map, tile_to_chars};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/features/abandoned_shacks.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Door` and `FeatureType`
[INFO] [stdout]  --> src/features/construction.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::enums::{Cells, Door, EnvInter, FeatureType, NPCWrap};
[INFO] [stdout]   |                           ^^^^            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand_hermit_item`
[INFO] [stdout]  --> src/features/construction.rs:2:19
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::item::{rand_hermit_item, Item};
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Convo`, `ShopConvos`, `ShopData`, `new_comm_npc`, `new_conv_npc`, and `new_shop_npc`
[INFO] [stdout]  --> src/features/construction.rs:3:18
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::npc::{new_comm_npc, new_conv_npc, new_shop_npc, Convo, ShopConvos, ShopData};
[INFO] [stdout]   |                  ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^  ^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tile_to_chars`
[INFO] [stdout]  --> src/features/construction.rs:4:33
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::parsing::{parse_map, tile_to_chars};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/features/construction.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Door` and `FeatureType`
[INFO] [stdout]  --> src/features/field.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::enums::{Cells, Door, EnvInter, FeatureType, NPCWrap};
[INFO] [stdout]   |                           ^^^^            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand_hermit_item`
[INFO] [stdout]  --> src/features/field.rs:2:19
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::item::{rand_hermit_item, Item};
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Convo`, `ShopConvos`, `ShopData`, `new_comm_npc`, `new_conv_npc`, and `new_shop_npc`
[INFO] [stdout]  --> src/features/field.rs:3:18
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::npc::{new_comm_npc, new_conv_npc, new_shop_npc, Convo, ShopConvos, ShopData};
[INFO] [stdout]   |                  ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^  ^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/features/field.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f64::consts`
[INFO] [stdout]  --> src/features/field.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::f64::consts;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]   --> src/features/field.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::fs;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/features/field.rs:268:14
[INFO] [stdout]     |
[INFO] [stdout] 268 |     for j in (0..temp.len()) {
[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] 268 -     for j in (0..temp.len()) {
[INFO] [stdout] 268 +     for j in 0..temp.len()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/features/field.rs:269:18
[INFO] [stdout]     |
[INFO] [stdout] 269 |         for i in (0..temp[0].len()) {
[INFO] [stdout]     |                  ^                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 269 -         for i in (0..temp[0].len()) {
[INFO] [stdout] 269 +         for i in 0..temp[0].len()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Door` and `FeatureType`
[INFO] [stdout]  --> src/features/pond.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::enums::{Cells, Door, EnvInter, FeatureType, NPCWrap};
[INFO] [stdout]   |                           ^^^^            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand_hermit_item`
[INFO] [stdout]  --> src/features/pond.rs:2:19
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::item::{rand_hermit_item, Item};
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tile_to_chars`
[INFO] [stdout]  --> src/features/pond.rs:3:33
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::parsing::{parse_map, tile_to_chars};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/features/pond.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Door` and `FeatureType`
[INFO] [stdout]  --> src/features/ruin.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::enums::{Cells, Door, EnvInter, FeatureType, NPCWrap};
[INFO] [stdout]   |                           ^^^^            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand_hermit_item`
[INFO] [stdout]  --> src/features/ruin.rs:2:19
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::item::{rand_hermit_item, Item};
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Convo`, `ShopConvos`, `ShopData`, `new_comm_npc`, `new_conv_npc`, and `new_shop_npc`
[INFO] [stdout]  --> src/features/ruin.rs:3:18
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::npc::{new_comm_npc, new_conv_npc, new_shop_npc, Convo, ShopConvos, ShopData};
[INFO] [stdout]   |                  ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^  ^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tile_to_chars`
[INFO] [stdout]  --> src/features/ruin.rs:4:33
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::parsing::{parse_map, tile_to_chars};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/features/ruin.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Door` and `FeatureType`
[INFO] [stdout]  --> src/features/streams.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::enums::{Cells, Door, EnvInter, FeatureType, NPCWrap};
[INFO] [stdout]   |                           ^^^^            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand_hermit_item`
[INFO] [stdout]  --> src/features/streams.rs:2:19
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::item::{rand_hermit_item, Item};
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/features/streams.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/features/streams.rs:186:14
[INFO] [stdout]     |
[INFO] [stdout] 186 |     for j in (0..temp.len()) {
[INFO] [stdout]     |              ^             ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 186 -     for j in (0..temp.len()) {
[INFO] [stdout] 186 +     for j in 0..temp.len()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/features/streams.rs:187:18
[INFO] [stdout]     |
[INFO] [stdout] 187 |         for i in (0..temp[0].len()) {
[INFO] [stdout]     |                  ^                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 187 -         for i in (0..temp[0].len()) {
[INFO] [stdout] 187 +         for i in 0..temp[0].len()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]   --> src/features.rs:71:18
[INFO] [stdout]    |
[INFO] [stdout] 71 |         for j in (0..self.map.len() - 6) {
[INFO] [stdout]    |                  ^                     ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 71 -         for j in (0..self.map.len() - 6) {
[INFO] [stdout] 71 +         for j in 0..self.map.len() - 6  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]   --> src/features.rs:72:22
[INFO] [stdout]    |
[INFO] [stdout] 72 |             for i in (0..self.map[0].len() - 10) {
[INFO] [stdout]    |                      ^                         ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 72 -             for i in (0..self.map[0].len() - 10) {
[INFO] [stdout] 72 +             for i in 0..self.map[0].len() - 10  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::stats::WorldStats`
[INFO] [stdout]  --> src/gui.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::stats::WorldStats;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::enemy::Enemy`
[INFO] [stdout]  --> src/gui/npc_interactions.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::enemy::Enemy;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EncOpt`, `EnvInter`, `Equip`, `InterOpt`, `Interactable`, `ItemEffect`, `NPCWrap`, and `Plants`
[INFO] [stdout]  --> src/gui/npc_interactions.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     EncOpt, EnvInter, Equip, InterOpt, Interactable, ItemEffect, Items, NPCWrap, Plants,
[INFO] [stdout]   |     ^^^^^^  ^^^^^^^^  ^^^^^  ^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^         ^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EnvInter`, `Equip`, `InterOpt`, `Interactable`, `ItemEffect`, `NPCWrap`, and `Plants`
[INFO] [stdout]  --> src/gui/enemy_encounters.rs:4:13
[INFO] [stdout]   |
[INFO] [stdout] 4 |     EncOpt, EnvInter, Equip, InterOpt, Interactable, ItemEffect, Items, NPCWrap, Plants,
[INFO] [stdout]   |             ^^^^^^^^  ^^^^^  ^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^         ^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::npc::NPC`
[INFO] [stdout]  --> src/gui/enemy_encounters.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::npc::NPC;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ratatui::text::Line`
[INFO] [stdout]   --> src/gui/enemy_encounters.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use ratatui::text::Line;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::env::current_dir`
[INFO] [stdout]  --> src/gui/environment_interactions.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::env::current_dir;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ratatui::crossterm::style::PrintStyledContent`
[INFO] [stdout]   --> src/gui.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use ratatui::crossterm::style::PrintStyledContent;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Modifier`
[INFO] [stdout]   --> src/gui.rs:22:29
[INFO] [stdout]    |
[INFO] [stdout] 22 | use ratatui::style::{Color, Modifier, Style, Stylize};
[INFO] [stdout]    |                             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ratatui::text::ToLine`
[INFO] [stdout]  --> src/assets.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use ratatui::text::ToLine;
[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: `rand::Rng`
[INFO] [stdout]   --> src/assets.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use rand::Rng;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]   --> src/gui_utils.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use rand::Rng;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::StreamDeserializer`
[INFO] [stdout]   --> src/assets.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use serde_json::StreamDeserializer;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ratatui::crossterm::event::KeyCode`
[INFO] [stdout]   --> src/gui_utils.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use ratatui::crossterm::event::KeyCode;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Constraint`, `Direction`, `Layout`, and `Margin`
[INFO] [stdout]   --> src/gui_utils.rs:13:23
[INFO] [stdout]    |
[INFO] [stdout] 13 | use ratatui::layout::{Constraint, Direction, Layout, Margin};
[INFO] [stdout]    |                       ^^^^^^^^^^  ^^^^^^^^^  ^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ratatui::prelude::Alignment`
[INFO] [stdout]   --> src/gui_utils.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use ratatui::prelude::Alignment;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::enums::Cells`
[INFO] [stdout]  --> src/enemy.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::enums::Cells;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TaskNPC`
[INFO] [stdout]  --> src/enums.rs:5:64
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::npc::{BaseNPC, CommNPC, ConvNPC, ShopNPC, SpawnNPC, TaskNPC, TradeNPC};
[INFO] [stdout]   |                                                                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ratatui::widgets::Cell`
[INFO] [stdout]   --> src/gui_utils.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use ratatui::widgets::Cell;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ratatui::widgets::Row`
[INFO] [stdout]   --> src/gui_utils.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use ratatui::widgets::Row;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ratatui::widgets::Table`
[INFO] [stdout]   --> src/gui_utils.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use ratatui::widgets::Table;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/gui_utils.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> src/item.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `thread_rng`
[INFO] [stdout]   --> src/map.rs:10:34
[INFO] [stdout]    |
[INFO] [stdout] 10 | use rand::{prelude::SliceRandom, thread_rng};
[INFO] [stdout]    |                                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]   --> src/map.rs:13:13
[INFO] [stdout]    |
[INFO] [stdout] 13 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Door` and `Items`
[INFO] [stdout]  --> src/features.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::enums::{Cells, Door, EnvInter, FeatureType, Items, NPCWrap, ShopItem};
[INFO] [stdout]   |                           ^^^^                         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FeatureType`
[INFO] [stdout]  --> src/nodemap.rs:1:20
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::enums::{FeatureType, NodeType};
[INFO] [stdout]   |                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::features::Feature`
[INFO] [stdout]  --> src/nodemap.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::features::Feature;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `parse_map`
[INFO] [stdout]  --> src/features.rs:9:34
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::parsing::{ch_to_enum, parse_map};
[INFO] [stdout]   |                                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]   --> src/features.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use rand::Rng;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/notebook.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Door` and `FeatureType`
[INFO] [stdout]  --> src/features/abandoned_shacks.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::enums::{Cells, Door, EnvInter, FeatureType, NPCWrap};
[INFO] [stdout]   |                           ^^^^            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand_hermit_item`
[INFO] [stdout]  --> src/features/abandoned_shacks.rs:2:19
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::item::{rand_hermit_item, Item};
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Convo`, `ShopConvos`, `ShopData`, `new_comm_npc`, `new_conv_npc`, and `new_shop_npc`
[INFO] [stdout]  --> src/features/abandoned_shacks.rs:3:18
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::npc::{new_comm_npc, new_conv_npc, new_shop_npc, Convo, ShopConvos, ShopData};
[INFO] [stdout]   |                  ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^  ^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tile_to_chars`
[INFO] [stdout]  --> src/features/abandoned_shacks.rs:4:33
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::parsing::{parse_map, tile_to_chars};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/features/abandoned_shacks.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::default`
[INFO] [stdout]  --> src/npc.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::default;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Door` and `FeatureType`
[INFO] [stdout]  --> src/features/construction.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::enums::{Cells, Door, EnvInter, FeatureType, NPCWrap};
[INFO] [stdout]   |                           ^^^^            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand_hermit_item`
[INFO] [stdout]  --> src/features/construction.rs:2:19
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::item::{rand_hermit_item, Item};
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `get_ascii`, `get_shop_convos`, and `get_shops`
[INFO] [stdout]  --> src/parsing.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     get_ascii, get_comm, get_convo, get_npc_name, get_shop_convos, get_shops, Comms, Convos,
[INFO] [stdout]   |     ^^^^^^^^^                                     ^^^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Convo`, `ShopConvos`, `ShopData`, `new_comm_npc`, `new_conv_npc`, and `new_shop_npc`
[INFO] [stdout]  --> src/features/construction.rs:3:18
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::npc::{new_comm_npc, new_conv_npc, new_shop_npc, Convo, ShopConvos, ShopData};
[INFO] [stdout]   |                  ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^  ^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tile_to_chars`
[INFO] [stdout]  --> src/features/construction.rs:4:33
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::parsing::{parse_map, tile_to_chars};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/features/construction.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Door` and `FeatureType`
[INFO] [stdout]  --> src/features/field.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::enums::{Cells, Door, EnvInter, FeatureType, NPCWrap};
[INFO] [stdout]   |                           ^^^^            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand_hermit_item`
[INFO] [stdout]  --> src/features/field.rs:2:19
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::item::{rand_hermit_item, Item};
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Convo`, `ShopConvos`, `ShopData`, `new_comm_npc`, `new_conv_npc`, and `new_shop_npc`
[INFO] [stdout]  --> src/features/field.rs:3:18
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::npc::{new_comm_npc, new_conv_npc, new_shop_npc, Convo, ShopConvos, ShopData};
[INFO] [stdout]   |                  ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^  ^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/features/field.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f64::consts`
[INFO] [stdout]  --> src/features/field.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::f64::consts;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]   --> src/features/field.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::fs;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/features/field.rs:268:14
[INFO] [stdout]     |
[INFO] [stdout] 268 |     for j in (0..temp.len()) {
[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] 268 -     for j in (0..temp.len()) {
[INFO] [stdout] 268 +     for j in 0..temp.len()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/features/field.rs:269:18
[INFO] [stdout]     |
[INFO] [stdout] 269 |         for i in (0..temp[0].len()) {
[INFO] [stdout]     |                  ^                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 269 -         for i in (0..temp[0].len()) {
[INFO] [stdout] 269 +         for i in 0..temp[0].len()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Door` and `FeatureType`
[INFO] [stdout]  --> src/features/pond.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::enums::{Cells, Door, EnvInter, FeatureType, NPCWrap};
[INFO] [stdout]   |                           ^^^^            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand_hermit_item`
[INFO] [stdout]  --> src/features/pond.rs:2:19
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::item::{rand_hermit_item, Item};
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tile_to_chars`
[INFO] [stdout]  --> src/features/pond.rs:3:33
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::parsing::{parse_map, tile_to_chars};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/features/pond.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Door` and `FeatureType`
[INFO] [stdout]  --> src/features/ruin.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::enums::{Cells, Door, EnvInter, FeatureType, NPCWrap};
[INFO] [stdout]   |                           ^^^^            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand_hermit_item`
[INFO] [stdout]  --> src/features/ruin.rs:2:19
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::item::{rand_hermit_item, Item};
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Convo`, `ShopConvos`, `ShopData`, `new_comm_npc`, `new_conv_npc`, and `new_shop_npc`
[INFO] [stdout]  --> src/features/ruin.rs:3:18
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::npc::{new_comm_npc, new_conv_npc, new_shop_npc, Convo, ShopConvos, ShopData};
[INFO] [stdout]   |                  ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^  ^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tile_to_chars`
[INFO] [stdout]  --> src/features/ruin.rs:4:33
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::parsing::{parse_map, tile_to_chars};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/features/ruin.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Door` and `FeatureType`
[INFO] [stdout]  --> src/features/streams.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::enums::{Cells, Door, EnvInter, FeatureType, NPCWrap};
[INFO] [stdout]   |                           ^^^^            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand_hermit_item`
[INFO] [stdout]  --> src/features/streams.rs:2:19
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::item::{rand_hermit_item, Item};
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Convo`
[INFO] [stdout]  --> src/parsing.rs:6:46
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::npc::{new_comm_npc, new_conv_npc, Convo};
[INFO] [stdout]   |                                              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/features/streams.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]   --> src/parsing.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::fs;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/features/streams.rs:186:14
[INFO] [stdout]     |
[INFO] [stdout] 186 |     for j in (0..temp.len()) {
[INFO] [stdout]     |              ^             ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 186 -     for j in (0..temp.len()) {
[INFO] [stdout] 186 +     for j in 0..temp.len()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EnvInter`
[INFO] [stdout]  --> src/player.rs:3:28
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::enums::{EncOpt, EnvInter, Equip, ItemEffect, PuzzlePiece};
[INFO] [stdout]   |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/features/streams.rs:187:18
[INFO] [stdout]     |
[INFO] [stdout] 187 |         for i in (0..temp[0].len()) {
[INFO] [stdout]     |                  ^                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 187 -         for i in (0..temp[0].len()) {
[INFO] [stdout] 187 +         for i in 0..temp[0].len()  {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> src/player.rs:6:13
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PuzzlePiece` and `PuzzleType`
[INFO] [stdout]  --> src/puzzle.rs:4:46
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::enums::{Cells, EnvInter, NPCWrap, PuzzlePiece, PuzzleType};
[INFO] [stdout]   |                                              ^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]   --> src/features.rs:71:18
[INFO] [stdout]    |
[INFO] [stdout] 71 |         for j in (0..self.map.len() - 6) {
[INFO] [stdout]    |                  ^                     ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 71 -         for j in (0..self.map.len() - 6) {
[INFO] [stdout] 71 +         for j in 0..self.map.len() - 6  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]  --> src/puzzle.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use log::info;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]   --> src/features.rs:72:22
[INFO] [stdout]    |
[INFO] [stdout] 72 |             for i in (0..self.map[0].len() - 10) {
[INFO] [stdout]    |                      ^                         ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 72 -             for i in (0..self.map[0].len() - 10) {
[INFO] [stdout] 72 +             for i in 0..self.map[0].len() - 10  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]   --> src/puzzle.rs:10:13
[INFO] [stdout]    |
[INFO] [stdout] 10 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::stats::WorldStats`
[INFO] [stdout]  --> src/gui.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::stats::WorldStats;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/puzzle.rs:713:14
[INFO] [stdout]     |
[INFO] [stdout] 713 |     for j in (0..temp.len()) {
[INFO] [stdout]     |              ^             ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 713 -     for j in (0..temp.len()) {
[INFO] [stdout] 713 +     for j in 0..temp.len() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/puzzle.rs:714:18
[INFO] [stdout]     |
[INFO] [stdout] 714 |         for i in (0..temp[0].len()) {
[INFO] [stdout]     |                  ^                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 714 -         for i in (0..temp[0].len()) {
[INFO] [stdout] 714 +         for i in 0..temp[0].len() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Rng` and `seq::SliceRandom`
[INFO] [stdout]  --> src/puzzles.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{seq::SliceRandom, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> src/puzzles.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_ascii`
[INFO] [stdout]  --> src/settlement.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     get_ascii, get_comm, get_convo, get_npc_name, get_shop_convos, get_shops, Comms, Convos,
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CommDialogue`, `ConvoDialogue`, `load_comms`, and `load_convos`
[INFO] [stdout]  --> src/settlement.rs:5:23
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::dialogue::{load_comms, load_convos, CommDialogue, ConvoDialogue};
[INFO] [stdout]   |                       ^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Convo`, `ShopConvos`, and `ShopData`
[INFO] [stdout]  --> src/settlement.rs:9:60
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::npc::{new_comm_npc, new_conv_npc, new_shop_npc, Convo, ShopConvos, ShopData, ShopNPC};
[INFO] [stdout]   |                                                            ^^^^^  ^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CommDialogue`, `ConvoDialogue`, `load_comms`, and `load_convos`
[INFO] [stdout]  --> src/settlement/guild_settle.rs:1:23
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::dialogue::{load_comms, load_convos, CommDialogue, ConvoDialogue};
[INFO] [stdout]   |                       ^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Door` and `Settle`
[INFO] [stdout]  --> src/settlement/guild_settle.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::enums::{Cells, Door, EnvInter, NPCWrap, Settle};
[INFO] [stdout]   |                           ^^^^                     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Convo`, `ShopConvos`, `ShopData`, `new_comm_npc`, `new_conv_npc`, and `new_shop_npc`
[INFO] [stdout]  --> src/settlement/guild_settle.rs:5:18
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::npc::{new_comm_npc, new_conv_npc, new_shop_npc, Convo, ShopConvos, ShopData, ShopNPC};
[INFO] [stdout]   |                  ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^  ^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::npc_utils::box_npc`
[INFO] [stdout]  --> src/settlement/guild_settle.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::npc_utils::box_npc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::shop::Shop`
[INFO] [stdout]  --> src/settlement/guild_settle.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::shop::Shop;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]   --> src/settlement/guild_settle.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::fs;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::enemy::Enemy`
[INFO] [stdout]  --> src/gui/npc_interactions.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::enemy::Enemy;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Door` and `Settle`
[INFO] [stdout]  --> src/settlement/med_settle.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::enums::{Cells, Door, EnvInter, NPCWrap, Settle};
[INFO] [stdout]   |                           ^^^^                     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/settlement/med_settle.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]   --> src/settlement/med_settle.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::fs;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Door` and `Settle`
[INFO] [stdout]  --> src/settlement/obsidian_settle.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::enums::{Cells, Door, EnvInter, NPCWrap, Settle};
[INFO] [stdout]   |                           ^^^^                     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EncOpt`, `EnvInter`, `Equip`, `InterOpt`, `Interactable`, `ItemEffect`, `NPCWrap`, and `Plants`
[INFO] [stdout]  --> src/gui/npc_interactions.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     EncOpt, EnvInter, Equip, InterOpt, Interactable, ItemEffect, Items, NPCWrap, Plants,
[INFO] [stdout]   |     ^^^^^^  ^^^^^^^^  ^^^^^  ^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^         ^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Door` and `Settle`
[INFO] [stdout]  --> src/settlement/sm_settle.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::enums::{Cells, Door, EnvInter, NPCWrap, Settle};
[INFO] [stdout]   |                           ^^^^                     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/settlement/sm_settle.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TaskType`
[INFO] [stdout]  --> src/settlements.rs:5:26
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::tasks::{Task, TaskType};
[INFO] [stdout]   |                          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EnvInter`, `Equip`, `InterOpt`, `Interactable`, `ItemEffect`, `NPCWrap`, and `Plants`
[INFO] [stdout]  --> src/gui/enemy_encounters.rs:4:13
[INFO] [stdout]   |
[INFO] [stdout] 4 |     EncOpt, EnvInter, Equip, InterOpt, Interactable, ItemEffect, Items, NPCWrap, Plants,
[INFO] [stdout]   |             ^^^^^^^^  ^^^^^  ^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^         ^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> src/settlements.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::npc::NPC`
[INFO] [stdout]  --> src/gui/enemy_encounters.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::npc::NPC;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ratatui::text::Line`
[INFO] [stdout]   --> src/gui/enemy_encounters.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use ratatui::text::Line;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `NPCWrap`
[INFO] [stdout]  --> src/shop.rs:2:20
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::enums::{NPCWrap, ShopItem, Shops};
[INFO] [stdout]   |                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::item::Item`
[INFO] [stdout]  --> src/shop.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::item::Item;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> src/shop.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/tasks.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Location` and `ToggleState`
[INFO] [stdout]  --> src/tasks.rs:8:27
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::enums::{Items, Location, ToggleState};
[INFO] [stdout]   |                           ^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PuzzlePiece`
[INFO] [stdout]  --> src/utils.rs:2:69
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::enums::{Cells, Door, Enemies, EnvInter, Items, Location, PuzzlePiece, ShopItem};
[INFO] [stdout]   |                                                                     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PDoorHV`, `PuzzleDoor`, and `PuzzleKey`
[INFO] [stdout]  --> src/utils.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::puzzle::{PDoorHV, PuzzleDoor, PuzzleKey};
[INFO] [stdout]   |                     ^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `get_ascii`, `get_comm`, `get_convo`, and `get_npc_name`
[INFO] [stdout]  --> src/gamestate.rs:2:21
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::assets::{get_ascii, get_comm, get_convo, get_npc_name};
[INFO] [stdout]   |                     ^^^^^^^^^  ^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::env::current_dir`
[INFO] [stdout]  --> src/gui/environment_interactions.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::env::current_dir;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::dialogue::Dialogue`
[INFO] [stdout]  --> src/gamestate.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::dialogue::Dialogue;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ratatui::crossterm::style::PrintStyledContent`
[INFO] [stdout]   --> src/gui.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use ratatui::crossterm::style::PrintStyledContent;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Enemies` and `Items`
[INFO] [stdout]  --> src/gamestate.rs:6:39
[INFO] [stdout]   |
[INFO] [stdout] 6 |     Cells, CompMode, EncMode, EncOpt, Enemies, EnvInter, FightSteps, GameMode, Interactable, Items,
[INFO] [stdout]   |                                       ^^^^^^^                                                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Modifier`
[INFO] [stdout]   --> src/gui.rs:22:29
[INFO] [stdout]    |
[INFO] [stdout] 22 | use ratatui::style::{Color, Modifier, Style, Stylize};
[INFO] [stdout]    |                             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::npc::Convo`
[INFO] [stdout]   --> src/gamestate.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::npc::Convo;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Task`
[INFO] [stdout]   --> src/gamestate.rs:21:20
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::tasks::{Task, Tasks};
[INFO] [stdout]    |                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gen_broken_range`
[INFO] [stdout]   --> src/gamestate.rs:22:20
[INFO] [stdout]    |
[INFO] [stdout] 22 | use crate::utils::{gen_broken_range, in_range, loc_shop_items};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Comms`, `Convos`, `Npcs`, `get_comm`, `get_convo`, `get_npc_name`, `get_shop_convos`, `get_shops`, and `self`
[INFO] [stdout]  --> src/gamestate/enemy_encounter.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     self, get_ascii, get_comm, get_convo, get_npc_name, get_shop_convos, get_shops, Ascii, Comms,
[INFO] [stdout]   |     ^^^^             ^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^         ^^^^^
[INFO] [stdout] 4 |     Convos, Npcs,
[INFO] [stdout]   |     ^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Enemies`
[INFO] [stdout]  --> src/gamestate/enemy_encounter.rs:9:42
[INFO] [stdout]   |
[INFO] [stdout] 9 |     AniType, EncMode, EncOpt, EncResult, Enemies, Equip, ExpType, FightSteps, GameMode,
[INFO] [stdout]   |                                          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]   --> src/gui_utils.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use rand::Rng;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DisplayStats`
[INFO] [stdout]   --> src/gamestate/enemy_encounter.rs:13:35
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::gui_utils::{Animation, DisplayStats, GuiArgs};
[INFO] [stdout]    |                                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::ascii`
[INFO] [stdout]   --> src/gamestate/enemy_encounter.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use core::ascii;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ratatui::crossterm::event::KeyCode`
[INFO] [stdout]   --> src/gui_utils.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use ratatui::crossterm::event::KeyCode;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Comms`, `Convos`, `get_comm`, `get_convo`, `get_npc_name`, `get_shop_convos`, and `get_shops`
[INFO] [stdout]  --> src/gamestate/environment_interactions.rs:3:16
[INFO] [stdout]   |
[INFO] [stdout] 3 |     get_ascii, get_comm, get_convo, get_hermit_convo, get_npc_name, get_shop_convos, get_shops,
[INFO] [stdout]   |                ^^^^^^^^  ^^^^^^^^^                    ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 4 |     Ascii, Comms, Convos, Npcs,
[INFO] [stdout]   |            ^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PuzzlePiece` and `PuzzleType`
[INFO] [stdout]   --> src/gamestate/environment_interactions.rs:10:70
[INFO] [stdout]    |
[INFO] [stdout] 10 |     Door, EnvInter, GameMode, Interactable, Items, Location, Plants, PuzzlePiece, PuzzleType,
[INFO] [stdout]    |                                                                      ^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Constraint`, `Direction`, `Layout`, and `Margin`
[INFO] [stdout]   --> src/gui_utils.rs:13:23
[INFO] [stdout]    |
[INFO] [stdout] 13 | use ratatui::layout::{Constraint, Direction, Layout, Margin};
[INFO] [stdout]    |                       ^^^^^^^^^^  ^^^^^^^^^  ^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DisplayStats`
[INFO] [stdout]   --> src/gamestate/environment_interactions.rs:13:24
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::gui_utils::{DisplayStats, GuiArgs};
[INFO] [stdout]    |                        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PuzzleDoor` and `PuzzleKey`
[INFO] [stdout]   --> src/gamestate/environment_interactions.rs:15:29
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::puzzle::{Puzzle, PuzzleDoor, PuzzleKey};
[INFO] [stdout]    |                             ^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ratatui::prelude::Alignment`
[INFO] [stdout]   --> src/gui_utils.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use ratatui::prelude::Alignment;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::shop::Shop`
[INFO] [stdout]   --> src/gamestate/environment_interactions.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::shop::Shop;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TaskType` and `self`
[INFO] [stdout]   --> src/gamestate/environment_interactions.rs:17:20
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::tasks::{self, Task, TaskType};
[INFO] [stdout]    |                    ^^^^        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ratatui::widgets::Cell`
[INFO] [stdout]   --> src/gui_utils.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use ratatui::widgets::Cell;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ratatui::widgets::Row`
[INFO] [stdout]   --> src/gui_utils.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use ratatui::widgets::Row;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `GUIMode`
[INFO] [stdout]  --> src/gamestate/inventory_state.rs:3:20
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::enums::{GUIMode, GameMode, InterOpt, ItemOpt};
[INFO] [stdout]   |                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DisplayStats`
[INFO] [stdout]  --> src/gamestate/npc_interactions.rs:7:24
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::gui_utils::{DisplayStats, GuiArgs};
[INFO] [stdout]   |                        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_shops`
[INFO] [stdout]  --> src/gamestate/npcs.rs:2:40
[INFO] [stdout]   |
[INFO] [stdout] 2 |     get_comm, get_convo, get_npc_name, get_shops, get_spawn_comm, get_spawn_convo, get_trade_convo,
[INFO] [stdout]   |                                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Cells`, `CompMode`, `EnvInter`, `GUIMode`, `GameMode`, `Interactable`, and `NPCWrap`
[INFO] [stdout]  --> src/gamestate/puzzle_state.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     Cells, CompMode, EnvInter, GUIMode, GameMode, Interactable, Location, NPCWrap, PuzzlePiece,
[INFO] [stdout]   |     ^^^^^  ^^^^^^^^  ^^^^^^^^  ^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::gui_utils::GuiArgs`
[INFO] [stdout]  --> src/gamestate/puzzle_state.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::gui_utils::GuiArgs;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::settlement::Settlement`
[INFO] [stdout]   --> src/gamestate/puzzle_state.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::settlement::Settlement;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::item::Item`
[INFO] [stdout]   --> src/gamestate/puzzle_state.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::item::Item;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]   --> src/gamestate/puzzle_state.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::time::Instant;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::gamestate::in_range`
[INFO] [stdout]   --> src/gamestate/puzzle_state.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::gamestate::in_range;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::gamestate::loc_shop_items`
[INFO] [stdout]   --> src/gamestate/puzzle_state.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::gamestate::loc_shop_items;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ratatui::widgets::Table`
[INFO] [stdout]   --> src/gui_utils.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use ratatui::widgets::Table;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/gui_utils.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> src/item.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `thread_rng`
[INFO] [stdout]   --> src/map.rs:10:34
[INFO] [stdout]    |
[INFO] [stdout] 10 | use rand::{prelude::SliceRandom, thread_rng};
[INFO] [stdout]    |                                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]   --> src/map.rs:13:13
[INFO] [stdout]    |
[INFO] [stdout] 13 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FeatureType`
[INFO] [stdout]  --> src/nodemap.rs:1:20
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::enums::{FeatureType, NodeType};
[INFO] [stdout]   |                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::features::Feature`
[INFO] [stdout]  --> src/nodemap.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::features::Feature;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/notebook.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::default`
[INFO] [stdout]  --> src/npc.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::default;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Event`, `KeyCode`, `poll`, and `read`
[INFO] [stdout]   --> src/gamestate/puzzle_state.rs:19:33
[INFO] [stdout]    |
[INFO] [stdout] 19 | use ratatui::crossterm::event::{poll, read, Event, KeyCode};
[INFO] [stdout]    |                                 ^^^^  ^^^^  ^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `NPCWrap`
[INFO] [stdout]  --> src/gamestate/settle_state.rs:4:63
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::enums::{GUIMode, GameMode, Interactable, Location, NPCWrap, ShopItem};
[INFO] [stdout]   |                                                               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ShopNPC`
[INFO] [stdout]  --> src/gamestate/settle_state.rs:8:18
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::npc::{ShopNPC, NPC};
[INFO] [stdout]   |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::item::Item`
[INFO] [stdout]   --> src/gamestate/settle_state.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::item::Item;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `get_ascii`, `get_shop_convos`, and `get_shops`
[INFO] [stdout]  --> src/parsing.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     get_ascii, get_comm, get_convo, get_npc_name, get_shop_convos, get_shops, Comms, Convos,
[INFO] [stdout]   |     ^^^^^^^^^                                     ^^^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]   --> src/gamestate.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 41 | use rand::Rng;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]   --> src/gamestate.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | use std::fs;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Convo`
[INFO] [stdout]  --> src/parsing.rs:6:46
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::npc::{new_comm_npc, new_conv_npc, Convo};
[INFO] [stdout]   |                                              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]   --> src/parsing.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::fs;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EnvInter`
[INFO] [stdout]  --> src/player.rs:3:28
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::enums::{EncOpt, EnvInter, Equip, ItemEffect, PuzzlePiece};
[INFO] [stdout]   |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> src/player.rs:6:13
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PuzzlePiece` and `PuzzleType`
[INFO] [stdout]  --> src/puzzle.rs:4:46
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::enums::{Cells, EnvInter, NPCWrap, PuzzlePiece, PuzzleType};
[INFO] [stdout]   |                                              ^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]  --> src/puzzle.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use log::info;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]   --> src/puzzle.rs:10:13
[INFO] [stdout]    |
[INFO] [stdout] 10 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/puzzle.rs:713:14
[INFO] [stdout]     |
[INFO] [stdout] 713 |     for j in (0..temp.len()) {
[INFO] [stdout]     |              ^             ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 713 -     for j in (0..temp.len()) {
[INFO] [stdout] 713 +     for j in 0..temp.len() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `for` iterator expression
[INFO] [stdout]    --> src/puzzle.rs:714:18
[INFO] [stdout]     |
[INFO] [stdout] 714 |         for i in (0..temp[0].len()) {
[INFO] [stdout]     |                  ^                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 714 -         for i in (0..temp[0].len()) {
[INFO] [stdout] 714 +         for i in 0..temp[0].len() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Rng` and `seq::SliceRandom`
[INFO] [stdout]  --> src/puzzles.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{seq::SliceRandom, Rng};
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> src/puzzles.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_ascii`
[INFO] [stdout]  --> src/settlement.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     get_ascii, get_comm, get_convo, get_npc_name, get_shop_convos, get_shops, Comms, Convos,
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CommDialogue`, `ConvoDialogue`, `load_comms`, and `load_convos`
[INFO] [stdout]  --> src/settlement.rs:5:23
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::dialogue::{load_comms, load_convos, CommDialogue, ConvoDialogue};
[INFO] [stdout]   |                       ^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Convo`, `ShopConvos`, and `ShopData`
[INFO] [stdout]  --> src/settlement.rs:9:60
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::npc::{new_comm_npc, new_conv_npc, new_shop_npc, Convo, ShopConvos, ShopData, ShopNPC};
[INFO] [stdout]   |                                                            ^^^^^  ^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CommDialogue`, `ConvoDialogue`, `load_comms`, and `load_convos`
[INFO] [stdout]  --> src/settlement/guild_settle.rs:1:23
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::dialogue::{load_comms, load_convos, CommDialogue, ConvoDialogue};
[INFO] [stdout]   |                       ^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Door` and `Settle`
[INFO] [stdout]  --> src/settlement/guild_settle.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::enums::{Cells, Door, EnvInter, NPCWrap, Settle};
[INFO] [stdout]   |                           ^^^^                     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Convo`, `ShopConvos`, `ShopData`, `new_comm_npc`, `new_conv_npc`, and `new_shop_npc`
[INFO] [stdout]  --> src/settlement/guild_settle.rs:5:18
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::npc::{new_comm_npc, new_conv_npc, new_shop_npc, Convo, ShopConvos, ShopData, ShopNPC};
[INFO] [stdout]   |                  ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^  ^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::npc_utils::box_npc`
[INFO] [stdout]  --> src/settlement/guild_settle.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::npc_utils::box_npc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::shop::Shop`
[INFO] [stdout]  --> src/settlement/guild_settle.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::shop::Shop;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]   --> src/settlement/guild_settle.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::fs;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Door` and `Settle`
[INFO] [stdout]  --> src/settlement/med_settle.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::enums::{Cells, Door, EnvInter, NPCWrap, Settle};
[INFO] [stdout]   |                           ^^^^                     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/settlement/med_settle.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]   --> src/settlement/med_settle.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::fs;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Door` and `Settle`
[INFO] [stdout]  --> src/settlement/obsidian_settle.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::enums::{Cells, Door, EnvInter, NPCWrap, Settle};
[INFO] [stdout]   |                           ^^^^                     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Door` and `Settle`
[INFO] [stdout]  --> src/settlement/sm_settle.rs:1:27
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::enums::{Cells, Door, EnvInter, NPCWrap, Settle};
[INFO] [stdout]   |                           ^^^^                     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/settlement/sm_settle.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TaskType`
[INFO] [stdout]  --> src/settlements.rs:5:26
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::tasks::{Task, TaskType};
[INFO] [stdout]   |                          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> src/settlements.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `NPCWrap`
[INFO] [stdout]  --> src/shop.rs:2:20
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::enums::{NPCWrap, ShopItem, Shops};
[INFO] [stdout]   |                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::item::Item`
[INFO] [stdout]  --> src/shop.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::item::Item;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> src/shop.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> src/tasks.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Location` and `ToggleState`
[INFO] [stdout]  --> src/tasks.rs:8:27
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::enums::{Items, Location, ToggleState};
[INFO] [stdout]   |                           ^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PuzzlePiece`
[INFO] [stdout]  --> src/utils.rs:2:69
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::enums::{Cells, Door, Enemies, EnvInter, Items, Location, PuzzlePiece, ShopItem};
[INFO] [stdout]   |                                                                     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PDoorHV`, `PuzzleDoor`, and `PuzzleKey`
[INFO] [stdout]  --> src/utils.rs:4:21
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::puzzle::{PDoorHV, PuzzleDoor, PuzzleKey};
[INFO] [stdout]   |                     ^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `get_ascii`, `get_comm`, `get_convo`, and `get_npc_name`
[INFO] [stdout]  --> src/gamestate.rs:2:21
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::assets::{get_ascii, get_comm, get_convo, get_npc_name};
[INFO] [stdout]   |                     ^^^^^^^^^  ^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::dialogue::Dialogue`
[INFO] [stdout]  --> src/gamestate.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::dialogue::Dialogue;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Enemies` and `Items`
[INFO] [stdout]  --> src/gamestate.rs:6:39
[INFO] [stdout]   |
[INFO] [stdout] 6 |     Cells, CompMode, EncMode, EncOpt, Enemies, EnvInter, FightSteps, GameMode, Interactable, Items,
[INFO] [stdout]   |                                       ^^^^^^^                                                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::npc::Convo`
[INFO] [stdout]   --> src/gamestate.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::npc::Convo;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Task`
[INFO] [stdout]   --> src/gamestate.rs:21:20
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::tasks::{Task, Tasks};
[INFO] [stdout]    |                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gen_broken_range`
[INFO] [stdout]   --> src/gamestate.rs:22:20
[INFO] [stdout]    |
[INFO] [stdout] 22 | use crate::utils::{gen_broken_range, in_range, loc_shop_items};
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Comms`, `Convos`, `Npcs`, `get_comm`, `get_convo`, `get_npc_name`, `get_shop_convos`, `get_shops`, and `self`
[INFO] [stdout]  --> src/gamestate/enemy_encounter.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     self, get_ascii, get_comm, get_convo, get_npc_name, get_shop_convos, get_shops, Ascii, Comms,
[INFO] [stdout]   |     ^^^^             ^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^         ^^^^^
[INFO] [stdout] 4 |     Convos, Npcs,
[INFO] [stdout]   |     ^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Enemies`
[INFO] [stdout]  --> src/gamestate/enemy_encounter.rs:9:42
[INFO] [stdout]   |
[INFO] [stdout] 9 |     AniType, EncMode, EncOpt, EncResult, Enemies, Equip, ExpType, FightSteps, GameMode,
[INFO] [stdout]   |                                          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DisplayStats`
[INFO] [stdout]   --> src/gamestate/enemy_encounter.rs:13:35
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::gui_utils::{Animation, DisplayStats, GuiArgs};
[INFO] [stdout]    |                                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::ascii`
[INFO] [stdout]   --> src/gamestate/enemy_encounter.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use core::ascii;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Comms`, `Convos`, `get_comm`, `get_convo`, `get_npc_name`, `get_shop_convos`, and `get_shops`
[INFO] [stdout]  --> src/gamestate/environment_interactions.rs:3:16
[INFO] [stdout]   |
[INFO] [stdout] 3 |     get_ascii, get_comm, get_convo, get_hermit_convo, get_npc_name, get_shop_convos, get_shops,
[INFO] [stdout]   |                ^^^^^^^^  ^^^^^^^^^                    ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 4 |     Ascii, Comms, Convos, Npcs,
[INFO] [stdout]   |            ^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PuzzlePiece` and `PuzzleType`
[INFO] [stdout]   --> src/gamestate/environment_interactions.rs:10:70
[INFO] [stdout]    |
[INFO] [stdout] 10 |     Door, EnvInter, GameMode, Interactable, Items, Location, Plants, PuzzlePiece, PuzzleType,
[INFO] [stdout]    |                                                                      ^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DisplayStats`
[INFO] [stdout]   --> src/gamestate/environment_interactions.rs:13:24
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::gui_utils::{DisplayStats, GuiArgs};
[INFO] [stdout]    |                        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PuzzleDoor` and `PuzzleKey`
[INFO] [stdout]   --> src/gamestate/environment_interactions.rs:15:29
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::puzzle::{Puzzle, PuzzleDoor, PuzzleKey};
[INFO] [stdout]    |                             ^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::shop::Shop`
[INFO] [stdout]   --> src/gamestate/environment_interactions.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::shop::Shop;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `TaskType` and `self`
[INFO] [stdout]   --> src/gamestate/environment_interactions.rs:17:20
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::tasks::{self, Task, TaskType};
[INFO] [stdout]    |                    ^^^^        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `GUIMode`
[INFO] [stdout]  --> src/gamestate/inventory_state.rs:3:20
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::enums::{GUIMode, GameMode, InterOpt, ItemOpt};
[INFO] [stdout]   |                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DisplayStats`
[INFO] [stdout]  --> src/gamestate/npc_interactions.rs:7:24
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::gui_utils::{DisplayStats, GuiArgs};
[INFO] [stdout]   |                        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_shops`
[INFO] [stdout]  --> src/gamestate/npcs.rs:2:40
[INFO] [stdout]   |
[INFO] [stdout] 2 |     get_comm, get_convo, get_npc_name, get_shops, get_spawn_comm, get_spawn_convo, get_trade_convo,
[INFO] [stdout]   |                                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Cells`, `CompMode`, `EnvInter`, `GUIMode`, `GameMode`, `Interactable`, and `NPCWrap`
[INFO] [stdout]  --> src/gamestate/puzzle_state.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 |     Cells, CompMode, EnvInter, GUIMode, GameMode, Interactable, Location, NPCWrap, PuzzlePiece,
[INFO] [stdout]   |     ^^^^^  ^^^^^^^^  ^^^^^^^^  ^^^^^^^  ^^^^^^^^  ^^^^^^^^^^^^            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::gui_utils::GuiArgs`
[INFO] [stdout]  --> src/gamestate/puzzle_state.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::gui_utils::GuiArgs;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::settlement::Settlement`
[INFO] [stdout]   --> src/gamestate/puzzle_state.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::settlement::Settlement;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::item::Item`
[INFO] [stdout]   --> src/gamestate/puzzle_state.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::item::Item;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Instant`
[INFO] [stdout]   --> src/gamestate/puzzle_state.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::time::Instant;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::gamestate::in_range`
[INFO] [stdout]   --> src/gamestate/puzzle_state.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::gamestate::in_range;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::gamestate::loc_shop_items`
[INFO] [stdout]   --> src/gamestate/puzzle_state.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::gamestate::loc_shop_items;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Event`, `KeyCode`, `poll`, and `read`
[INFO] [stdout]   --> src/gamestate/puzzle_state.rs:19:33
[INFO] [stdout]    |
[INFO] [stdout] 19 | use ratatui::crossterm::event::{poll, read, Event, KeyCode};
[INFO] [stdout]    |                                 ^^^^  ^^^^  ^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `NPCWrap`
[INFO] [stdout]  --> src/gamestate/settle_state.rs:4:63
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::enums::{GUIMode, GameMode, Interactable, Location, NPCWrap, ShopItem};
[INFO] [stdout]   |                                                               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ShopNPC`
[INFO] [stdout]  --> src/gamestate/settle_state.rs:8:18
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::npc::{ShopNPC, NPC};
[INFO] [stdout]   |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::item::Item`
[INFO] [stdout]   --> src/gamestate/settle_state.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::item::Item;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]   --> src/gamestate.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 41 | use rand::Rng;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]   --> src/gamestate.rs:43:5
[INFO] [stdout]    |
[INFO] [stdout] 43 | use std::fs;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Stylize`
[INFO] [stdout]   --> src/gui_utils.rs:16:36
[INFO] [stdout]    |
[INFO] [stdout] 16 | use ratatui::style::{Color, Style, Stylize};
[INFO] [stdout]    |                                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::npc::NPC`
[INFO] [stdout]  --> src/gamestate/puzzle_state.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::npc::NPC;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `NPC`
[INFO] [stdout]  --> src/gamestate/settle_state.rs:8:27
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::npc::{ShopNPC, NPC};
[INFO] [stdout]   |                           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `door`
[INFO] [stdout]    --> src/assets.rs:396:24
[INFO] [stdout]     |
[INFO] [stdout] 396 |         EnvInter::Door(door) => "door".to_string(),
[INFO] [stdout]     |                        ^^^^ help: if this is intentional, prefix it with an underscore: `_door`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `task_env`
[INFO] [stdout]    --> src/assets.rs:411:27
[INFO] [stdout]     |
[INFO] [stdout] 411 |         EnvInter::TaskEnv(task_env) => "settler".to_string(),
[INFO] [stdout]     |                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_task_env`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/assets.rs:421:9
[INFO] [stdout]     |
[INFO] [stdout] 421 |         _ => "".to_string(),
[INFO] [stdout]     |         ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/assets.rs:421:9
[INFO] [stdout]     |
[INFO] [stdout] 419 |         PuzzlePiece::PuzzleDoor(_) => "puzzle-door".to_string(),
[INFO] [stdout]     |         -------------------------- matches some of the same values
[INFO] [stdout] 420 |         PuzzlePiece::PuzzleKey(_) => "puzzle-key".to_string(),
[INFO] [stdout]     |         ------------------------- matches some of the same values
[INFO] [stdout] 421 |         _ => "".to_string(),
[INFO] [stdout]     |         ^ collectively making this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Stylize`
[INFO] [stdout]   --> src/gui_utils.rs:16:36
[INFO] [stdout]    |
[INFO] [stdout] 16 | use ratatui::style::{Color, Style, Stylize};
[INFO] [stdout]    |                                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::npc::NPC`
[INFO] [stdout]  --> src/gamestate/puzzle_state.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::npc::NPC;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `NPC`
[INFO] [stdout]  --> src/gamestate/settle_state.rs:8:27
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::npc::{ShopNPC, NPC};
[INFO] [stdout]   |                           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `door`
[INFO] [stdout]    --> src/assets.rs:396:24
[INFO] [stdout]     |
[INFO] [stdout] 396 |         EnvInter::Door(door) => "door".to_string(),
[INFO] [stdout]     |                        ^^^^ help: if this is intentional, prefix it with an underscore: `_door`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `task_env`
[INFO] [stdout]    --> src/assets.rs:411:27
[INFO] [stdout]     |
[INFO] [stdout] 411 |         EnvInter::TaskEnv(task_env) => "settler".to_string(),
[INFO] [stdout]     |                           ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_task_env`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/assets.rs:421:9
[INFO] [stdout]     |
[INFO] [stdout] 421 |         _ => "".to_string(),
[INFO] [stdout]     |         ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/assets.rs:421:9
[INFO] [stdout]     |
[INFO] [stdout] 419 |         PuzzlePiece::PuzzleDoor(_) => "puzzle-door".to_string(),
[INFO] [stdout]     |         -------------------------- matches some of the same values
[INFO] [stdout] 420 |         PuzzlePiece::PuzzleKey(_) => "puzzle-key".to_string(),
[INFO] [stdout]     |         ------------------------- matches some of the same values
[INFO] [stdout] 421 |         _ => "".to_string(),
[INFO] [stdout]     |         ^ collectively making this unreachable
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]   --> src/gui/gui_man_draw.rs:48:26
[INFO] [stdout]    |
[INFO] [stdout] 48 |                     let [area] = vertical.areas(a);
[INFO] [stdout]    |                          ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chunks`
[INFO] [stdout]   --> src/gui/gui_man_draw.rs:25:21
[INFO] [stdout]    |
[INFO] [stdout] 25 |                 let chunks = Layout::default()
[INFO] [stdout]    |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_chunks`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]    --> src/gui/gui_man_draw.rs:187:26
[INFO] [stdout]     |
[INFO] [stdout] 187 |                     let [area] = vertical.areas(a);
[INFO] [stdout]     |                          ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `door`
[INFO] [stdout]    --> src/gui/gui_man_draw.rs:493:53
[INFO] [stdout]     |
[INFO] [stdout] 493 | ...                   PuzzlePiece::PuzzleDoor(door) => adj_list.push((
[INFO] [stdout]     |                                               ^^^^ help: if this is intentional, prefix it with an underscore: `_door`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]    --> src/gui/gui_man_draw.rs:499:52
[INFO] [stdout]     |
[INFO] [stdout] 499 | ...                   PuzzlePiece::PuzzleKey(key) => adj_list.push((
[INFO] [stdout]     |                                              ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]    --> src/gui/npc_interactions.rs:165:26
[INFO] [stdout]     |
[INFO] [stdout] 165 |                     let [area] = vertical.areas(a);
[INFO] [stdout]     |                          ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]    --> src/gui/npc_interactions.rs:596:26
[INFO] [stdout]     |
[INFO] [stdout] 596 |                     let [area] = vertical.areas(a);
[INFO] [stdout]     |                          ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]   --> src/gui/gui_man_draw.rs:48:26
[INFO] [stdout]    |
[INFO] [stdout] 48 |                     let [area] = vertical.areas(a);
[INFO] [stdout]    |                          ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `chunks`
[INFO] [stdout]   --> src/gui/gui_man_draw.rs:25:21
[INFO] [stdout]    |
[INFO] [stdout] 25 |                 let chunks = Layout::default()
[INFO] [stdout]    |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_chunks`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]    --> src/gui/gui_man_draw.rs:187:26
[INFO] [stdout]     |
[INFO] [stdout] 187 |                     let [area] = vertical.areas(a);
[INFO] [stdout]     |                          ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `door`
[INFO] [stdout]    --> src/gui/gui_man_draw.rs:493:53
[INFO] [stdout]     |
[INFO] [stdout] 493 | ...                   PuzzlePiece::PuzzleDoor(door) => adj_list.push((
[INFO] [stdout]     |                                               ^^^^ help: if this is intentional, prefix it with an underscore: `_door`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]    --> src/gui/gui_man_draw.rs:499:52
[INFO] [stdout]     |
[INFO] [stdout] 499 | ...                   PuzzlePiece::PuzzleKey(key) => adj_list.push((
[INFO] [stdout]     |                                              ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]    --> src/gui/npc_interactions.rs:165:26
[INFO] [stdout]     |
[INFO] [stdout] 165 |                     let [area] = vertical.areas(a);
[INFO] [stdout]     |                          ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]    --> src/gui/environment_interactions.rs:194:22
[INFO] [stdout]     |
[INFO] [stdout] 194 |                 let [area] = vertical.areas(a);
[INFO] [stdout]     |                      ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]    --> src/gui/npc_interactions.rs:596:26
[INFO] [stdout]     |
[INFO] [stdout] 596 |                     let [area] = vertical.areas(a);
[INFO] [stdout]     |                          ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]    --> src/gui/environment_interactions.rs:354:22
[INFO] [stdout]     |
[INFO] [stdout] 354 |                 let [area] = vertical.areas(a);
[INFO] [stdout]     |                      ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]    --> src/gui/environment_interactions.rs:780:22
[INFO] [stdout]     |
[INFO] [stdout] 780 |                 let [area] = vertical.areas(a);
[INFO] [stdout]     |                      ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]    --> src/gui/environment_interactions.rs:956:22
[INFO] [stdout]     |
[INFO] [stdout] 956 |                 let [area] = vertical.areas(a);
[INFO] [stdout]     |                      ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `in_h`
[INFO] [stdout]   --> src/gui.rs:93:9
[INFO] [stdout]    |
[INFO] [stdout] 93 |     let in_h = inner_area.height as usize;
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_in_h`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `in_w`
[INFO] [stdout]   --> src/gui.rs:94:9
[INFO] [stdout]    |
[INFO] [stdout] 94 |     let in_w = inner_area.width as usize;
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_in_w`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]    --> src/gui/environment_interactions.rs:194:22
[INFO] [stdout]     |
[INFO] [stdout] 194 |                 let [area] = vertical.areas(a);
[INFO] [stdout]     |                      ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]    --> src/gui/environment_interactions.rs:354:22
[INFO] [stdout]     |
[INFO] [stdout] 354 |                 let [area] = vertical.areas(a);
[INFO] [stdout]     |                      ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]    --> src/gui/environment_interactions.rs:780:22
[INFO] [stdout]     |
[INFO] [stdout] 780 |                 let [area] = vertical.areas(a);
[INFO] [stdout]     |                      ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]    --> src/gui/environment_interactions.rs:956:22
[INFO] [stdout]     |
[INFO] [stdout] 956 |                 let [area] = vertical.areas(a);
[INFO] [stdout]     |                      ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `in_h`
[INFO] [stdout]   --> src/gui.rs:93:9
[INFO] [stdout]    |
[INFO] [stdout] 93 |     let in_h = inner_area.height as usize;
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_in_h`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `in_w`
[INFO] [stdout]   --> src/gui.rs:94:9
[INFO] [stdout]    |
[INFO] [stdout] 94 |     let in_w = inner_area.width as usize;
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_in_w`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]     --> src/gui.rs:1310:26
[INFO] [stdout]      |
[INFO] [stdout] 1310 |                     let [area] = vertical.areas(a);
[INFO] [stdout]      |                          ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `b`
[INFO] [stdout]     --> src/gui.rs:1305:21
[INFO] [stdout]      |
[INFO] [stdout] 1305 |                 let b = Block::bordered();
[INFO] [stdout]      |                     ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `env_col`
[INFO] [stdout]    --> src/gui_utils.rs:248:25
[INFO] [stdout]     |
[INFO] [stdout] 248 |                     let env_col = {
[INFO] [stdout]     |                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_env_col`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `area`
[INFO] [stdout]     --> src/gui.rs:1310:26
[INFO] [stdout]      |
[INFO] [stdout] 1310 |                     let [area] = vertical.areas(a);
[INFO] [stdout]      |                          ^^^^ help: if this is intentional, prefix it with an underscore: `_area`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `b`
[INFO] [stdout]     --> src/gui.rs:1305:21
[INFO] [stdout]      |
[INFO] [stdout] 1305 |                 let b = Block::bordered();
[INFO] [stdout]      |                     ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `px` is never read
[INFO] [stdout]    --> src/map.rs:246:22
[INFO] [stdout]     |
[INFO] [stdout] 246 |         let mut px = 0;
[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: value assigned to `py` is never read
[INFO] [stdout]    --> src/map.rs:247:22
[INFO] [stdout]     |
[INFO] [stdout] 247 |         let mut py = 0;
[INFO] [stdout]     |                      ^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `env_col`
[INFO] [stdout]    --> src/gui_utils.rs:248:25
[INFO] [stdout]     |
[INFO] [stdout] 248 |                     let env_col = {
[INFO] [stdout]     |                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_env_col`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `px` is never read
[INFO] [stdout]    --> src/map.rs:246:22
[INFO] [stdout]     |
[INFO] [stdout] 246 |         let mut px = 0;
[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: value assigned to `py` is never read
[INFO] [stdout]    --> src/map.rs:247:22
[INFO] [stdout]     |
[INFO] [stdout] 247 |         let mut py = 0;
[INFO] [stdout]     |                      ^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `def_name`
[INFO] [stdout]    --> src/parsing.rs:204:21
[INFO] [stdout]     |
[INFO] [stdout] 204 |                 let def_name = "Kevthony".to_string();
[INFO] [stdout]     |                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_def_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `def_name`
[INFO] [stdout]    --> src/parsing.rs:204:21
[INFO] [stdout]     |
[INFO] [stdout] 204 |                 let def_name = "Kevthony".to_string();
[INFO] [stdout]     |                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_def_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `env_inters`
[INFO] [stdout]     --> src/puzzle.rs:2010:32
[INFO] [stdout]      |
[INFO] [stdout] 2010 |         let (map, npcs, items, env_inters) = make_ruin();
[INFO] [stdout]      |                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_env_inters`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `env_inters`
[INFO] [stdout]     --> src/puzzle.rs:2043:32
[INFO] [stdout]      |
[INFO] [stdout] 2043 |         let (map, npcs, items, env_inters, doors, keys) = make_key_ruin();
[INFO] [stdout]      |                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_env_inters`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cells`
[INFO] [stdout]    --> src/settlement/guild_settle.rs:269:9
[INFO] [stdout]     |
[INFO] [stdout] 269 |     let cells = vec![vec![Cells::Empty; 128]; 52];
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_cells`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `env_inters`
[INFO] [stdout]     --> src/puzzle.rs:2010:32
[INFO] [stdout]      |
[INFO] [stdout] 2010 |         let (map, npcs, items, env_inters) = make_ruin();
[INFO] [stdout]      |                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_env_inters`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `essential`
[INFO] [stdout]    --> src/settlement/med_settle.rs:103:9
[INFO] [stdout]     |
[INFO] [stdout] 103 |     let essential = vec![
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_essential`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `env_inters`
[INFO] [stdout]     --> src/puzzle.rs:2043:32
[INFO] [stdout]      |
[INFO] [stdout] 2043 |         let (map, npcs, items, env_inters, doors, keys) = make_key_ruin();
[INFO] [stdout]      |                                ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_env_inters`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/settlement/obsidian_settle.rs:248:9
[INFO] [stdout]     |
[INFO] [stdout] 248 |         _ => todo!(),
[INFO] [stdout]     |         ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/settlement/obsidian_settle.rs:248:9
[INFO] [stdout]     |
[INFO] [stdout] 245 |         true => OBSIDIAN_WALLS_BOTTOM,
[INFO] [stdout]     |         ---- matches some of the same values
[INFO] [stdout] 246 |         false => OBSIDIAN_WALLS_BOTTOM,
[INFO] [stdout]     |         ----- matches some of the same values
[INFO] [stdout] 247 |         // false => GUILD_WALLS_RIGHT,
[INFO] [stdout] 248 |         _ => todo!(),
[INFO] [stdout]     |         ^ collectively making this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cells`
[INFO] [stdout]    --> src/settlement/guild_settle.rs:269:9
[INFO] [stdout]     |
[INFO] [stdout] 269 |     let cells = vec![vec![Cells::Empty; 128]; 52];
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_cells`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `essential`
[INFO] [stdout]    --> src/settlement/med_settle.rs:103:9
[INFO] [stdout]     |
[INFO] [stdout] 103 |     let essential = vec![
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_essential`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/settlement/obsidian_settle.rs:248:9
[INFO] [stdout]     |
[INFO] [stdout] 248 |         _ => todo!(),
[INFO] [stdout]     |         ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/settlement/obsidian_settle.rs:248:9
[INFO] [stdout]     |
[INFO] [stdout] 245 |         true => OBSIDIAN_WALLS_BOTTOM,
[INFO] [stdout]     |         ---- matches some of the same values
[INFO] [stdout] 246 |         false => OBSIDIAN_WALLS_BOTTOM,
[INFO] [stdout]     |         ----- matches some of the same values
[INFO] [stdout] 247 |         // false => GUILD_WALLS_RIGHT,
[INFO] [stdout] 248 |         _ => todo!(),
[INFO] [stdout]     |         ^ collectively making this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `def_name`
[INFO] [stdout]    --> src/settlement.rs:324:21
[INFO] [stdout]     |
[INFO] [stdout] 324 |                 let def_name = "Kevthony".to_string();
[INFO] [stdout]     |                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_def_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `npcs`
[INFO] [stdout]    --> src/settlement.rs:784:41
[INFO] [stdout]     |
[INFO] [stdout] 784 |     pub fn demo_settle(pos: (i16, i16), npcs: HashMap<(usize, usize), NPCWrap>) -> Self {
[INFO] [stdout]     |                                         ^^^^ help: if this is intentional, prefix it with an underscore: `_npcs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]    --> src/settlement.rs:987:28
[INFO] [stdout]     |
[INFO] [stdout] 987 |                 .filter(|&(p, e)| e == EnvInter::TaskEnv(TaskEnv::Null))
[INFO] [stdout]     |                            ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `task`
[INFO] [stdout]    --> src/settlements.rs:137:37
[INFO] [stdout]     |
[INFO] [stdout] 137 |     fn set_pass_item_content(&self, task: Task) {
[INFO] [stdout]     |                                     ^^^^ help: if this is intentional, prefix it with an underscore: `_task`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `task`
[INFO] [stdout]    --> src/settlements.rs:141:36
[INFO] [stdout]     |
[INFO] [stdout] 141 |     fn set_pass_msg_content(&self, task: Task) {
[INFO] [stdout]     |                                    ^^^^ help: if this is intentional, prefix it with an underscore: `_task`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `def_name`
[INFO] [stdout]    --> src/settlement.rs:324:21
[INFO] [stdout]     |
[INFO] [stdout] 324 |                 let def_name = "Kevthony".to_string();
[INFO] [stdout]     |                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_def_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `npcs`
[INFO] [stdout]    --> src/settlement.rs:784:41
[INFO] [stdout]     |
[INFO] [stdout] 784 |     pub fn demo_settle(pos: (i16, i16), npcs: HashMap<(usize, usize), NPCWrap>) -> Self {
[INFO] [stdout]     |                                         ^^^^ help: if this is intentional, prefix it with an underscore: `_npcs`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `null_comms`
[INFO] [stdout]    --> src/tasks.rs:119:13
[INFO] [stdout]     |
[INFO] [stdout] 119 |         let null_comms = vec!["Hey there."];
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_null_comms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]    --> src/settlement.rs:987:28
[INFO] [stdout]     |
[INFO] [stdout] 987 |                 .filter(|&(p, e)| e == EnvInter::TaskEnv(TaskEnv::Null))
[INFO] [stdout]     |                            ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `task`
[INFO] [stdout]    --> src/settlements.rs:137:37
[INFO] [stdout]     |
[INFO] [stdout] 137 |     fn set_pass_item_content(&self, task: Task) {
[INFO] [stdout]     |                                     ^^^^ help: if this is intentional, prefix it with an underscore: `_task`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `task`
[INFO] [stdout]    --> src/settlements.rs:141:36
[INFO] [stdout]     |
[INFO] [stdout] 141 |     fn set_pass_msg_content(&self, task: Task) {
[INFO] [stdout]     |                                    ^^^^ help: if this is intentional, prefix it with an underscore: `_task`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `null_comms`
[INFO] [stdout]    --> src/tasks.rs:119:13
[INFO] [stdout]     |
[INFO] [stdout] 119 |         let null_comms = vec!["Hey there."];
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_null_comms`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `res`
[INFO] [stdout]    --> src/gamestate/enemy_encounter.rs:107:29
[INFO] [stdout]     |
[INFO] [stdout] 107 |                         let res = self.enc_key(event.code);
[INFO] [stdout]     |                             ^^^ help: if this is intentional, prefix it with an underscore: `_res`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `res`
[INFO] [stdout]    --> src/gamestate/enemy_encounter.rs:161:29
[INFO] [stdout]     |
[INFO] [stdout] 161 |                         let res = self.enc_key(event.code);
[INFO] [stdout]     |                             ^^^ help: if this is intentional, prefix it with an underscore: `_res`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `turn`
[INFO] [stdout]    --> src/gamestate/enemy_encounter.rs:183:13
[INFO] [stdout]     |
[INFO] [stdout] 183 |         let turn = self.enemy_turn(enemy.clone());
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_turn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lturn`
[INFO] [stdout]    --> src/gamestate/enemy_encounter.rs:190:13
[INFO] [stdout]     |
[INFO] [stdout] 190 |         let lturn = self.player.get_last_turn();
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_lturn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/gamestate/environment_interactions.rs:145:17
[INFO] [stdout]     |
[INFO] [stdout] 145 |                 _ => "dunno".to_string(),
[INFO] [stdout]     |                 ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/gamestate/environment_interactions.rs:145:17
[INFO] [stdout]     |
[INFO] [stdout] 141 |                 Puzzle::Maze { .. } => "Maze".to_string(),
[INFO] [stdout]     |                 ------------------- matches some of the same values
[INFO] [stdout] 142 |                 Puzzle::Ruin { .. } => "Ruin".to_string(),
[INFO] [stdout]     |                 ------------------- matches some of the same values
[INFO] [stdout] 143 |                 Puzzle::Flip { .. } => "Flip".to_string(),
[INFO] [stdout]     |                 ------------------- matches some of the same values
[INFO] [stdout] 144 |                 Puzzle::KeyRuin { .. } => "KeyRuin".to_string(),
[INFO] [stdout]     |                 ---------------------- matches some of the same values
[INFO] [stdout] 145 |                 _ => "dunno".to_string(),
[INFO] [stdout]     |                 ^ collectively making this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/gamestate/environment_interactions.rs:128:20
[INFO] [stdout]     |
[INFO] [stdout] 128 |         for (ppos, mut p) in local_puzzles {
[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: `res`
[INFO] [stdout]    --> src/gamestate/enemy_encounter.rs:107:29
[INFO] [stdout]     |
[INFO] [stdout] 107 |                         let res = self.enc_key(event.code);
[INFO] [stdout]     |                             ^^^ help: if this is intentional, prefix it with an underscore: `_res`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `res`
[INFO] [stdout]    --> src/gamestate/enemy_encounter.rs:161:29
[INFO] [stdout]     |
[INFO] [stdout] 161 |                         let res = self.enc_key(event.code);
[INFO] [stdout]     |                             ^^^ help: if this is intentional, prefix it with an underscore: `_res`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `turn`
[INFO] [stdout]    --> src/gamestate/enemy_encounter.rs:183:13
[INFO] [stdout]     |
[INFO] [stdout] 183 |         let turn = self.enemy_turn(enemy.clone());
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_turn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lturn`
[INFO] [stdout]    --> src/gamestate/enemy_encounter.rs:190:13
[INFO] [stdout]     |
[INFO] [stdout] 190 |         let lturn = self.player.get_last_turn();
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_lturn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/gamestate/environment_interactions.rs:145:17
[INFO] [stdout]     |
[INFO] [stdout] 145 |                 _ => "dunno".to_string(),
[INFO] [stdout]     |                 ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/gamestate/environment_interactions.rs:145:17
[INFO] [stdout]     |
[INFO] [stdout] 141 |                 Puzzle::Maze { .. } => "Maze".to_string(),
[INFO] [stdout]     |                 ------------------- matches some of the same values
[INFO] [stdout] 142 |                 Puzzle::Ruin { .. } => "Ruin".to_string(),
[INFO] [stdout]     |                 ------------------- matches some of the same values
[INFO] [stdout] 143 |                 Puzzle::Flip { .. } => "Flip".to_string(),
[INFO] [stdout]     |                 ------------------- matches some of the same values
[INFO] [stdout] 144 |                 Puzzle::KeyRuin { .. } => "KeyRuin".to_string(),
[INFO] [stdout]     |                 ---------------------- matches some of the same values
[INFO] [stdout] 145 |                 _ => "dunno".to_string(),
[INFO] [stdout]     |                 ^ collectively making this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/gamestate/environment_interactions.rs:128:20
[INFO] [stdout]     |
[INFO] [stdout] 128 |         for (ppos, mut p) in local_puzzles {
[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: variable does not need to be mutable
[INFO] [stdout]    --> src/gamestate/environment_interactions.rs:898:39
[INFO] [stdout]     |
[INFO] [stdout] 898 |     fn retrieve_item_final(&mut self, mut task: Task) {
[INFO] [stdout]     |                                       ----^^^^
[INFO] [stdout]     |                                       |
[INFO] [stdout]     |                                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/gamestate/interactions.rs:90:13
[INFO] [stdout]    |
[INFO] [stdout] 90 |             _ => todo!(),
[INFO] [stdout]    |             ^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]   --> src/gamestate/interactions.rs:90:13
[INFO] [stdout]    |
[INFO] [stdout] 80 |             Interactable::Item(item) => {
[INFO] [stdout]    |             ------------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 84 |             Interactable::ShopItem(sitem) => {}
[INFO] [stdout]    |             ----------------------------- matches some of the same values
[INFO] [stdout] 85 |             Interactable::Enemy(enemy) => {}
[INFO] [stdout]    |             -------------------------- matches some of the same values
[INFO] [stdout] 86 |             Interactable::NPC(npc) => {}
[INFO] [stdout]    |             ---------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 90 |             _ => todo!(),
[INFO] [stdout]    |             ^ ...and 3 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `st`
[INFO] [stdout]   --> src/gamestate/interactions.rs:73:19
[INFO] [stdout]    |
[INFO] [stdout] 73 |         let (pos, st) = self.gui.get_interactee();
[INFO] [stdout]    |                   ^^ help: if this is intentional, prefix it with an underscore: `_st`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sitem`
[INFO] [stdout]   --> src/gamestate/interactions.rs:84:36
[INFO] [stdout]    |
[INFO] [stdout] 84 |             Interactable::ShopItem(sitem) => {}
[INFO] [stdout]    |                                    ^^^^^ help: if this is intentional, prefix it with an underscore: `_sitem`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enemy`
[INFO] [stdout]   --> src/gamestate/interactions.rs:85:33
[INFO] [stdout]    |
[INFO] [stdout] 85 |             Interactable::Enemy(enemy) => {}
[INFO] [stdout]    |                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_enemy`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `npc`
[INFO] [stdout]   --> src/gamestate/interactions.rs:86:31
[INFO] [stdout]    |
[INFO] [stdout] 86 |             Interactable::NPC(npc) => {}
[INFO] [stdout]    |                               ^^^ help: if this is intentional, prefix it with an underscore: `_npc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `env_inter`
[INFO] [stdout]   --> src/gamestate/interactions.rs:87:36
[INFO] [stdout]    |
[INFO] [stdout] 87 |             Interactable::EnvInter(env_inter) => {}
[INFO] [stdout]    |                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_env_inter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `puz_piece`
[INFO] [stdout]   --> src/gamestate/interactions.rs:88:39
[INFO] [stdout]    |
[INFO] [stdout] 88 |             Interactable::PuzzlePiece(puz_piece) => {}
[INFO] [stdout]    |                                       ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_puz_piece`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `itm`
[INFO] [stdout]   --> src/gamestate/interactions.rs:96:21
[INFO] [stdout]    |
[INFO] [stdout] 96 |         if let Some(itm) = self.items.remove(&(item.x, item.y)) {}
[INFO] [stdout]    |                     ^^^ help: if this is intentional, prefix it with an underscore: `_itm`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/gamestate/interactions.rs:196:13
[INFO] [stdout]     |
[INFO] [stdout] 196 |             _ => todo!(),
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/gamestate/interactions.rs:196:13
[INFO] [stdout]     |
[INFO] [stdout] 186 |             Interactable::Item(_) => self.item_interaction(),
[INFO] [stdout]     |             --------------------- matches some of the same values
[INFO] [stdout] 187 |             Interactable::ShopItem(si) => self.shop_item_interaction(si),
[INFO] [stdout]     |             -------------------------- matches some of the same values
[INFO] [stdout] 188 |             Interactable::NPC(_) => self.npc_interaction(),
[INFO] [stdout]     |             -------------------- matches some of the same values
[INFO] [stdout] 189 |             Interactable::Enemy(e) => {
[INFO] [stdout]     |             ---------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 196 |             _ => todo!(),
[INFO] [stdout]     |             ^ ...and 3 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/gamestate/environment_interactions.rs:898:39
[INFO] [stdout]     |
[INFO] [stdout] 898 |     fn retrieve_item_final(&mut self, mut task: Task) {
[INFO] [stdout]     |                                       ----^^^^
[INFO] [stdout]     |                                       |
[INFO] [stdout]     |                                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/gamestate/interactions.rs:90:13
[INFO] [stdout]    |
[INFO] [stdout] 90 |             _ => todo!(),
[INFO] [stdout]    |             ^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]   --> src/gamestate/interactions.rs:90:13
[INFO] [stdout]    |
[INFO] [stdout] 80 |             Interactable::Item(item) => {
[INFO] [stdout]    |             ------------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 84 |             Interactable::ShopItem(sitem) => {}
[INFO] [stdout]    |             ----------------------------- matches some of the same values
[INFO] [stdout] 85 |             Interactable::Enemy(enemy) => {}
[INFO] [stdout]    |             -------------------------- matches some of the same values
[INFO] [stdout] 86 |             Interactable::NPC(npc) => {}
[INFO] [stdout]    |             ---------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 90 |             _ => todo!(),
[INFO] [stdout]    |             ^ ...and 3 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `st`
[INFO] [stdout]   --> src/gamestate/interactions.rs:73:19
[INFO] [stdout]    |
[INFO] [stdout] 73 |         let (pos, st) = self.gui.get_interactee();
[INFO] [stdout]    |                   ^^ help: if this is intentional, prefix it with an underscore: `_st`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sitem`
[INFO] [stdout]   --> src/gamestate/interactions.rs:84:36
[INFO] [stdout]    |
[INFO] [stdout] 84 |             Interactable::ShopItem(sitem) => {}
[INFO] [stdout]    |                                    ^^^^^ help: if this is intentional, prefix it with an underscore: `_sitem`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `enemy`
[INFO] [stdout]   --> src/gamestate/interactions.rs:85:33
[INFO] [stdout]    |
[INFO] [stdout] 85 |             Interactable::Enemy(enemy) => {}
[INFO] [stdout]    |                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_enemy`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `npc`
[INFO] [stdout]   --> src/gamestate/interactions.rs:86:31
[INFO] [stdout]    |
[INFO] [stdout] 86 |             Interactable::NPC(npc) => {}
[INFO] [stdout]    |                               ^^^ help: if this is intentional, prefix it with an underscore: `_npc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `env_inter`
[INFO] [stdout]   --> src/gamestate/interactions.rs:87:36
[INFO] [stdout]    |
[INFO] [stdout] 87 |             Interactable::EnvInter(env_inter) => {}
[INFO] [stdout]    |                                    ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_env_inter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `puz_piece`
[INFO] [stdout]   --> src/gamestate/interactions.rs:88:39
[INFO] [stdout]    |
[INFO] [stdout] 88 |             Interactable::PuzzlePiece(puz_piece) => {}
[INFO] [stdout]    |                                       ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_puz_piece`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `itm`
[INFO] [stdout]   --> src/gamestate/interactions.rs:96:21
[INFO] [stdout]    |
[INFO] [stdout] 96 |         if let Some(itm) = self.items.remove(&(item.x, item.y)) {}
[INFO] [stdout]    |                     ^^^ help: if this is intentional, prefix it with an underscore: `_itm`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/gamestate/interactions.rs:196:13
[INFO] [stdout]     |
[INFO] [stdout] 196 |             _ => todo!(),
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/gamestate/interactions.rs:196:13
[INFO] [stdout]     |
[INFO] [stdout] 186 |             Interactable::Item(_) => self.item_interaction(),
[INFO] [stdout]     |             --------------------- matches some of the same values
[INFO] [stdout] 187 |             Interactable::ShopItem(si) => self.shop_item_interaction(si),
[INFO] [stdout]     |             -------------------------- matches some of the same values
[INFO] [stdout] 188 |             Interactable::NPC(_) => self.npc_interaction(),
[INFO] [stdout]     |             -------------------- matches some of the same values
[INFO] [stdout] 189 |             Interactable::Enemy(e) => {
[INFO] [stdout]     |             ---------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 196 |             _ => todo!(),
[INFO] [stdout]     |             ^ ...and 3 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/gamestate/locations.rs:181:13
[INFO] [stdout]     |
[INFO] [stdout] 181 |             _ => false,
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/gamestate/locations.rs:181:13
[INFO] [stdout]     |
[INFO] [stdout] 165 |             Location::Null => false,
[INFO] [stdout]     |             -------------- matches some of the same values
[INFO] [stdout] 166 |             Location::Settlement(mut settle) => {
[INFO] [stdout]     |             -------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 171 |             Location::Puzzle(mut puzzle) => {
[INFO] [stdout]     |             ---------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 176 |             Location::Feature(puzzle) => {
[INFO] [stdout]     |             ------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 181 |             _ => false,
[INFO] [stdout]     |             ^ collectively making this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/gamestate/npc_interactions.rs:380:48
[INFO] [stdout]     |
[INFO] [stdout] 380 |             Interactable::NPC(NPCWrap::ShopNPC(mut shop_npc)) => {
[INFO] [stdout]     |                                                ----^^^^^^^^
[INFO] [stdout]     |                                                |
[INFO] [stdout]     |                                                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/gamestate/locations.rs:181:13
[INFO] [stdout]     |
[INFO] [stdout] 181 |             _ => false,
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/gamestate/locations.rs:181:13
[INFO] [stdout]     |
[INFO] [stdout] 165 |             Location::Null => false,
[INFO] [stdout]     |             -------------- matches some of the same values
[INFO] [stdout] 166 |             Location::Settlement(mut settle) => {
[INFO] [stdout]     |             -------------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 171 |             Location::Puzzle(mut puzzle) => {
[INFO] [stdout]     |             ---------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 176 |             Location::Feature(puzzle) => {
[INFO] [stdout]     |             ------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 181 |             _ => false,
[INFO] [stdout]     |             ^ collectively making this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/gamestate/npcs.rs:81:13
[INFO] [stdout]    |
[INFO] [stdout] 81 |         let mut rng = rand::thread_rng();
[INFO] [stdout]    |             ----^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rng`
[INFO] [stdout]   --> src/gamestate/npcs.rs:81:13
[INFO] [stdout]    |
[INFO] [stdout] 81 |         let mut rng = rand::thread_rng();
[INFO] [stdout]    |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/gamestate/npcs.rs:186:29
[INFO] [stdout]     |
[INFO] [stdout] 186 | ...                   _ => todo!(),
[INFO] [stdout]     |                       ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/gamestate/npcs.rs:186:29
[INFO] [stdout]     |
[INFO] [stdout] 178 | ...                   Puzzle::Maze { .. } => (PuzzleType::Maze, self.build_maze_npc(puzzle)),
[INFO] [stdout]     |                       ------------------- matches some of the same values
[INFO] [stdout] 179 | ...                   Puzzle::Ruin { .. } => (PuzzleType::Ruin, self.build_maze_npc(puzzle)),
[INFO] [stdout]     |                       ------------------- matches some of the same values
[INFO] [stdout] 180 | ...                   Puzzle::Flip { .. } => (PuzzleType::Flip, self.build_maze_npc(puzzle)),
[INFO] [stdout]     |                       ------------------- matches some of the same values
[INFO] [stdout] 181 | ...                   Puzzle::KeyRuin { .. } => {
[INFO] [stdout]     |                       ---------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 186 | ...                   _ => todo!(),
[INFO] [stdout]     |                       ^ collectively making this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/gamestate/npcs.rs:175:29
[INFO] [stdout]     |
[INFO] [stdout] 175 |                         let mut puzzle = self.puzzles.nearest_puzzle(self.dist_fo);
[INFO] [stdout]     |                             ----^^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `def_name`
[INFO] [stdout]    --> src/gamestate/npcs.rs:144:21
[INFO] [stdout]     |
[INFO] [stdout] 144 |                 let def_name = "Kevthony".to_string();
[INFO] [stdout]     |                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_def_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/gamestate/npc_interactions.rs:380:48
[INFO] [stdout]     |
[INFO] [stdout] 380 |             Interactable::NPC(NPCWrap::ShopNPC(mut shop_npc)) => {
[INFO] [stdout]     |                                                ----^^^^^^^^
[INFO] [stdout]     |                                                |
[INFO] [stdout]     |                                                help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]    --> src/gamestate/puzzle_state.rs:142:13
[INFO] [stdout]     |
[INFO] [stdout] 142 |         let key = self
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/gamestate/settle_state.rs:29:42
[INFO] [stdout]    |
[INFO] [stdout] 29 |     pub fn get_shop_from_item(&mut self, mut item: ShopItem) -> Shop {
[INFO] [stdout]    |                                          ----^^^^
[INFO] [stdout]    |                                          |
[INFO] [stdout]    |                                          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/gamestate/settle_state.rs:33:34
[INFO] [stdout]    |
[INFO] [stdout] 33 |             Location::Settlement(mut settle) => match item {
[INFO] [stdout]    |                                  ----^^^^^^
[INFO] [stdout]    |                                  |
[INFO] [stdout]    |                                  help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/gamestate/settle_state.rs:77:31
[INFO] [stdout]    |
[INFO] [stdout] 77 |             Location::Feature(mut feat) => match item {
[INFO] [stdout]    |                               ----^^^^
[INFO] [stdout]    |                               |
[INFO] [stdout]    |                               help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/gamestate/npcs.rs:81:13
[INFO] [stdout]    |
[INFO] [stdout] 81 |         let mut rng = rand::thread_rng();
[INFO] [stdout]    |             ----^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rng`
[INFO] [stdout]   --> src/gamestate/npcs.rs:81:13
[INFO] [stdout]    |
[INFO] [stdout] 81 |         let mut rng = rand::thread_rng();
[INFO] [stdout]    |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/gamestate/settle_state.rs:153:13
[INFO] [stdout]     |
[INFO] [stdout] 153 |             _ => todo!(),
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/gamestate/settle_state.rs:153:13
[INFO] [stdout]     |
[INFO] [stdout] 143 |             ShopItem::Item(itm) => itm,
[INFO] [stdout]     |             ------------------- matches some of the same values
[INFO] [stdout] 144 |             ShopItem::Herbalist(item) => item,
[INFO] [stdout]     |             ------------------------- matches some of the same values
[INFO] [stdout] 145 |             ShopItem::Weapon(item) => item,
[INFO] [stdout]     |             ---------------------- matches some of the same values
[INFO] [stdout] 146 |             ShopItem::Armor(item) => item,
[INFO] [stdout]     |             --------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 153 |             _ => todo!(),
[INFO] [stdout]     |             ^ ...and 6 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/gamestate/npcs.rs:186:29
[INFO] [stdout]     |
[INFO] [stdout] 186 | ...                   _ => todo!(),
[INFO] [stdout]     |                       ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/gamestate/npcs.rs:186:29
[INFO] [stdout]     |
[INFO] [stdout] 178 | ...                   Puzzle::Maze { .. } => (PuzzleType::Maze, self.build_maze_npc(puzzle)),
[INFO] [stdout]     |                       ------------------- matches some of the same values
[INFO] [stdout] 179 | ...                   Puzzle::Ruin { .. } => (PuzzleType::Ruin, self.build_maze_npc(puzzle)),
[INFO] [stdout]     |                       ------------------- matches some of the same values
[INFO] [stdout] 180 | ...                   Puzzle::Flip { .. } => (PuzzleType::Flip, self.build_maze_npc(puzzle)),
[INFO] [stdout]     |                       ------------------- matches some of the same values
[INFO] [stdout] 181 | ...                   Puzzle::KeyRuin { .. } => {
[INFO] [stdout]     |                       ---------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 186 | ...                   _ => todo!(),
[INFO] [stdout]     |                       ^ collectively making this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/gamestate/settle_state.rs:135:13
[INFO] [stdout]     |
[INFO] [stdout] 135 |         let mut sitem = {
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rem`
[INFO] [stdout]    --> src/gamestate/settle_state.rs:163:25
[INFO] [stdout]     |
[INFO] [stdout] 163 |                     let rem = shop.stock.remove(&((ipos.0) as usize, (ipos.1) as usize));
[INFO] [stdout]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_rem`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/gamestate/npcs.rs:175:29
[INFO] [stdout]     |
[INFO] [stdout] 175 |                         let mut puzzle = self.puzzles.nearest_puzzle(self.dist_fo);
[INFO] [stdout]     |                             ----^^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rem`
[INFO] [stdout]    --> src/gamestate/settle_state.rs:168:25
[INFO] [stdout]     |
[INFO] [stdout] 168 |                     let rem = shop.stock.remove(&((ipos.0) as usize, (ipos.1) as usize));
[INFO] [stdout]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_rem`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `def_name`
[INFO] [stdout]    --> src/gamestate/npcs.rs:144:21
[INFO] [stdout]     |
[INFO] [stdout] 144 |                 let def_name = "Kevthony".to_string();
[INFO] [stdout]     |                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_def_name`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/gamestate/settle_state.rs:228:45
[INFO] [stdout]     |
[INFO] [stdout] 228 |     pub fn shop_item_interaction(&mut self, mut sitem: ShopItem) -> bool {
[INFO] [stdout]     |                                             ----^^^^^
[INFO] [stdout]     |                                             |
[INFO] [stdout]     |                                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `buy_item` is never read
[INFO] [stdout]    --> src/gamestate/settle_state.rs:253:28
[INFO] [stdout]     |
[INFO] [stdout] 253 |         let mut buy_item = false;
[INFO] [stdout]     |                            ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/gamestate.rs:233:13
[INFO] [stdout]     |
[INFO] [stdout] 233 |         let mut tasks = Tasks::new();
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `l_rate`
[INFO] [stdout]    --> src/gamestate.rs:176:13
[INFO] [stdout]     |
[INFO] [stdout] 176 |         let l_rate = 100 as u64;
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_l_rate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]    --> src/gamestate/puzzle_state.rs:142:13
[INFO] [stdout]     |
[INFO] [stdout] 142 |         let key = self
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/gamestate/settle_state.rs:29:42
[INFO] [stdout]    |
[INFO] [stdout] 29 |     pub fn get_shop_from_item(&mut self, mut item: ShopItem) -> Shop {
[INFO] [stdout]    |                                          ----^^^^
[INFO] [stdout]    |                                          |
[INFO] [stdout]    |                                          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/gamestate/settle_state.rs:33:34
[INFO] [stdout]    |
[INFO] [stdout] 33 |             Location::Settlement(mut settle) => match item {
[INFO] [stdout]    |                                  ----^^^^^^
[INFO] [stdout]    |                                  |
[INFO] [stdout]    |                                  help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/gamestate/settle_state.rs:77:31
[INFO] [stdout]    |
[INFO] [stdout] 77 |             Location::Feature(mut feat) => match item {
[INFO] [stdout]    |                               ----^^^^
[INFO] [stdout]    |                               |
[INFO] [stdout]    |                               help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/gamestate/settle_state.rs:153:13
[INFO] [stdout]     |
[INFO] [stdout] 153 |             _ => todo!(),
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/gamestate/settle_state.rs:153:13
[INFO] [stdout]     |
[INFO] [stdout] 143 |             ShopItem::Item(itm) => itm,
[INFO] [stdout]     |             ------------------- matches some of the same values
[INFO] [stdout] 144 |             ShopItem::Herbalist(item) => item,
[INFO] [stdout]     |             ------------------------- matches some of the same values
[INFO] [stdout] 145 |             ShopItem::Weapon(item) => item,
[INFO] [stdout]     |             ---------------------- matches some of the same values
[INFO] [stdout] 146 |             ShopItem::Armor(item) => item,
[INFO] [stdout]     |             --------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 153 |             _ => todo!(),
[INFO] [stdout]     |             ^ ...and 6 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `day`
[INFO] [stdout]    --> src/gamestate.rs:421:13
[INFO] [stdout]     |
[INFO] [stdout] 421 |         let day = self.stats.world_stats.date.day;
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_day`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/gamestate/settle_state.rs:135:13
[INFO] [stdout]     |
[INFO] [stdout] 135 |         let mut sitem = {
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `month`
[INFO] [stdout]    --> src/gamestate.rs:422:13
[INFO] [stdout]     |
[INFO] [stdout] 422 |         let month = self.stats.world_stats.date.month;
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_month`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rem`
[INFO] [stdout]    --> src/gamestate/settle_state.rs:163:25
[INFO] [stdout]     |
[INFO] [stdout] 163 |                     let rem = shop.stock.remove(&((ipos.0) as usize, (ipos.1) as usize));
[INFO] [stdout]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_rem`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rem`
[INFO] [stdout]    --> src/gamestate/settle_state.rs:168:25
[INFO] [stdout]     |
[INFO] [stdout] 168 |                     let rem = shop.stock.remove(&((ipos.0) as usize, (ipos.1) as usize));
[INFO] [stdout]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_rem`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `year`
[INFO] [stdout]    --> src/gamestate.rs:423:13
[INFO] [stdout]     |
[INFO] [stdout] 423 |         let year = self.stats.world_stats.date.year;
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_year`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/gamestate/settle_state.rs:228:45
[INFO] [stdout]     |
[INFO] [stdout] 228 |     pub fn shop_item_interaction(&mut self, mut sitem: ShopItem) -> bool {
[INFO] [stdout]     |                                             ----^^^^^
[INFO] [stdout]     |                                             |
[INFO] [stdout]     |                                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `buy_item` is never read
[INFO] [stdout]    --> src/gamestate/settle_state.rs:253:28
[INFO] [stdout]     |
[INFO] [stdout] 253 |         let mut buy_item = false;
[INFO] [stdout]     |                            ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/gamestate.rs:233:13
[INFO] [stdout]     |
[INFO] [stdout] 233 |         let mut tasks = Tasks::new();
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `l_rate`
[INFO] [stdout]    --> src/gamestate.rs:176:13
[INFO] [stdout]     |
[INFO] [stdout] 176 |         let l_rate = 100 as u64;
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_l_rate`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `day`
[INFO] [stdout]    --> src/gamestate.rs:421:13
[INFO] [stdout]     |
[INFO] [stdout] 421 |         let day = self.stats.world_stats.date.day;
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_day`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `month`
[INFO] [stdout]    --> src/gamestate.rs:422:13
[INFO] [stdout]     |
[INFO] [stdout] 422 |         let month = self.stats.world_stats.date.month;
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_month`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `year`
[INFO] [stdout]    --> src/gamestate.rs:423:13
[INFO] [stdout]     |
[INFO] [stdout] 423 |         let year = self.stats.world_stats.date.year;
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_year`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CommDialogue` is never constructed
[INFO] [stdout]   --> src/assets.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct CommDialogue {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConvoDialogue` is never constructed
[INFO] [stdout]   --> src/assets.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct ConvoDialogue {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AssetType` is never used
[INFO] [stdout]   --> src/assets.rs:38:10
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub enum AssetType {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]    --> src/assets.rs:95:5
[INFO] [stdout]     |
[INFO] [stdout]  93 | pub enum Npcs {
[INFO] [stdout]     |          ---- variants in this enum
[INFO] [stdout]  94 |     Settler,
[INFO] [stdout]  95 |     GuildMember,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]  96 |     GuildHead,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]  97 |     ObsidianMember,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout]  98 |     ObsidianSteward,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]  99 |     ShopKeeper,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 100 |     Herbalist,
[INFO] [stdout] 101 |     Clinic,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 102 |     WeaponSmith,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 103 |     Armorer,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 104 |     Terminal,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Npcs` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_trade` is never used
[INFO] [stdout]    --> src/assets.rs:248:8
[INFO] [stdout]     |
[INFO] [stdout] 248 | pub fn get_trade() -> Vec<HashMap<String, String>> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_comms` is never used
[INFO] [stdout]    --> src/assets.rs:476:8
[INFO] [stdout]     |
[INFO] [stdout] 476 | pub fn load_comms(ntype: &String) -> CommDialogue {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_convos` is never used
[INFO] [stdout]    --> src/assets.rs:528:8
[INFO] [stdout]     |
[INFO] [stdout] 528 | pub fn load_convos(ntype: &String) -> ConvoDialogue {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CommDialogue` is never constructed
[INFO] [stdout]   --> src/dialogue.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct CommDialogue {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConvoDialogue` is never constructed
[INFO] [stdout]   --> src/dialogue.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct ConvoDialogue {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Dialogue` is never constructed
[INFO] [stdout]   --> src/dialogue.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct Dialogue {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_comms` is never used
[INFO] [stdout]   --> src/dialogue.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub fn load_comms(ntype: &String) -> CommDialogue {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_convos` is never used
[INFO] [stdout]   --> src/dialogue.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub fn load_convos(ntype: &String) -> ConvoDialogue {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/dialogue.rs:141:12
[INFO] [stdout]     |
[INFO] [stdout] 140 | impl Dialogue {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] 141 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn get_cave_comm(&mut self) -> &String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn get_guild_comm(&mut self) -> &String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub fn get_cult_comm(&mut self) -> &String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     pub fn get_cave_convo(&mut self) -> &Convo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     pub fn get_guild_convo(&mut self) -> &Convo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 299 |     pub fn get_cult_convo(&mut self) -> &Convo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 326 |     pub fn retrieve_new_dialogue(&mut self) {}
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PALLETE` is never used
[INFO] [stdout]  --> src/enemy.rs:4:7
[INFO] [stdout]   |
[INFO] [stdout] 4 | const PALLETE: &str = "empty: ' . , ' * | wall: ▒ | other ▓ ░ ~ | pipes: ═ ║ ╣ ╠ ╩ ╦ ╗ ╝ ╚ ╔ ╬   ┐ └ ┴ ┬ ├ ─ ┼ ┘ ┌ ┤ │ ≡ ° × ¤ ¸ ¨ · ...
[INFO] [stdout]   |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `set_pos`, and `inc_steps` are never used
[INFO] [stdout]    --> src/enemy.rs:25:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | impl Enemy {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout]  25 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 329 |     pub fn set_pos(&mut self, pos: (usize, usize)) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 349 |     pub fn inc_steps(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]    --> src/enums.rs:26:5
[INFO] [stdout]     |
[INFO] [stdout]  11 | pub enum Cells {
[INFO] [stdout]     |          ----- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout]  26 |     Moss,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     Tunnel,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     Inter,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     Exup,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     NPCM,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     Enemy,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 181 |     NPC,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     Herbalist,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Cells` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]    --> src/enums.rs:203:5
[INFO] [stdout]     |
[INFO] [stdout] 195 | pub enum Items {
[INFO] [stdout]     |          ----- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 203 |     WoodenBoard,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 204 |     IronSword,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 212 |     IronClaymore,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 217 |     SteelLongsword,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 218 |
[INFO] [stdout] 219 |     BronzeGreatsword,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 220 |     IronGreatsword,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 221 |     SteelGreatsword,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 224 |     IronShortsword,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 225 |     SteelShortsword,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 226 |
[INFO] [stdout] 227 |     BasicStaff,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 228 |     PineStaff,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 229 |     WoodStaff,
[INFO] [stdout] 230 |     MapleStaff,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 231 |     OakStaff,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     IronHeavyAxe,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 237 |     SteelHeavyAxe,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     IronLightAxe,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 241 |     SteelLightAxe,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     IronPickAxe,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 245 |     SteelPickAxe,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 248 |     IronPickHammer,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 249 |     SteelPickHammer,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 250 |
[INFO] [stdout] 251 |     ShadowAxe,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     IronWarAxe,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 258 |     MediumArmour,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 259 |     HeavyArmour,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 262 |     LargeWoodShield,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 263 |     IronShield, // +10 defence
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 264 |     SteelShield,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Items` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Null` is never constructed
[INFO] [stdout]    --> src/enums.rs:369:5
[INFO] [stdout]     |
[INFO] [stdout] 364 | pub enum PlayerTraits {
[INFO] [stdout]     |          ------------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 369 |     Null,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PlayerTraits` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Luck`, `Trading`, `Navigation`, and `Herbalism` are never constructed
[INFO] [stdout]    --> src/enums.rs:382:5
[INFO] [stdout]     |
[INFO] [stdout] 378 | pub enum ExpType {
[INFO] [stdout]     |          ------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 382 |     Luck,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 383 |     Trading,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 384 |     Lockpicking,
[INFO] [stdout] 385 |     Navigation,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 386 |     Herbalism,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ExpType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Null` is never constructed
[INFO] [stdout]    --> src/enums.rs:399:5
[INFO] [stdout]     |
[INFO] [stdout] 390 | pub enum Plants {
[INFO] [stdout]     |          ------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 399 |     Null,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Plants` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Hands`, `Head`, `Torso`, and `Feet` are never constructed
[INFO] [stdout]    --> src/enums.rs:408:5
[INFO] [stdout]     |
[INFO] [stdout] 403 | pub enum Equip {
[INFO] [stdout]     |          ----- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 408 |     Hands,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 409 |     Head,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 410 |     Torso,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 411 |     Feet,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Equip` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Null` is never constructed
[INFO] [stdout]    --> src/enums.rs:437:5
[INFO] [stdout]     |
[INFO] [stdout] 427 | pub enum Enemies {
[INFO] [stdout]     |          ------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 437 |     Null,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Enemies` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ShopNPC` and `Null` are never constructed
[INFO] [stdout]    --> src/enums.rs:454:5
[INFO] [stdout]     |
[INFO] [stdout] 450 | pub enum NPCWrap {
[INFO] [stdout]     |          ------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 454 |     ShopNPC(ShopNPC),
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 457 |     Null,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `NPCWrap` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Interact`, `NPC`, and `Fight` are never constructed
[INFO] [stdout]    --> src/enums.rs:472:5
[INFO] [stdout]     |
[INFO] [stdout] 469 | pub enum GUIMode {
[INFO] [stdout]     |          ------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 472 |     Interact,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 476 |     NPC,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 477 |     Fight,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `GUIMode` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Menu` and `Null` are never constructed
[INFO] [stdout]    --> src/enums.rs:482:5
[INFO] [stdout]     |
[INFO] [stdout] 481 | pub enum GameMode {
[INFO] [stdout]     |          -------- variants in this enum
[INFO] [stdout] 482 |     Menu,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 487 |     Null,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `GameMode` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Null` is never constructed
[INFO] [stdout]    --> src/enums.rs:503:5
[INFO] [stdout]     |
[INFO] [stdout] 499 | pub enum EncResult {
[INFO] [stdout]     |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 503 |     Null,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EncResult` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Feedback` is never constructed
[INFO] [stdout]    --> src/enums.rs:510:5
[INFO] [stdout]     |
[INFO] [stdout] 507 | pub enum InterSteps {
[INFO] [stdout]     |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 510 |     Feedback,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `InterSteps` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Message` is never constructed
[INFO] [stdout]    --> src/enums.rs:518:5
[INFO] [stdout]     |
[INFO] [stdout] 514 | pub enum FightSteps {
[INFO] [stdout]     |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 518 |     Message,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FightSteps` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Task` and `WoodenHatch` are never constructed
[INFO] [stdout]    --> src/enums.rs:547:5
[INFO] [stdout]     |
[INFO] [stdout] 540 | pub enum EnvInter {
[INFO] [stdout]     |          -------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 547 |     Task(TaskType),
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 553 |     WoodenHatch,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EnvInter` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `BoardStartEntity` is never constructed
[INFO] [stdout]    --> src/enums.rs:559:5
[INFO] [stdout]     |
[INFO] [stdout] 558 | pub enum TaskEnv {
[INFO] [stdout]     |          ------- variant in this enum
[INFO] [stdout] 559 |     BoardStartEntity,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TaskEnv` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Plot`, `RetrieveItem`, `PassMessage`, and `PassItem` are never constructed
[INFO] [stdout]    --> src/enums.rs:566:5
[INFO] [stdout]     |
[INFO] [stdout] 565 | pub enum TaskType {
[INFO] [stdout]     |          -------- variants in this enum
[INFO] [stdout] 566 |     Plot,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 567 |     RetrieveItem,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 568 |     PassMessage,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 569 |     PassItem,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TaskType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `HUnlocked` and `VUnlocked` are never constructed
[INFO] [stdout]    --> src/enums.rs:575:5
[INFO] [stdout]     |
[INFO] [stdout] 573 | pub enum Door {
[INFO] [stdout]     |          ---- variants in this enum
[INFO] [stdout] 574 |     HOpen,
[INFO] [stdout] 575 |     HUnlocked,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 578 |     VUnlocked,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Door` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Large` and `Null` are never constructed
[INFO] [stdout]    --> src/enums.rs:611:5
[INFO] [stdout]     |
[INFO] [stdout] 608 | pub enum Settle {
[INFO] [stdout]     |          ------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 611 |     Large,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 614 |     Null,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Settle` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Null` is never constructed
[INFO] [stdout]    --> src/enums.rs:622:5
[INFO] [stdout]     |
[INFO] [stdout] 618 | pub enum NodeType {
[INFO] [stdout]     |          -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 622 |     Null,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `NodeType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Guild`, `Church`, and `Clinic` are never constructed
[INFO] [stdout]    --> src/enums.rs:642:5
[INFO] [stdout]     |
[INFO] [stdout] 640 | pub enum ShopItem {
[INFO] [stdout]     |          -------- variants in this enum
[INFO] [stdout] 641 |     Item(Item),
[INFO] [stdout] 642 |     Guild,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 643 |     Church,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 644 |     Clinic,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ShopItem` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `AbandonedSettlement` and `Null` are never constructed
[INFO] [stdout]    --> src/enums.rs:669:5
[INFO] [stdout]     |
[INFO] [stdout] 662 | pub enum FeatureType {
[INFO] [stdout]     |          ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 669 |     AbandonedSettlement,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 670 |     Null,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FeatureType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DialogueTypes` is never used
[INFO] [stdout]    --> src/enums.rs:688:10
[INFO] [stdout]     |
[INFO] [stdout] 688 | pub enum DialogueTypes {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PALETTE` is never used
[INFO] [stdout]   --> src/features.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const PALETTE: &str = r#"
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HERMIT_2` is never used
[INFO] [stdout]   --> src/features.rs:44:7
[INFO] [stdout]    |
[INFO] [stdout] 44 | const HERMIT_2: &str = r#"
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `feature_check` is never used
[INFO] [stdout]    --> src/features.rs:324:12
[INFO] [stdout]     |
[INFO] [stdout] 146 | impl Features {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 324 |     pub fn feature_check(&mut self, pos: (i16, i16)) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ABANDONED_SHACK_BLANK` is never used
[INFO] [stdout]   --> src/features/abandoned_shacks.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const ABANDONED_SHACK_BLANK: &str = r#"Null|Null|BronzeWarAxe
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONSTRUCTION_BLANK` is never used
[INFO] [stdout]   --> src/features/construction.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const CONSTRUCTION_BLANK: &str = r#"Null|Null|Null
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GRASS_PATCH_TRANS` is never used
[INFO] [stdout]   --> src/features/field.rs:23:7
[INFO] [stdout]    |
[INFO] [stdout] 23 | const GRASS_PATCH_TRANS: &str = r#"
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SMALL_RUIN_0` is never used
[INFO] [stdout]   --> src/features/ruin.rs:79:7
[INFO] [stdout]    |
[INFO] [stdout] 79 | const SMALL_RUIN_0: &str = r#"
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STREAM` is never used
[INFO] [stdout]  --> src/features/streams.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const STREAM: &str = r#"
[INFO] [stdout]   |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `inter_res_draw` is never used
[INFO] [stdout]    --> src/gui/gui_man_draw.rs:700:12
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl GUI {
[INFO] [stdout]     | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 700 |     pub fn inter_res_draw(&mut self, gui_args: &mut GuiArgs) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `npc_commdraw` is never used
[INFO] [stdout]   --> src/gui/npc_interactions.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl GUI {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] 22 |     pub fn npc_commdraw(&mut self, comms: String, gui_args: &mut GuiArgs) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CustomColors` is never used
[INFO] [stdout]   --> src/gui_utils.rs:25:10
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub enum CustomColors {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_custom_color` is never used
[INFO] [stdout]   --> src/gui_utils.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | impl CustomColors {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] 45 |     pub fn to_custom_color(&self) -> Color {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/item.rs:66:12
[INFO] [stdout]      |
[INFO] [stdout]   65 | impl Item {
[INFO] [stdout]      | --------- associated items in this implementation
[INFO] [stdout]   66 |     pub fn new(
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  351 |     pub fn new_agility_potion(x: usize, y: usize) -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  461 |     pub fn new_iron_claymore(x: usize, y: usize) -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  573 |     pub fn new_bronze_greatsword(x: usize, y: usize) -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  629 |     pub fn new_basic_staff(x: usize, y: usize) -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  853 |     pub fn new_bronze_shadow_axe(x: usize, y: usize) -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  938 |     pub fn new_large_wood_shield(x: usize, y: usize) -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  965 |     pub fn new_iron_shield(x: usize, y: usize) -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  992 |     pub fn new_steel_shield(x: usize, y: usize) -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1046 |     pub fn new_medium_armour(x: usize, y: usize) -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1073 |     pub fn new_heavy_armour(x: usize, y: usize) -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1412 |     pub fn get_itype(&mut self) -> Items {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `px`, `py`, and `dead_tunnels` are never read
[INFO] [stdout]   --> src/map.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct Map {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub px: usize,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 21 |     pub py: usize,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 22 |     pub tunnels: HashMap<(usize, usize), (usize, usize)>,
[INFO] [stdout] 23 |     pub dead_tunnels: HashMap<(usize, usize), (usize, usize)>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Map` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_hashmap` is never used
[INFO] [stdout]   --> src/map.rs:35:4
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn format_hashmap(hashmap: HashMap<(usize, usize), (usize, usize)>) -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `map_to_string`, `replace_dead_tunnels`, and `center_player` are never used
[INFO] [stdout]    --> src/map.rs:352:8
[INFO] [stdout]     |
[INFO] [stdout]  43 | impl Map {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 352 |     fn map_to_string(&self, cells: &Vec<Vec<Cells>>) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 705 |     fn replace_dead_tunnels(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 784 |     pub fn center_player(&mut self, x: usize, y: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Quest` is never constructed
[INFO] [stdout]  --> src/notebook.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct Quest {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Stage` is never constructed
[INFO] [stdout]   --> src/notebook.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct Stage {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Place` is never constructed
[INFO] [stdout]   --> src/notebook.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct Place {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Person` is never constructed
[INFO] [stdout]   --> src/notebook.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct Person {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Lore` is never constructed
[INFO] [stdout]   --> src/notebook.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct Lore {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `enter_knowledge` is never used
[INFO] [stdout]    --> src/notebook.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout] 107 | impl Notebook {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn enter_knowledge(&mut self, sname: String, snote: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `new_task_npc` is never used
[INFO] [stdout]   --> src/npc.rs:86:8
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub fn new_task_npc(
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_shop_npc` is never used
[INFO] [stdout]    --> src/npc.rs:199:12
[INFO] [stdout]     |
[INFO] [stdout] 190 | impl dyn NPC {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn as_shop_npc(&self) -> Option<&ShopNPC> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_ptype` is never used
[INFO] [stdout]    --> src/npc.rs:518:12
[INFO] [stdout]     |
[INFO] [stdout] 496 | impl SpawnNPC {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 518 |     pub fn get_ptype(&mut self) -> PuzzleType {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TaskNPC` is never constructed
[INFO] [stdout]    --> src/npc.rs:594:12
[INFO] [stdout]     |
[INFO] [stdout] 594 | pub struct TaskNPC {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `shift_npc` is never used
[INFO] [stdout]    --> src/npc_utils.rs:128:8
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub fn shift_npc(npc: NPCWrap, pos: (usize, usize)) -> NPCWrap {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INVENTORY_MAX` is never used
[INFO] [stdout]  --> src/player.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const INVENTORY_MAX: usize = 75;
[INFO] [stdout]   |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_pos`, `inv_full`, `move_up`, `move_down`, `move_left`, and `move_right` are never used
[INFO] [stdout]    --> src/player.rs:59:12
[INFO] [stdout]     |
[INFO] [stdout]  29 | impl Player {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  59 |     pub fn set_pos(&mut self, pos: (usize, usize)) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub fn inv_full(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn move_up(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn move_down(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn move_left(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 202 |     pub fn move_right(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `place_portals` is never used
[INFO] [stdout]    --> src/puzzle.rs:236:4
[INFO] [stdout]     |
[INFO] [stdout] 236 | fn place_portals(cells: Vec<Vec<Cells>>) -> HashMap<(usize, usize), (usize, usize)> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RUIN_ROOM_BLANK` is never used
[INFO] [stdout]    --> src/puzzle.rs:313:7
[INFO] [stdout]     |
[INFO] [stdout] 313 | const RUIN_ROOM_BLANK: &str = r#"
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PALETTE` is never used
[INFO] [stdout]    --> src/puzzle.rs:328:7
[INFO] [stdout]     |
[INFO] [stdout] 328 | const PALETTE: &str = r#"
[INFO] [stdout]     |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `set_pos` is never used
[INFO] [stdout]     --> src/puzzle.rs:2069:12
[INFO] [stdout]      |
[INFO] [stdout] 1990 | impl Puzzle {
[INFO] [stdout]      | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 2069 |     pub fn set_pos(&mut self, tpos: (i16, i16)) {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `spawn_new_puzzle`, and `puzzle_check` are never used
[INFO] [stdout]    --> src/puzzles.rs:16:12
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl Puzzles {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout]  16 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  31 |     pub fn spawn_new_puzzle(&mut self, pos: (i16, i16), ptype: PuzzleType) -> PuzzleType {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn puzzle_check(&mut self, pos: (i16, i16)) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/settlement.rs:758:12
[INFO] [stdout]      |
[INFO] [stdout]  757 | impl Settlement {
[INFO] [stdout]      | --------------- associated items in this implementation
[INFO] [stdout]  758 |     pub fn new(
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  805 |     pub fn new_small_settle(pos: (i16, i16)) -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  928 |     pub fn get_shop_from_item_pos(&mut self, pos: (i16, i16)) -> Option<Shop> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  999 |     pub fn set_pos(&mut self, tpos: (i16, i16)) {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1019 |     pub fn get_items_sent(&mut self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1023 |     pub fn tog_items_sent(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1027 |     pub fn get_shops(&mut self) -> HashMap<Shops, Shop> {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1031 |     pub fn get_map(&mut self) -> Vec<Vec<Cells>> {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Weapons`, `Armour`, and `Consignment` are never constructed
[INFO] [stdout]   --> src/settlement/med_settle.rs:87:5
[INFO] [stdout]    |
[INFO] [stdout] 78 | enum BlockType {
[INFO] [stdout]    |      --------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 87 |     Weapons,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 88 |     Armour,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 89 |     Consignment,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OOBSIDIAN_WALLS_BOTTOM` is never used
[INFO] [stdout]    --> src/settlement/obsidian_settle.rs:188:7
[INFO] [stdout]     |
[INFO] [stdout] 188 | const OOBSIDIAN_WALLS_BOTTOM: &str = r#"
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GRASS_PATCH` is never used
[INFO] [stdout]    --> src/settlement/settle_parts.rs:173:7
[INFO] [stdout]     |
[INFO] [stdout] 173 | const GRASS_PATCH: &str = r#"
[INFO] [stdout]     |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OPEN_2` is never used
[INFO] [stdout]    --> src/settlement/settle_parts.rs:212:7
[INFO] [stdout]     |
[INFO] [stdout] 212 | const OPEN_2: &str = r#"CommNPC|Null|Null
[INFO] [stdout]     |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WEAPONS_1` is never used
[INFO] [stdout]    --> src/settlement/settle_parts.rs:324:7
[INFO] [stdout]     |
[INFO] [stdout] 324 | const WEAPONS_1: &str = r#"CommNPC CommNPC CommNPC ShopNPC|HealthPotion HealthPotion HealthPotion Salve Salve Dowel WoodenBoard App...
[INFO] [stdout]     |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ARMOUR_1` is never used
[INFO] [stdout]    --> src/settlement/settle_parts.rs:352:7
[INFO] [stdout]     |
[INFO] [stdout] 352 | const ARMOUR_1: &str = r#"CommNPC CommNPC CommNPC ShopNPC|HealthPotion HealthPotion HealthPotion Salve Salve Dowel WoodenBoard Appl...
[INFO] [stdout]     |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PALETTE` is never used
[INFO] [stdout]    --> src/settlement/settle_parts.rs:396:7
[INFO] [stdout]     |
[INFO] [stdout] 396 | const PALETTE: &str = "empty: ' . , ' * | wall: ▒ | other ▓ ░ ~ | pipes: ═ ║ ╣ ╠ ╩ ╦ ╗ ╝ ╚ ╔ ╬   ┐ └ ┴ ┬ ├ ─ ┼ ┘ ┌ ┤ │ ≡ ° × ¤ ¸ ¨ ...
[INFO] [stdout]     |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `spawn_new_settlement`, `get_settle_pos`, `set_pass_item_content`, and `set_pass_msg_content` are never used
[INFO] [stdout]    --> src/settlements.rs:17:12
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl Settlements {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  17 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn spawn_new_settlement(&mut self, cpos: (i16, i16)) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn get_settle_pos(&mut self) -> Vec<(i16, i16)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     fn set_pass_item_content(&self, task: Task) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     fn set_pass_msg_content(&self, task: Task) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_clinic`, `new_herbalist`, `get_npc`, and `get_paid` are never used
[INFO] [stdout]    --> src/shop.rs:73:12
[INFO] [stdout]     |
[INFO] [stdout]  30 | impl Shop {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub fn new_clinic(
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub fn new_herbalist(
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn get_npc(&self) -> ShopNPC {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn get_paid(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `alignment` and `renown` are never read
[INFO] [stdout]   --> src/stats.rs:68:5
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub struct PlayerStats {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 68 |     alignment: i8,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 69 |     renown: u8,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `state_toggle` and `player_stats` are never read
[INFO] [stdout]    --> src/stats.rs:164:9
[INFO] [stdout]     |
[INFO] [stdout] 162 | pub struct Stats {
[INFO] [stdout]     |            ----- fields in this struct
[INFO] [stdout] 163 |     pub world_stats: WorldStats,
[INFO] [stdout] 164 |     pub state_toggle: HashMap<ToggleState, bool>,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 165 |     pub player_stats: PlayerStats,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Plot`, `PassMessage`, and `PassItem` are never constructed
[INFO] [stdout]   --> src/tasks.rs:80:5
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub enum TaskType {
[INFO] [stdout]    |          -------- variants in this enum
[INFO] [stdout] 80 |     Plot,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 81 |     RetrieveItem,
[INFO] [stdout] 82 |     PassMessage,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 83 |     PassItem,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TaskType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `RetrieveItem` is never constructed
[INFO] [stdout]   --> src/tasks.rs:99:5
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub enum Task {
[INFO] [stdout]    |          ---- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 99 |     RetrieveItem {
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Task` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `place_enemies` is never used
[INFO] [stdout]  --> src/utils.rs:9:4
[INFO] [stdout]   |
[INFO] [stdout] 9 | fn place_enemies(map: Vec<Vec<Cells>>) -> HashMap<(usize, usize), Enemy> {
[INFO] [stdout]   |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gen_broken_range` is never used
[INFO] [stdout]   --> src/utils.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn gen_broken_range<R: Rng>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_items` is never used
[INFO] [stdout]   --> src/utils.rs:72:8
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub fn init_items(
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_dir` is never used
[INFO] [stdout]    --> src/utils.rs:217:8
[INFO] [stdout]     |
[INFO] [stdout] 217 | pub fn get_dir(vec: (i16, i16)) -> (i8, i8) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `nodemap`, `level`, `portal_cool`, and `loc_map` are never read
[INFO] [stdout]   --> src/gamestate.rs:60:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct GameState {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 60 |     nodemap: NodeMap,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     level: u32,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     portal_cool: Instant,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 87 |     loc_map: Option<Vec<Vec<Cells>>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `new_loc_check` is never used
[INFO] [stdout]   --> src/gamestate/locations.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout]  8 | impl GameState {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn new_loc_check(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CommDialogue` is never constructed
[INFO] [stdout]   --> src/assets.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct CommDialogue {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConvoDialogue` is never constructed
[INFO] [stdout]   --> src/assets.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct ConvoDialogue {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AssetType` is never used
[INFO] [stdout]   --> src/assets.rs:38:10
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub enum AssetType {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]    --> src/assets.rs:95:5
[INFO] [stdout]     |
[INFO] [stdout]  93 | pub enum Npcs {
[INFO] [stdout]     |          ---- variants in this enum
[INFO] [stdout]  94 |     Settler,
[INFO] [stdout]  95 |     GuildMember,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]  96 |     GuildHead,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]  97 |     ObsidianMember,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout]  98 |     ObsidianSteward,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout]  99 |     ShopKeeper,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 100 |     Herbalist,
[INFO] [stdout] 101 |     Clinic,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 102 |     WeaponSmith,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 103 |     Armorer,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 104 |     Terminal,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Npcs` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_trade` is never used
[INFO] [stdout]    --> src/assets.rs:248:8
[INFO] [stdout]     |
[INFO] [stdout] 248 | pub fn get_trade() -> Vec<HashMap<String, String>> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_comms` is never used
[INFO] [stdout]    --> src/assets.rs:476:8
[INFO] [stdout]     |
[INFO] [stdout] 476 | pub fn load_comms(ntype: &String) -> CommDialogue {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_convos` is never used
[INFO] [stdout]    --> src/assets.rs:528:8
[INFO] [stdout]     |
[INFO] [stdout] 528 | pub fn load_convos(ntype: &String) -> ConvoDialogue {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CommDialogue` is never constructed
[INFO] [stdout]   --> src/dialogue.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct CommDialogue {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConvoDialogue` is never constructed
[INFO] [stdout]   --> src/dialogue.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct ConvoDialogue {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Dialogue` is never constructed
[INFO] [stdout]   --> src/dialogue.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct Dialogue {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_comms` is never used
[INFO] [stdout]   --> src/dialogue.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub fn load_comms(ntype: &String) -> CommDialogue {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_convos` is never used
[INFO] [stdout]   --> src/dialogue.rs:88:8
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub fn load_convos(ntype: &String) -> ConvoDialogue {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/dialogue.rs:141:12
[INFO] [stdout]     |
[INFO] [stdout] 140 | impl Dialogue {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] 141 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn get_cave_comm(&mut self) -> &String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn get_guild_comm(&mut self) -> &String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub fn get_cult_comm(&mut self) -> &String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     pub fn get_cave_convo(&mut self) -> &Convo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     pub fn get_guild_convo(&mut self) -> &Convo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 299 |     pub fn get_cult_convo(&mut self) -> &Convo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 326 |     pub fn retrieve_new_dialogue(&mut self) {}
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PALLETE` is never used
[INFO] [stdout]  --> src/enemy.rs:4:7
[INFO] [stdout]   |
[INFO] [stdout] 4 | const PALLETE: &str = "empty: ' . , ' * | wall: ▒ | other ▓ ░ ~ | pipes: ═ ║ ╣ ╠ ╩ ╦ ╗ ╝ ╚ ╔ ╬   ┐ └ ┴ ┬ ├ ─ ┼ ┘ ┌ ┤ │ ≡ ° × ¤ ¸ ¨ · ...
[INFO] [stdout]   |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `set_pos`, and `inc_steps` are never used
[INFO] [stdout]    --> src/enemy.rs:25:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | impl Enemy {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout]  25 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 329 |     pub fn set_pos(&mut self, pos: (usize, usize)) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 349 |     pub fn inc_steps(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]    --> src/enums.rs:26:5
[INFO] [stdout]     |
[INFO] [stdout]  11 | pub enum Cells {
[INFO] [stdout]     |          ----- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout]  26 |     Moss,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     Tunnel,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     Inter,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     Exup,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     NPCM,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     Enemy,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 181 |     NPC,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     Herbalist,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Cells` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]    --> src/enums.rs:203:5
[INFO] [stdout]     |
[INFO] [stdout] 195 | pub enum Items {
[INFO] [stdout]     |          ----- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 203 |     WoodenBoard,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 204 |     IronSword,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 212 |     IronClaymore,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 217 |     SteelLongsword,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 218 |
[INFO] [stdout] 219 |     BronzeGreatsword,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 220 |     IronGreatsword,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 221 |     SteelGreatsword,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 224 |     IronShortsword,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 225 |     SteelShortsword,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 226 |
[INFO] [stdout] 227 |     BasicStaff,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 228 |     PineStaff,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 229 |     WoodStaff,
[INFO] [stdout] 230 |     MapleStaff,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 231 |     OakStaff,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     IronHeavyAxe,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 237 |     SteelHeavyAxe,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     IronLightAxe,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 241 |     SteelLightAxe,
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     IronPickAxe,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 245 |     SteelPickAxe,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 248 |     IronPickHammer,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 249 |     SteelPickHammer,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 250 |
[INFO] [stdout] 251 |     ShadowAxe,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     IronWarAxe,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 258 |     MediumArmour,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 259 |     HeavyArmour,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 262 |     LargeWoodShield,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 263 |     IronShield, // +10 defence
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 264 |     SteelShield,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Items` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Null` is never constructed
[INFO] [stdout]    --> src/enums.rs:369:5
[INFO] [stdout]     |
[INFO] [stdout] 364 | pub enum PlayerTraits {
[INFO] [stdout]     |          ------------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 369 |     Null,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PlayerTraits` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Luck`, `Trading`, `Navigation`, and `Herbalism` are never constructed
[INFO] [stdout]    --> src/enums.rs:382:5
[INFO] [stdout]     |
[INFO] [stdout] 378 | pub enum ExpType {
[INFO] [stdout]     |          ------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 382 |     Luck,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 383 |     Trading,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 384 |     Lockpicking,
[INFO] [stdout] 385 |     Navigation,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 386 |     Herbalism,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ExpType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Null` is never constructed
[INFO] [stdout]    --> src/enums.rs:399:5
[INFO] [stdout]     |
[INFO] [stdout] 390 | pub enum Plants {
[INFO] [stdout]     |          ------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 399 |     Null,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Plants` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: using `.clone()` on a double reference, which returns `&str` instead of cloning the inner type
[INFO] [stdout]    --> src/gui/npc_interactions.rs:292:45
[INFO] [stdout]     |
[INFO] [stdout] 292 | ...                   cell.clone(),
[INFO] [stdout]     |                           ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(suspicious_double_ref_op)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Hands`, `Head`, `Torso`, and `Feet` are never constructed
[INFO] [stdout]    --> src/enums.rs:408:5
[INFO] [stdout]     |
[INFO] [stdout] 403 | pub enum Equip {
[INFO] [stdout]     |          ----- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 408 |     Hands,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 409 |     Head,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 410 |     Torso,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 411 |     Feet,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Equip` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: using `.clone()` on a double reference, which returns `&str` instead of cloning the inner type
[INFO] [stdout]    --> src/gui/npc_interactions.rs:297:52
[INFO] [stdout]     |
[INFO] [stdout] 297 | ...                   Cell::from(cell.clone())
[INFO] [stdout]     |                                      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Null` is never constructed
[INFO] [stdout]    --> src/enums.rs:437:5
[INFO] [stdout]     |
[INFO] [stdout] 427 | pub enum Enemies {
[INFO] [stdout]     |          ------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 437 |     Null,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Enemies` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ShopNPC` and `Null` are never constructed
[INFO] [stdout]    --> src/enums.rs:454:5
[INFO] [stdout]     |
[INFO] [stdout] 450 | pub enum NPCWrap {
[INFO] [stdout]     |          ------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 454 |     ShopNPC(ShopNPC),
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 457 |     Null,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `NPCWrap` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Interact`, `NPC`, and `Fight` are never constructed
[INFO] [stdout]    --> src/enums.rs:472:5
[INFO] [stdout]     |
[INFO] [stdout] 469 | pub enum GUIMode {
[INFO] [stdout]     |          ------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 472 |     Interact,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 476 |     NPC,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 477 |     Fight,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `GUIMode` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Menu` and `Null` are never constructed
[INFO] [stdout]    --> src/enums.rs:482:5
[INFO] [stdout]     |
[INFO] [stdout] 481 | pub enum GameMode {
[INFO] [stdout]     |          -------- variants in this enum
[INFO] [stdout] 482 |     Menu,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 487 |     Null,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `GameMode` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Null` is never constructed
[INFO] [stdout]    --> src/enums.rs:503:5
[INFO] [stdout]     |
[INFO] [stdout] 499 | pub enum EncResult {
[INFO] [stdout]     |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 503 |     Null,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EncResult` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Feedback` is never constructed
[INFO] [stdout]    --> src/enums.rs:510:5
[INFO] [stdout]     |
[INFO] [stdout] 507 | pub enum InterSteps {
[INFO] [stdout]     |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 510 |     Feedback,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `InterSteps` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Message` is never constructed
[INFO] [stdout]    --> src/enums.rs:518:5
[INFO] [stdout]     |
[INFO] [stdout] 514 | pub enum FightSteps {
[INFO] [stdout]     |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 518 |     Message,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FightSteps` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Task` and `WoodenHatch` are never constructed
[INFO] [stdout]    --> src/enums.rs:547:5
[INFO] [stdout]     |
[INFO] [stdout] 540 | pub enum EnvInter {
[INFO] [stdout]     |          -------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 547 |     Task(TaskType),
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 553 |     WoodenHatch,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EnvInter` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `BoardStartEntity` is never constructed
[INFO] [stdout]    --> src/enums.rs:559:5
[INFO] [stdout]     |
[INFO] [stdout] 558 | pub enum TaskEnv {
[INFO] [stdout]     |          ------- variant in this enum
[INFO] [stdout] 559 |     BoardStartEntity,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TaskEnv` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Plot`, `RetrieveItem`, `PassMessage`, and `PassItem` are never constructed
[INFO] [stdout]    --> src/enums.rs:566:5
[INFO] [stdout]     |
[INFO] [stdout] 565 | pub enum TaskType {
[INFO] [stdout]     |          -------- variants in this enum
[INFO] [stdout] 566 |     Plot,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 567 |     RetrieveItem,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 568 |     PassMessage,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 569 |     PassItem,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TaskType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `HUnlocked` and `VUnlocked` are never constructed
[INFO] [stdout]    --> src/enums.rs:575:5
[INFO] [stdout]     |
[INFO] [stdout] 573 | pub enum Door {
[INFO] [stdout]     |          ---- variants in this enum
[INFO] [stdout] 574 |     HOpen,
[INFO] [stdout] 575 |     HUnlocked,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 578 |     VUnlocked,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Door` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Large` and `Null` are never constructed
[INFO] [stdout]    --> src/enums.rs:611:5
[INFO] [stdout]     |
[INFO] [stdout] 608 | pub enum Settle {
[INFO] [stdout]     |          ------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 611 |     Large,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 614 |     Null,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Settle` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Null` is never constructed
[INFO] [stdout]    --> src/enums.rs:622:5
[INFO] [stdout]     |
[INFO] [stdout] 618 | pub enum NodeType {
[INFO] [stdout]     |          -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 622 |     Null,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `NodeType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/gui_utils.rs:67:24
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub fn wrap_text(text: &str, max_width: usize) -> Text {
[INFO] [stdout]    |                        ^^^^                       ^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub fn wrap_text(text: &str, max_width: usize) -> Text<'_> {
[INFO] [stdout]    |                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Guild`, `Church`, and `Clinic` are never constructed
[INFO] [stdout]    --> src/enums.rs:642:5
[INFO] [stdout]     |
[INFO] [stdout] 640 | pub enum ShopItem {
[INFO] [stdout]     |          -------- variants in this enum
[INFO] [stdout] 641 |     Item(Item),
[INFO] [stdout] 642 |     Guild,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 643 |     Church,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 644 |     Clinic,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ShopItem` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `AbandonedSettlement` and `Null` are never constructed
[INFO] [stdout]    --> src/enums.rs:669:5
[INFO] [stdout]     |
[INFO] [stdout] 662 | pub enum FeatureType {
[INFO] [stdout]     |          ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 669 |     AbandonedSettlement,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 670 |     Null,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `FeatureType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DialogueTypes` is never used
[INFO] [stdout]    --> src/enums.rs:688:10
[INFO] [stdout]     |
[INFO] [stdout] 688 | pub enum DialogueTypes {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PALETTE` is never used
[INFO] [stdout]   --> src/features.rs:22:7
[INFO] [stdout]    |
[INFO] [stdout] 22 | const PALETTE: &str = r#"
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HERMIT_2` is never used
[INFO] [stdout]   --> src/features.rs:44:7
[INFO] [stdout]    |
[INFO] [stdout] 44 | const HERMIT_2: &str = r#"
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `feature_check` is never used
[INFO] [stdout]    --> src/features.rs:324:12
[INFO] [stdout]     |
[INFO] [stdout] 146 | impl Features {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 324 |     pub fn feature_check(&mut self, pos: (i16, i16)) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ABANDONED_SHACK_BLANK` is never used
[INFO] [stdout]   --> src/features/abandoned_shacks.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const ABANDONED_SHACK_BLANK: &str = r#"Null|Null|BronzeWarAxe
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONSTRUCTION_BLANK` is never used
[INFO] [stdout]   --> src/features/construction.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const CONSTRUCTION_BLANK: &str = r#"Null|Null|Null
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GRASS_PATCH_TRANS` is never used
[INFO] [stdout]   --> src/features/field.rs:23:7
[INFO] [stdout]    |
[INFO] [stdout] 23 | const GRASS_PATCH_TRANS: &str = r#"
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SMALL_RUIN_0` is never used
[INFO] [stdout]   --> src/features/ruin.rs:79:7
[INFO] [stdout]    |
[INFO] [stdout] 79 | const SMALL_RUIN_0: &str = r#"
[INFO] [stdout]    |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `STREAM` is never used
[INFO] [stdout]  --> src/features/streams.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const STREAM: &str = r#"
[INFO] [stdout]   |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `inter_res_draw` is never used
[INFO] [stdout]    --> src/gui/gui_man_draw.rs:700:12
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl GUI {
[INFO] [stdout]     | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 700 |     pub fn inter_res_draw(&mut self, gui_args: &mut GuiArgs) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `npc_commdraw` is never used
[INFO] [stdout]   --> src/gui/npc_interactions.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl GUI {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] 22 |     pub fn npc_commdraw(&mut self, comms: String, gui_args: &mut GuiArgs) {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CustomColors` is never used
[INFO] [stdout]   --> src/gui_utils.rs:25:10
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub enum CustomColors {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_custom_color` is never used
[INFO] [stdout]   --> src/gui_utils.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | impl CustomColors {
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] 45 |     pub fn to_custom_color(&self) -> Color {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/item.rs:66:12
[INFO] [stdout]      |
[INFO] [stdout]   65 | impl Item {
[INFO] [stdout]      | --------- associated items in this implementation
[INFO] [stdout]   66 |     pub fn new(
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  351 |     pub fn new_agility_potion(x: usize, y: usize) -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  461 |     pub fn new_iron_claymore(x: usize, y: usize) -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  573 |     pub fn new_bronze_greatsword(x: usize, y: usize) -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  629 |     pub fn new_basic_staff(x: usize, y: usize) -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  853 |     pub fn new_bronze_shadow_axe(x: usize, y: usize) -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  938 |     pub fn new_large_wood_shield(x: usize, y: usize) -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  965 |     pub fn new_iron_shield(x: usize, y: usize) -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  992 |     pub fn new_steel_shield(x: usize, y: usize) -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1046 |     pub fn new_medium_armour(x: usize, y: usize) -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1073 |     pub fn new_heavy_armour(x: usize, y: usize) -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1412 |     pub fn get_itype(&mut self) -> Items {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `px`, `py`, and `dead_tunnels` are never read
[INFO] [stdout]   --> src/map.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct Map {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub px: usize,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 21 |     pub py: usize,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 22 |     pub tunnels: HashMap<(usize, usize), (usize, usize)>,
[INFO] [stdout] 23 |     pub dead_tunnels: HashMap<(usize, usize), (usize, usize)>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Map` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_hashmap` is never used
[INFO] [stdout]   --> src/map.rs:35:4
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn format_hashmap(hashmap: HashMap<(usize, usize), (usize, usize)>) -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `map_to_string`, `replace_dead_tunnels`, and `center_player` are never used
[INFO] [stdout]    --> src/map.rs:352:8
[INFO] [stdout]     |
[INFO] [stdout]  43 | impl Map {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 352 |     fn map_to_string(&self, cells: &Vec<Vec<Cells>>) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 705 |     fn replace_dead_tunnels(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 784 |     pub fn center_player(&mut self, x: usize, y: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Quest` is never constructed
[INFO] [stdout]  --> src/notebook.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct Quest {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Stage` is never constructed
[INFO] [stdout]   --> src/notebook.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct Stage {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Place` is never constructed
[INFO] [stdout]   --> src/notebook.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct Place {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Person` is never constructed
[INFO] [stdout]   --> src/notebook.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct Person {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Lore` is never constructed
[INFO] [stdout]   --> src/notebook.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub struct Lore {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `enter_knowledge` is never used
[INFO] [stdout]    --> src/notebook.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout] 107 | impl Notebook {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn enter_knowledge(&mut self, sname: String, snote: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `new_task_npc` is never used
[INFO] [stdout]   --> src/npc.rs:86:8
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub fn new_task_npc(
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `as_shop_npc` is never used
[INFO] [stdout]    --> src/npc.rs:199:12
[INFO] [stdout]     |
[INFO] [stdout] 190 | impl dyn NPC {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn as_shop_npc(&self) -> Option<&ShopNPC> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_ptype` is never used
[INFO] [stdout]    --> src/npc.rs:518:12
[INFO] [stdout]     |
[INFO] [stdout] 496 | impl SpawnNPC {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 518 |     pub fn get_ptype(&mut self) -> PuzzleType {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TaskNPC` is never constructed
[INFO] [stdout]    --> src/npc.rs:594:12
[INFO] [stdout]     |
[INFO] [stdout] 594 | pub struct TaskNPC {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `shift_npc` is never used
[INFO] [stdout]    --> src/npc_utils.rs:128:8
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub fn shift_npc(npc: NPCWrap, pos: (usize, usize)) -> NPCWrap {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INVENTORY_MAX` is never used
[INFO] [stdout]  --> src/player.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const INVENTORY_MAX: usize = 75;
[INFO] [stdout]   |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_pos`, `inv_full`, `move_up`, `move_down`, `move_left`, and `move_right` are never used
[INFO] [stdout]    --> src/player.rs:59:12
[INFO] [stdout]     |
[INFO] [stdout]  29 | impl Player {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  59 |     pub fn set_pos(&mut self, pos: (usize, usize)) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     pub fn inv_full(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn move_up(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn move_down(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn move_left(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 202 |     pub fn move_right(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `place_portals` is never used
[INFO] [stdout]    --> src/puzzle.rs:236:4
[INFO] [stdout]     |
[INFO] [stdout] 236 | fn place_portals(cells: Vec<Vec<Cells>>) -> HashMap<(usize, usize), (usize, usize)> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RUIN_ROOM_BLANK` is never used
[INFO] [stdout]    --> src/puzzle.rs:313:7
[INFO] [stdout]     |
[INFO] [stdout] 313 | const RUIN_ROOM_BLANK: &str = r#"
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PALETTE` is never used
[INFO] [stdout]    --> src/puzzle.rs:328:7
[INFO] [stdout]     |
[INFO] [stdout] 328 | const PALETTE: &str = r#"
[INFO] [stdout]     |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `set_pos` is never used
[INFO] [stdout]     --> src/puzzle.rs:2069:12
[INFO] [stdout]      |
[INFO] [stdout] 1990 | impl Puzzle {
[INFO] [stdout]      | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 2069 |     pub fn set_pos(&mut self, tpos: (i16, i16)) {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `spawn_new_puzzle`, and `puzzle_check` are never used
[INFO] [stdout]    --> src/puzzles.rs:16:12
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl Puzzles {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout]  16 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  31 |     pub fn spawn_new_puzzle(&mut self, pos: (i16, i16), ptype: PuzzleType) -> PuzzleType {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn puzzle_check(&mut self, pos: (i16, i16)) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]     --> src/settlement.rs:758:12
[INFO] [stdout]      |
[INFO] [stdout]  757 | impl Settlement {
[INFO] [stdout]      | --------------- associated items in this implementation
[INFO] [stdout]  758 |     pub fn new(
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  805 |     pub fn new_small_settle(pos: (i16, i16)) -> Self {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  928 |     pub fn get_shop_from_item_pos(&mut self, pos: (i16, i16)) -> Option<Shop> {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  999 |     pub fn set_pos(&mut self, tpos: (i16, i16)) {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1019 |     pub fn get_items_sent(&mut self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1023 |     pub fn tog_items_sent(&mut self) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1027 |     pub fn get_shops(&mut self) -> HashMap<Shops, Shop> {
[INFO] [stdout]      |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1031 |     pub fn get_map(&mut self) -> Vec<Vec<Cells>> {
[INFO] [stdout]      |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Weapons`, `Armour`, and `Consignment` are never constructed
[INFO] [stdout]   --> src/settlement/med_settle.rs:87:5
[INFO] [stdout]    |
[INFO] [stdout] 78 | enum BlockType {
[INFO] [stdout]    |      --------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 87 |     Weapons,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 88 |     Armour,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 89 |     Consignment,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OOBSIDIAN_WALLS_BOTTOM` is never used
[INFO] [stdout]    --> src/settlement/obsidian_settle.rs:188:7
[INFO] [stdout]     |
[INFO] [stdout] 188 | const OOBSIDIAN_WALLS_BOTTOM: &str = r#"
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GRASS_PATCH` is never used
[INFO] [stdout]    --> src/settlement/settle_parts.rs:173:7
[INFO] [stdout]     |
[INFO] [stdout] 173 | const GRASS_PATCH: &str = r#"
[INFO] [stdout]     |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `OPEN_2` is never used
[INFO] [stdout]    --> src/settlement/settle_parts.rs:212:7
[INFO] [stdout]     |
[INFO] [stdout] 212 | const OPEN_2: &str = r#"CommNPC|Null|Null
[INFO] [stdout]     |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WEAPONS_1` is never used
[INFO] [stdout]    --> src/settlement/settle_parts.rs:324:7
[INFO] [stdout]     |
[INFO] [stdout] 324 | const WEAPONS_1: &str = r#"CommNPC CommNPC CommNPC ShopNPC|HealthPotion HealthPotion HealthPotion Salve Salve Dowel WoodenBoard App...
[INFO] [stdout]     |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ARMOUR_1` is never used
[INFO] [stdout]    --> src/settlement/settle_parts.rs:352:7
[INFO] [stdout]     |
[INFO] [stdout] 352 | const ARMOUR_1: &str = r#"CommNPC CommNPC CommNPC ShopNPC|HealthPotion HealthPotion HealthPotion Salve Salve Dowel WoodenBoard Appl...
[INFO] [stdout]     |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PALETTE` is never used
[INFO] [stdout]    --> src/settlement/settle_parts.rs:396:7
[INFO] [stdout]     |
[INFO] [stdout] 396 | const PALETTE: &str = "empty: ' . , ' * | wall: ▒ | other ▓ ░ ~ | pipes: ═ ║ ╣ ╠ ╩ ╦ ╗ ╝ ╚ ╔ ╬   ┐ └ ┴ ┬ ├ ─ ┼ ┘ ┌ ┤ │ ≡ ° × ¤ ¸ ¨ ...
[INFO] [stdout]     |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `spawn_new_settlement`, `get_settle_pos`, `set_pass_item_content`, and `set_pass_msg_content` are never used
[INFO] [stdout]    --> src/settlements.rs:17:12
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl Settlements {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout]  17 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  51 |     pub fn spawn_new_settlement(&mut self, cpos: (i16, i16)) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn get_settle_pos(&mut self) -> Vec<(i16, i16)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     fn set_pass_item_content(&self, task: Task) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     fn set_pass_msg_content(&self, task: Task) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_clinic`, `new_herbalist`, `get_npc`, and `get_paid` are never used
[INFO] [stdout]    --> src/shop.rs:73:12
[INFO] [stdout]     |
[INFO] [stdout]  30 | impl Shop {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub fn new_clinic(
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub fn new_herbalist(
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn get_npc(&self) -> ShopNPC {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn get_paid(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `alignment` and `renown` are never read
[INFO] [stdout]   --> src/stats.rs:68:5
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub struct PlayerStats {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 68 |     alignment: i8,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 69 |     renown: u8,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `state_toggle` and `player_stats` are never read
[INFO] [stdout]    --> src/stats.rs:164:9
[INFO] [stdout]     |
[INFO] [stdout] 162 | pub struct Stats {
[INFO] [stdout]     |            ----- fields in this struct
[INFO] [stdout] 163 |     pub world_stats: WorldStats,
[INFO] [stdout] 164 |     pub state_toggle: HashMap<ToggleState, bool>,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 165 |     pub player_stats: PlayerStats,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Plot`, `PassMessage`, and `PassItem` are never constructed
[INFO] [stdout]   --> src/tasks.rs:80:5
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub enum TaskType {
[INFO] [stdout]    |          -------- variants in this enum
[INFO] [stdout] 80 |     Plot,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 81 |     RetrieveItem,
[INFO] [stdout] 82 |     PassMessage,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 83 |     PassItem,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TaskType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `RetrieveItem` is never constructed
[INFO] [stdout]   --> src/tasks.rs:99:5
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub enum Task {
[INFO] [stdout]    |          ---- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 99 |     RetrieveItem {
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Task` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `place_enemies` is never used
[INFO] [stdout]  --> src/utils.rs:9:4
[INFO] [stdout]   |
[INFO] [stdout] 9 | fn place_enemies(map: Vec<Vec<Cells>>) -> HashMap<(usize, usize), Enemy> {
[INFO] [stdout]   |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gen_broken_range` is never used
[INFO] [stdout]   --> src/utils.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn gen_broken_range<R: Rng>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `init_items` is never used
[INFO] [stdout]   --> src/utils.rs:72:8
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub fn init_items(
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_dir` is never used
[INFO] [stdout]    --> src/utils.rs:217:8
[INFO] [stdout]     |
[INFO] [stdout] 217 | pub fn get_dir(vec: (i16, i16)) -> (i8, i8) {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `nodemap`, `level`, `portal_cool`, and `loc_map` are never read
[INFO] [stdout]   --> src/gamestate.rs:60:5
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub struct GameState {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 60 |     nodemap: NodeMap,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     level: u32,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     portal_cool: Instant,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 87 |     loc_map: Option<Vec<Vec<Cells>>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `new_loc_check` is never used
[INFO] [stdout]   --> src/gamestate/locations.rs:75:12
[INFO] [stdout]    |
[INFO] [stdout]  8 | impl GameState {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn new_loc_check(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/gamestate.rs:394:9
[INFO] [stdout]     |
[INFO] [stdout] 394 |         sfile.write_all(json.as_bytes());
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 394 |         let _ = sfile.write_all(json.as_bytes());
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/gamestate.rs:400:9
[INFO] [stdout]     |
[INFO] [stdout] 400 |         writeln!(nfile, "{}", filename.clone());
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 400 |         let _ = writeln!(nfile, "{}", filename.clone());
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: using `.clone()` on a double reference, which returns `&str` instead of cloning the inner type
[INFO] [stdout]    --> src/gui/npc_interactions.rs:292:45
[INFO] [stdout]     |
[INFO] [stdout] 292 | ...                   cell.clone(),
[INFO] [stdout]     |                           ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(suspicious_double_ref_op)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: using `.clone()` on a double reference, which returns `&str` instead of cloning the inner type
[INFO] [stdout]    --> src/gui/npc_interactions.rs:297:52
[INFO] [stdout]     |
[INFO] [stdout] 297 | ...                   Cell::from(cell.clone())
[INFO] [stdout]     |                                      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/gui_utils.rs:67:24
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub fn wrap_text(text: &str, max_width: usize) -> Text {
[INFO] [stdout]    |                        ^^^^                       ^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub fn wrap_text(text: &str, max_width: usize) -> Text<'_> {
[INFO] [stdout]    |                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/gamestate.rs:394:9
[INFO] [stdout]     |
[INFO] [stdout] 394 |         sfile.write_all(json.as_bytes());
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 394 |         let _ = sfile.write_all(json.as_bytes());
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/gamestate.rs:400:9
[INFO] [stdout]     |
[INFO] [stdout] 400 |         writeln!(nfile, "{}", filename.clone());
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 400 |         let _ = writeln!(nfile, "{}", filename.clone());
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 22.64s
[INFO] running `Command { std: "docker" "inspect" "c5c9edd2984ccfe3eea57504147a4fd22d571de5efd6bd9901ab8b58f86191aa", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c5c9edd2984ccfe3eea57504147a4fd22d571de5efd6bd9901ab8b58f86191aa", kill_on_drop: false }`
[INFO] [stdout] c5c9edd2984ccfe3eea57504147a4fd22d571de5efd6bd9901ab8b58f86191aa
