[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] 4cddcff9e97c6ccf79fcfd0bb5b14178f60cea78
[INFO] checking daffyd-jones/rust_dungeon against 5c543b0b8c73c7b72bc8284ced4fb22ead15734d for pr-160186
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdaffyd-jones%2Frust_dungeon" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/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-5-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/daffyd-jones/rust_dungeon on toolchain 5c543b0b8c73c7b72bc8284ced4fb22ead15734d
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+5c543b0b8c73c7b72bc8284ced4fb22ead15734d" "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" "+5c543b0b8c73c7b72bc8284ced4fb22ead15734d" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded serde v1.0.208
[INFO] [stderr]   Downloaded unicode-truncate v1.0.0
[INFO] [stderr]   Downloaded serde_derive v1.0.208
[INFO] [stderr]   Downloaded rust-embed-utils v8.7.2
[INFO] [stderr]   Downloaded rust-embed-impl v8.7.2
[INFO] [stderr]   Downloaded strum v0.26.2
[INFO] [stderr]   Downloaded lru v0.12.3
[INFO] [stderr]   Downloaded instability v0.3.2
[INFO] [stderr]   Downloaded strum_macros v0.26.3
[INFO] [stderr]   Downloaded compact_str v0.8.0
[INFO] [stderr]   Downloaded ratatui v0.28.0
[INFO] [stderr]   Downloaded rust-embed v8.7.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] d238a9dab1c4b0b86408e5aef1d1aea2d5b79f3f1f6ea3b9d3ba8a2156e30038
[INFO] running `Command { std: "docker" "start" "d238a9dab1c4b0b86408e5aef1d1aea2d5b79f3f1f6ea3b9d3ba8a2156e30038", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d238a9dab1c4b0b86408e5aef1d1aea2d5b79f3f1f6ea3b9d3ba8a2156e30038", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d238a9dab1c4b0b86408e5aef1d1aea2d5b79f3f1f6ea3b9d3ba8a2156e30038" "/opt/rustwide/cargo-home/bin/cargo" "+5c543b0b8c73c7b72bc8284ced4fb22ead15734d" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d238a9dab1c4b0b86408e5aef1d1aea2d5b79f3f1f6ea3b9d3ba8a2156e30038", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "d238a9dab1c4b0b86408e5aef1d1aea2d5b79f3f1f6ea3b9d3ba8a2156e30038" "/opt/rustwide/cargo-home/bin/cargo" "+5c543b0b8c73c7b72bc8284ced4fb22ead15734d" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.85
[INFO] [stderr]    Compiling rustversion v1.0.17
[INFO] [stderr]     Checking signal-hook-registry v1.4.2
[INFO] [stderr]    Compiling rustix v0.38.34
[INFO] [stderr]     Checking smallvec v1.13.2
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling lock_api v0.4.12
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]     Checking either v1.12.0
[INFO] [stderr]     Checking mio v1.0.2
[INFO] [stderr]     Checking getrandom v0.2.15
[INFO] [stderr]     Checking bitflags v2.5.0
[INFO] [stderr]     Checking allocator-api2 v0.2.18
[INFO] [stderr]    Compiling serde v1.0.208
[INFO] [stderr]     Checking linux-raw-sys v0.4.14
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]     Checking signal-hook v0.3.17
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking unicode-width v0.1.13
[INFO] [stderr]     Checking itertools v0.12.1
[INFO] [stderr]     Checking num_threads v0.1.7
[INFO] [stderr]     Checking ppv-lite86 v0.2.17
[INFO] [stderr]    Compiling serde_json v1.0.127
[INFO] [stderr]     Checking time v0.3.36
[INFO] [stderr]     Checking parking_lot_core v0.9.10
[INFO] [stderr]     Checking itertools v0.13.0
[INFO] [stderr]     Checking unicode-segmentation v1.11.0
[INFO] [stderr]     Checking memchr v2.7.4
[INFO] [stderr]     Checking lazy_static v1.4.0
[INFO] [stderr]     Checking signal-hook-mio v0.2.4
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking parking_lot v0.12.3
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking crypto-common v0.1.6
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking castaway v0.2.3
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking compact_str v0.8.0
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling quote v1.0.36
[INFO] [stderr]     Checking crossterm v0.28.1
[INFO] [stderr]    Compiling syn v2.0.66
[INFO] [stderr]     Checking rust-embed-utils v8.7.2
[INFO] [stderr]     Checking lru v0.12.3
[INFO] [stderr]     Checking unicode-truncate v1.0.0
[INFO] [stderr]    Compiling strum_macros v0.26.3
[INFO] [stderr]    Compiling serde_derive v1.0.208
[INFO] [stderr]    Compiling rust-embed-impl v8.7.2
[INFO] [stderr]    Compiling instability v0.3.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 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 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 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 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: `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: `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: 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: 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: `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: `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 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 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 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: 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: 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: `ratatui::crossterm::style::PrintStyledContent`
[INFO] [stdout]   --> src/gui.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use ratatui::crossterm::style::PrintStyledContent;
[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: `Modifier`
[INFO] [stdout]   --> src/gui.rs:19:29
[INFO] [stdout]    |
[INFO] [stdout] 19 | use ratatui::style::{Color, Modifier, Style, Stylize};
[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: `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: `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 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 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 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: `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 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 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: `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: `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 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: `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: `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: `ratatui::crossterm::style::PrintStyledContent`
[INFO] [stdout]   --> src/gui.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use ratatui::crossterm::style::PrintStyledContent;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Modifier`
[INFO] [stdout]   --> src/gui.rs:19:29
[INFO] [stdout]    |
[INFO] [stdout] 19 | use ratatui::style::{Color, Modifier, Style, Stylize};
[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 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 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: `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: 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: 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: 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 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 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: `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 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: `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: `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 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 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 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 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 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: `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 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: `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: `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: `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: `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: 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: 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: 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: 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: `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 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 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: `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: `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: `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: `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: `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 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: `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: `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: `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 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: `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: `Npcs`
[INFO] [stdout]  --> src/gamestate/inventory_state.rs:3:39
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::assets::{get_ascii, Ascii, Npcs};
[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: `GUIMode`
[INFO] [stdout]  --> src/gamestate/inventory_state.rs:4:20
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::enums::{GUIMode, GameMode, InterOpt, ItemEffect, ItemOpt, ToggleState};
[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: `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: `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 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: `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: `Cells`, `CompMode`, `EnvInter`, `GUIMode`, `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 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: `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/tasks.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::fs;
[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 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: `Npcs`
[INFO] [stdout]  --> src/gamestate/inventory_state.rs:3:39
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::assets::{get_ascii, Ascii, Npcs};
[INFO] [stdout]   |                                       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `GUIMode`
[INFO] [stdout]  --> src/gamestate/inventory_state.rs:4:20
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::enums::{GUIMode, GameMode, InterOpt, ItemEffect, ItemOpt, ToggleState};
[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`, `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 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:402:24
[INFO] [stdout]     |
[INFO] [stdout] 402 |         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:417:27
[INFO] [stdout]     |
[INFO] [stdout] 417 |         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: unused variable: `door`
[INFO] [stdout]    --> src/assets.rs:402:24
[INFO] [stdout]     |
[INFO] [stdout] 402 |         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:417:27
[INFO] [stdout]     |
[INFO] [stdout] 417 |         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:429:9
[INFO] [stdout]     |
[INFO] [stdout] 429 |         _ => "".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:429:9
[INFO] [stdout]     |
[INFO] [stdout] 427 |         PuzzlePiece::PuzzleDoor(_) => "puzzle-door".to_string(),
[INFO] [stdout]     |         -------------------------- matches some of the same values
[INFO] [stdout] 428 |         PuzzlePiece::PuzzleKey(_) => "puzzle-key".to_string(),
[INFO] [stdout]     |         ------------------------- matches some of the same values
[INFO] [stdout] 429 |         _ => "".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: unreachable pattern
[INFO] [stdout]    --> src/assets.rs:429:9
[INFO] [stdout]     |
[INFO] [stdout] 429 |         _ => "".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:429:9
[INFO] [stdout]     |
[INFO] [stdout] 427 |         PuzzlePiece::PuzzleDoor(_) => "puzzle-door".to_string(),
[INFO] [stdout]     |         -------------------------- matches some of the same values
[INFO] [stdout] 428 |         PuzzlePiece::PuzzleKey(_) => "puzzle-key".to_string(),
[INFO] [stdout]     |         ------------------------- matches some of the same values
[INFO] [stdout] 429 |         _ => "".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: `left`
[INFO] [stdout]    --> src/features/field.rs:275:26
[INFO] [stdout]     |
[INFO] [stdout] 275 |                     (up, left) if j == temp.len() - 1 && i == temp[0].len() - 1 => {
[INFO] [stdout]     |                          ^^^^ help: if this is intentional, prefix it with an underscore: `_left`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `left`
[INFO] [stdout]    --> src/features/field.rs:275:26
[INFO] [stdout]     |
[INFO] [stdout] 275 |                     (up, left) if j == temp.len() - 1 && i == temp[0].len() - 1 => {
[INFO] [stdout]     |                          ^^^^ help: if this is intentional, prefix it with an underscore: `_left`
[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: `j`
[INFO] [stdout]    --> src/gui/environment_interactions.rs:620:64
[INFO] [stdout]     |
[INFO] [stdout] 620 |             let rows: Vec<Row> = opts.iter().enumerate().map(|(j, row)| {
[INFO] [stdout]     |                                                                ^ help: if this is intentional, prefix it with an underscore: `_j`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `*self.cursor_bounds` is never read
[INFO] [stdout]    --> src/gui/environment_interactions.rs:605:13
[INFO] [stdout]     |
[INFO] [stdout] 605 |             self.cursor_bounds = vec![2];
[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: unused variable: `j`
[INFO] [stdout]    --> src/gui/environment_interactions.rs:720:64
[INFO] [stdout]     |
[INFO] [stdout] 720 |             let rows: Vec<Row> = opts.iter().enumerate().map(|(j, row)| {
[INFO] [stdout]     |                                                                ^ help: if this is intentional, prefix it with an underscore: `_j`
[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:980:22
[INFO] [stdout]     |
[INFO] [stdout] 980 |                 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: `j`
[INFO] [stdout]    --> src/gui/environment_interactions.rs:620:64
[INFO] [stdout]     |
[INFO] [stdout] 620 |             let rows: Vec<Row> = opts.iter().enumerate().map(|(j, row)| {
[INFO] [stdout]     |                                                                ^ help: if this is intentional, prefix it with an underscore: `_j`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `*self.cursor_bounds` is never read
[INFO] [stdout]    --> src/gui/environment_interactions.rs:605:13
[INFO] [stdout]     |
[INFO] [stdout] 605 |             self.cursor_bounds = vec![2];
[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: unused variable: `area`
[INFO] [stdout]     --> src/gui/environment_interactions.rs:1156:22
[INFO] [stdout]      |
[INFO] [stdout] 1156 |                 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: `j`
[INFO] [stdout]    --> src/gui/environment_interactions.rs:720:64
[INFO] [stdout]     |
[INFO] [stdout] 720 |             let rows: Vec<Row> = opts.iter().enumerate().map(|(j, row)| {
[INFO] [stdout]     |                                                                ^ help: if this is intentional, prefix it with an underscore: `_j`
[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: `area`
[INFO] [stdout]    --> src/gui/environment_interactions.rs:980:22
[INFO] [stdout]     |
[INFO] [stdout] 980 |                 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:503:53
[INFO] [stdout]     |
[INFO] [stdout] 503 | ...                   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:509:52
[INFO] [stdout]     |
[INFO] [stdout] 509 | ...                   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/environment_interactions.rs:1156:22
[INFO] [stdout]      |
[INFO] [stdout] 1156 |                 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:503:53
[INFO] [stdout]     |
[INFO] [stdout] 503 | ...                   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:509:52
[INFO] [stdout]     |
[INFO] [stdout] 509 | ...                   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/gui_man_draw.rs:1048:26
[INFO] [stdout]      |
[INFO] [stdout] 1048 |                     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: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/gui_man_draw.rs:1048:26
[INFO] [stdout]      |
[INFO] [stdout] 1048 |                     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: `in_h`
[INFO] [stdout]    --> src/gui.rs:100:9
[INFO] [stdout]     |
[INFO] [stdout] 100 |     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:101:9
[INFO] [stdout]     |
[INFO] [stdout] 101 |     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/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: variable does not need to be mutable
[INFO] [stdout]    --> src/gui.rs:513:5
[INFO] [stdout]     |
[INFO] [stdout] 513 |     mut f: &mut Frame,
[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: `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: `in_h`
[INFO] [stdout]    --> src/gui.rs:100:9
[INFO] [stdout]     |
[INFO] [stdout] 100 |     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:101:9
[INFO] [stdout]     |
[INFO] [stdout] 101 |     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: variable does not need to be mutable
[INFO] [stdout]    --> src/gui.rs:715:5
[INFO] [stdout]     |
[INFO] [stdout] 715 |     mut f: &mut Frame,
[INFO] [stdout]     |     ----^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cursor_pos`
[INFO] [stdout]    --> src/gui.rs:718:5
[INFO] [stdout]     |
[INFO] [stdout] 718 |     cursor_pos: (usize, usize),
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cursor_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/gui.rs:513:5
[INFO] [stdout]     |
[INFO] [stdout] 513 |     mut f: &mut Frame,
[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: `area`
[INFO] [stdout]     --> src/gui.rs:1638:14
[INFO] [stdout]      |
[INFO] [stdout] 1638 |         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:1633:9
[INFO] [stdout]      |
[INFO] [stdout] 1633 |     let b = Block::bordered();
[INFO] [stdout]      |         ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/gui.rs:715:5
[INFO] [stdout]     |
[INFO] [stdout] 715 |     mut f: &mut Frame,
[INFO] [stdout]     |     ----^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cursor_pos`
[INFO] [stdout]    --> src/gui.rs:718:5
[INFO] [stdout]     |
[INFO] [stdout] 718 |     cursor_pos: (usize, usize),
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cursor_pos`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `env_col`
[INFO] [stdout]    --> src/gui_utils.rs:249:25
[INFO] [stdout]     |
[INFO] [stdout] 249 |                     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:1638:14
[INFO] [stdout]      |
[INFO] [stdout] 1638 |         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:1633:9
[INFO] [stdout]      |
[INFO] [stdout] 1633 |     let b = Block::bordered();
[INFO] [stdout]      |         ^ help: if this is intentional, prefix it with an underscore: `_b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/item.rs:1753:13
[INFO] [stdout]      |
[INFO] [stdout] 1753 |         let mut prop = HashMap::new();
[INFO] [stdout]      |             ----^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `env_col`
[INFO] [stdout]    --> src/gui_utils.rs:249:25
[INFO] [stdout]     |
[INFO] [stdout] 249 |                     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]     |                      ^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 251 |             px = rng.gen_range(x_centre - 20..x_centre + 20);
[INFO] [stdout]     |             ------------------------------------------------ `px` is overwritten here before the previous value is read
[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]     |                      ^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 252 |             py = rng.gen_range(y_centre - 10..y_centre + 10);
[INFO] [stdout]     |             ------------------------------------------------ `py` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/item.rs:1753:13
[INFO] [stdout]      |
[INFO] [stdout] 1753 |         let mut prop = HashMap::new();
[INFO] [stdout]      |             ----^^^^
[INFO] [stdout]      |             |
[INFO] [stdout]      |             help: remove this `mut`
[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]     |                      ^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 251 |             px = rng.gen_range(x_centre - 20..x_centre + 20);
[INFO] [stdout]     |             ------------------------------------------------ `px` is overwritten here before the previous value is read
[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]     |                      ^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 252 |             py = rng.gen_range(y_centre - 10..y_centre + 10);
[INFO] [stdout]     |             ------------------------------------------------ `py` is overwritten here before the previous value is 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:1598:32
[INFO] [stdout]      |
[INFO] [stdout] 1598 |         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:1631:32
[INFO] [stdout]      |
[INFO] [stdout] 1631 |         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: `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: `env_inters`
[INFO] [stdout]     --> src/puzzle.rs:1598:32
[INFO] [stdout]      |
[INFO] [stdout] 1598 |         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:1631:32
[INFO] [stdout]      |
[INFO] [stdout] 1631 |         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: `def_name`
[INFO] [stdout]    --> src/settlement.rs:272:21
[INFO] [stdout]     |
[INFO] [stdout] 272 |                 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:599:41
[INFO] [stdout]     |
[INFO] [stdout] 599 |     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: `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: `p`
[INFO] [stdout]    --> src/settlement.rs:802:28
[INFO] [stdout]     |
[INFO] [stdout] 802 |                 .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: `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: `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: `src`
[INFO] [stdout]    --> src/stats.rs:288:35
[INFO] [stdout]     |
[INFO] [stdout] 288 |                 Buff::DurEffect { src, buffs, end } => {
[INFO] [stdout]     |                                   ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `buffs`
[INFO] [stdout]    --> src/stats.rs:288:40
[INFO] [stdout]     |
[INFO] [stdout] 288 |                 Buff::DurEffect { src, buffs, end } => {
[INFO] [stdout]     |                                        ^^^^^ help: try ignoring the field: `buffs: _`
[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: `def_name`
[INFO] [stdout]    --> src/settlement.rs:272:21
[INFO] [stdout]     |
[INFO] [stdout] 272 |                 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:599:41
[INFO] [stdout]     |
[INFO] [stdout] 599 |     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: `plant`
[INFO] [stdout]    --> src/utils.rs:329:23
[INFO] [stdout]     |
[INFO] [stdout] 329 |         Items::Plants(plant) => todo!(),
[INFO] [stdout]     |                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_plant`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]    --> src/settlement.rs:802:28
[INFO] [stdout]     |
[INFO] [stdout] 802 |                 .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: `res`
[INFO] [stdout]    --> src/gamestate/enemy_encounter.rs:109:29
[INFO] [stdout]     |
[INFO] [stdout] 109 |                         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:163:29
[INFO] [stdout]     |
[INFO] [stdout] 163 |                         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:185:13
[INFO] [stdout]     |
[INFO] [stdout] 185 |         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:192:13
[INFO] [stdout]     |
[INFO] [stdout] 192 |         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: unused variable: `src`
[INFO] [stdout]    --> src/stats.rs:288:35
[INFO] [stdout]     |
[INFO] [stdout] 288 |                 Buff::DurEffect { src, buffs, end } => {
[INFO] [stdout]     |                                   ^^^ help: try ignoring the field: `src: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `buffs`
[INFO] [stdout]    --> src/stats.rs:288:40
[INFO] [stdout]     |
[INFO] [stdout] 288 |                 Buff::DurEffect { src, buffs, end } => {
[INFO] [stdout]     |                                        ^^^^^ help: try ignoring the field: `buffs: _`
[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: 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] 
[INFO] [stdout] warning: unused variable: `plant`
[INFO] [stdout]    --> src/utils.rs:329:23
[INFO] [stdout]     |
[INFO] [stdout] 329 |         Items::Plants(plant) => todo!(),
[INFO] [stdout]     |                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_plant`
[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: unused variable: `res`
[INFO] [stdout]    --> src/gamestate/enemy_encounter.rs:109:29
[INFO] [stdout]     |
[INFO] [stdout] 109 |                         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:163:29
[INFO] [stdout]     |
[INFO] [stdout] 163 |                         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: 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: `turn`
[INFO] [stdout]    --> src/gamestate/enemy_encounter.rs:185:13
[INFO] [stdout]     |
[INFO] [stdout] 185 |         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:192:13
[INFO] [stdout]     |
[INFO] [stdout] 192 |         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: 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/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] 
[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/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/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: 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: 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: 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: 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: 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/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]     |                            ^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 281 |                             buy_item = res.1;
[INFO] [stdout]     |                             ---------------- `buy_item` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/gamestate.rs:237:13
[INFO] [stdout]     |
[INFO] [stdout] 237 |         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:180:13
[INFO] [stdout]     |
[INFO] [stdout] 180 |         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:425:13
[INFO] [stdout]     |
[INFO] [stdout] 425 |         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:426:13
[INFO] [stdout]     |
[INFO] [stdout] 426 |         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:427:13
[INFO] [stdout]     |
[INFO] [stdout] 427 |         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/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: 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: 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: 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:37:10
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub enum AssetType {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/assets.rs:88:5
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub enum Npcs {
[INFO] [stdout]    |          ---- variants in this enum
[INFO] [stdout] 87 |     Settler,
[INFO] [stdout] 88 |     GuildMember,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 89 |     GuildHead,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 90 |     ObsidianMember,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 91 |     ObsidianSteward,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 92 |     ShopKeeper,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 93 |     Herbalist,
[INFO] [stdout] 94 |     Clinic,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 95 |     WeaponSmith,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 96 |     Armorer,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 97 |     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: enum `Documents` is never used
[INFO] [stdout]    --> src/assets.rs:101:10
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub enum Documents {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_trade` is never used
[INFO] [stdout]    --> src/assets.rs:247:8
[INFO] [stdout]     |
[INFO] [stdout] 247 | pub fn get_trade() -> Vec<HashMap<String, String>> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `documents` is never used
[INFO] [stdout]    --> src/assets.rs:308:4
[INFO] [stdout]     |
[INFO] [stdout] 308 | fn documents(doc: Documents) -> String {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_comms` is never used
[INFO] [stdout]    --> src/assets.rs:484:8
[INFO] [stdout]     |
[INFO] [stdout] 484 | pub fn load_comms(ntype: &String) -> CommDialogue {
[INFO] [stdout]     |        ^^^^^^^^^^
[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: function `load_convos` is never used
[INFO] [stdout]    --> src/assets.rs:536:8
[INFO] [stdout]     |
[INFO] [stdout] 536 | 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: 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: 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: 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: 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:197:5
[INFO] [stdout]     |
[INFO] [stdout] 195 | pub enum Items {
[INFO] [stdout]     |          ----- variants in this enum
[INFO] [stdout] 196 |     Book,
[INFO] [stdout] 197 |     PaperScrap,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     WoodenBoard,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 207 |     IronSword,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     PineStaff,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 228 |     WoodStaff,
[INFO] [stdout] 229 |     MapleStaff,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 230 |     OakStaff,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 243 |     IronPickAxe,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 244 |     SteelPickAxe,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     IronPickHammer,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 248 |     SteelPickHammer,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     IronWarAxe,
[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:381:5
[INFO] [stdout]     |
[INFO] [stdout] 376 | pub enum PlayerTraits {
[INFO] [stdout]     |          ------------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 381 |     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`, and `Herbalism` are never constructed
[INFO] [stdout]    --> src/enums.rs:394:5
[INFO] [stdout]     |
[INFO] [stdout] 390 | pub enum ExpType {
[INFO] [stdout]     |          ------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 394 |     Luck,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 395 |     Trading,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 396 |     Lockpicking,
[INFO] [stdout] 397 |     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:410:5
[INFO] [stdout]     |
[INFO] [stdout] 401 | pub enum Plants {
[INFO] [stdout]     |          ------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 410 |     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:419:5
[INFO] [stdout]     |
[INFO] [stdout] 414 | pub enum Equip {
[INFO] [stdout]     |          ----- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 419 |     Hands,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 420 |     Head,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 421 |     Torso,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 422 |     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: variants `Antidote`, `Vitality`, and `Strength` are never constructed
[INFO] [stdout]    --> src/enums.rs:434:5
[INFO] [stdout]     |
[INFO] [stdout] 427 | pub enum ItemEffect {
[INFO] [stdout]     |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 434 |     Antidote,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 435 |     Agility,
[INFO] [stdout] 436 |     Vitality,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 437 |     Strength,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ItemEffect` 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:453:5
[INFO] [stdout]     |
[INFO] [stdout] 443 | pub enum Enemies {
[INFO] [stdout]     |          ------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 453 |     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: 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: variants `ShopNPC` and `Null` are never constructed
[INFO] [stdout]    --> src/enums.rs:470:5
[INFO] [stdout]     |
[INFO] [stdout] 466 | pub enum NPCWrap {
[INFO] [stdout]     |          ------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 470 |     ShopNPC(ShopNPC),
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 473 |     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:488:5
[INFO] [stdout]     |
[INFO] [stdout] 485 | pub enum GUIMode {
[INFO] [stdout]     |          ------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 488 |     Interact,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 492 |     NPC,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 493 |     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:498:5
[INFO] [stdout]     |
[INFO] [stdout] 497 | pub enum GameMode {
[INFO] [stdout]     |          -------- variants in this enum
[INFO] [stdout] 498 |     Menu,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 503 |     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:519:5
[INFO] [stdout]     |
[INFO] [stdout] 515 | pub enum EncResult {
[INFO] [stdout]     |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 519 |     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:526:5
[INFO] [stdout]     |
[INFO] [stdout] 523 | pub enum InterSteps {
[INFO] [stdout]     |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 526 |     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:534:5
[INFO] [stdout]     |
[INFO] [stdout] 530 | pub enum FightSteps {
[INFO] [stdout]     |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 534 |     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: 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: variants `Task` and `WoodenHatch` are never constructed
[INFO] [stdout]    --> src/enums.rs:563:5
[INFO] [stdout]     |
[INFO] [stdout] 556 | pub enum EnvInter {
[INFO] [stdout]     |          -------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 563 |     Task(TaskType),
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 569 |     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:577:5
[INFO] [stdout]     |
[INFO] [stdout] 576 | pub enum TaskEnv {
[INFO] [stdout]     |          ------- variant in this enum
[INFO] [stdout] 577 |     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: 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: variants `Plot`, `RetrieveItem`, `PassMessage`, and `PassItem` are never constructed
[INFO] [stdout]    --> src/enums.rs:584:5
[INFO] [stdout]     |
[INFO] [stdout] 583 | pub enum TaskType {
[INFO] [stdout]     |          -------- variants in this enum
[INFO] [stdout] 584 |     Plot,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 585 |     RetrieveItem,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 586 |     PassMessage,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 587 |     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:593:5
[INFO] [stdout]     |
[INFO] [stdout] 591 | pub enum Door {
[INFO] [stdout]     |          ---- variants in this enum
[INFO] [stdout] 592 |     HOpen,
[INFO] [stdout] 593 |     HUnlocked,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 596 |     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:629:5
[INFO] [stdout]     |
[INFO] [stdout] 626 | pub enum Settle {
[INFO] [stdout]     |          ------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 629 |     Large,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 632 |     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:640:5
[INFO] [stdout]     |
[INFO] [stdout] 636 | pub enum NodeType {
[INFO] [stdout]     |          -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 640 |     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:660:5
[INFO] [stdout]     |
[INFO] [stdout] 658 | pub enum ShopItem {
[INFO] [stdout]     |          -------- variants in this enum
[INFO] [stdout] 659 |     Item(Item),
[INFO] [stdout] 660 |     Guild,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 661 |     Church,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 662 |     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:687:5
[INFO] [stdout]     |
[INFO] [stdout] 680 | pub enum FeatureType {
[INFO] [stdout]     |          ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 687 |     AbandonedSettlement,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 688 |     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:706:10
[INFO] [stdout]     |
[INFO] [stdout] 706 | 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: field `notes_opt` is never read
[INFO] [stdout]   --> src/gui.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct GUI {
[INFO] [stdout]    |            --- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 57 |     notes_opt: (Vec<String>, Vec<String>),
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `inter_res_draw` is never used
[INFO] [stdout]    --> src/gui/gui_man_draw.rs:710:12
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl GUI {
[INFO] [stdout]     | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 710 |     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: 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]     |                            ^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 281 |                             buy_item = res.1;
[INFO] [stdout]     |                             ---------------- `buy_item` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `get_itype` are never used
[INFO] [stdout]     --> src/item.rs:70:12
[INFO] [stdout]      |
[INFO] [stdout]   69 | impl Item {
[INFO] [stdout]      | --------- associated items in this implementation
[INFO] [stdout]   70 |     pub fn new(
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1779 |     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: 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:1657:12
[INFO] [stdout]      |
[INFO] [stdout] 1578 | impl Puzzle {
[INFO] [stdout]      | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1657 |     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:573:12
[INFO] [stdout]     |
[INFO] [stdout] 572 | impl Settlement {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 573 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 620 |     pub fn new_small_settle(pos: (i16, i16)) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 743 |     pub fn get_shop_from_item_pos(&mut self, pos: (i16, i16)) -> Option<Shop> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 814 |     pub fn set_pos(&mut self, tpos: (i16, i16)) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 834 |     pub fn get_items_sent(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 838 |     pub fn tog_items_sent(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 842 |     pub fn get_shops(&mut self) -> HashMap<Shops, Shop> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 846 |     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: variable does not need to be mutable
[INFO] [stdout]    --> src/gamestate.rs:237:13
[INFO] [stdout]     |
[INFO] [stdout] 237 |         let mut tasks = Tasks::new();
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[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:71:5
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct PlayerStats {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 71 |     alignment: i8,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 72 |     renown: u8,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `l_rate`
[INFO] [stdout]    --> src/gamestate.rs:180:13
[INFO] [stdout]     |
[INFO] [stdout] 180 |         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: variants `Agility`, `Vitality`, `Strength`, `Trading`, `Lockpicking`, and `Herbalism` are never constructed
[INFO] [stdout]    --> src/stats.rs:161:5
[INFO] [stdout]     |
[INFO] [stdout] 160 | pub enum BuffType {
[INFO] [stdout]     |          -------- variants in this enum
[INFO] [stdout] 161 |     Agility,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 162 |     Vitality,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 163 |     Strength,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     Trading,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 169 |     Lockpicking,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 170 |     Herbalism,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `BuffType` 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 `Equip` and `Effect` are never constructed
[INFO] [stdout]    --> src/stats.rs:174:5
[INFO] [stdout]     |
[INFO] [stdout] 173 | pub enum Buff {
[INFO] [stdout]     |          ---- variants in this enum
[INFO] [stdout] 174 |     Equip {
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     Effect {
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Buff` 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: field `player_stats` is never read
[INFO] [stdout]    --> src/stats.rs:193:9
[INFO] [stdout]     |
[INFO] [stdout] 190 | pub struct Stats {
[INFO] [stdout]     |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 193 |     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 variable: `day`
[INFO] [stdout]    --> src/gamestate.rs:425:13
[INFO] [stdout]     |
[INFO] [stdout] 425 |         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:426:13
[INFO] [stdout]     |
[INFO] [stdout] 426 |         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:427:13
[INFO] [stdout]     |
[INFO] [stdout] 427 |         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: using `.clone()` on a double reference, which returns `&str` instead of cloning the inner type
[INFO] [stdout]    --> src/gui/environment_interactions.rs:708:48
[INFO] [stdout]     |
[INFO] [stdout] 708 |                     Cell::from(Span::styled(row.clone(), ratatui::style::Style::default().fg(ratatui::style::Color::Yellow)))
[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/environment_interactions.rs:710:35
[INFO] [stdout]     |
[INFO] [stdout] 710 |                     Cell::from(row.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] 
[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:398:9
[INFO] [stdout]     |
[INFO] [stdout] 398 |         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] 398 |         let _ = sfile.write_all(json.as_bytes());
[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: unused `Result` that must be used
[INFO] [stdout]    --> src/gamestate.rs:404:9
[INFO] [stdout]     |
[INFO] [stdout] 404 |         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] 404 |         let _ = writeln!(nfile, "{}", filename.clone());
[INFO] [stdout]     |         +++++++
[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:37:10
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub enum AssetType {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple variants are never constructed
[INFO] [stdout]   --> src/assets.rs:88:5
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub enum Npcs {
[INFO] [stdout]    |          ---- variants in this enum
[INFO] [stdout] 87 |     Settler,
[INFO] [stdout] 88 |     GuildMember,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 89 |     GuildHead,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 90 |     ObsidianMember,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 91 |     ObsidianSteward,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 92 |     ShopKeeper,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 93 |     Herbalist,
[INFO] [stdout] 94 |     Clinic,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 95 |     WeaponSmith,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 96 |     Armorer,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 97 |     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: enum `Documents` is never used
[INFO] [stdout]    --> src/assets.rs:101:10
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub enum Documents {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_trade` is never used
[INFO] [stdout]    --> src/assets.rs:247:8
[INFO] [stdout]     |
[INFO] [stdout] 247 | pub fn get_trade() -> Vec<HashMap<String, String>> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `documents` is never used
[INFO] [stdout]    --> src/assets.rs:308:4
[INFO] [stdout]     |
[INFO] [stdout] 308 | fn documents(doc: Documents) -> String {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_comms` is never used
[INFO] [stdout]    --> src/assets.rs:484:8
[INFO] [stdout]     |
[INFO] [stdout] 484 | 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:536:8
[INFO] [stdout]     |
[INFO] [stdout] 536 | 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:197:5
[INFO] [stdout]     |
[INFO] [stdout] 195 | pub enum Items {
[INFO] [stdout]     |          ----- variants in this enum
[INFO] [stdout] 196 |     Book,
[INFO] [stdout] 197 |     PaperScrap,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 206 |     WoodenBoard,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 207 |     IronSword,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     PineStaff,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 228 |     WoodStaff,
[INFO] [stdout] 229 |     MapleStaff,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 230 |     OakStaff,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 243 |     IronPickAxe,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 244 |     SteelPickAxe,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     IronPickHammer,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 248 |     SteelPickHammer,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     IronWarAxe,
[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:381:5
[INFO] [stdout]     |
[INFO] [stdout] 376 | pub enum PlayerTraits {
[INFO] [stdout]     |          ------------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 381 |     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`, and `Herbalism` are never constructed
[INFO] [stdout]    --> src/enums.rs:394:5
[INFO] [stdout]     |
[INFO] [stdout] 390 | pub enum ExpType {
[INFO] [stdout]     |          ------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 394 |     Luck,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 395 |     Trading,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 396 |     Lockpicking,
[INFO] [stdout] 397 |     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:410:5
[INFO] [stdout]     |
[INFO] [stdout] 401 | pub enum Plants {
[INFO] [stdout]     |          ------ variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 410 |     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:419:5
[INFO] [stdout]     |
[INFO] [stdout] 414 | pub enum Equip {
[INFO] [stdout]     |          ----- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 419 |     Hands,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 420 |     Head,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 421 |     Torso,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 422 |     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: variants `Antidote`, `Vitality`, and `Strength` are never constructed
[INFO] [stdout]    --> src/enums.rs:434:5
[INFO] [stdout]     |
[INFO] [stdout] 427 | pub enum ItemEffect {
[INFO] [stdout]     |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 434 |     Antidote,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 435 |     Agility,
[INFO] [stdout] 436 |     Vitality,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 437 |     Strength,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ItemEffect` 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:453:5
[INFO] [stdout]     |
[INFO] [stdout] 443 | pub enum Enemies {
[INFO] [stdout]     |          ------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 453 |     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:470:5
[INFO] [stdout]     |
[INFO] [stdout] 466 | pub enum NPCWrap {
[INFO] [stdout]     |          ------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 470 |     ShopNPC(ShopNPC),
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 473 |     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:488:5
[INFO] [stdout]     |
[INFO] [stdout] 485 | pub enum GUIMode {
[INFO] [stdout]     |          ------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 488 |     Interact,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 492 |     NPC,
[INFO] [stdout]     |     ^^^
[INFO] [stdout] 493 |     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:498:5
[INFO] [stdout]     |
[INFO] [stdout] 497 | pub enum GameMode {
[INFO] [stdout]     |          -------- variants in this enum
[INFO] [stdout] 498 |     Menu,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 503 |     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:519:5
[INFO] [stdout]     |
[INFO] [stdout] 515 | pub enum EncResult {
[INFO] [stdout]     |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 519 |     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:526:5
[INFO] [stdout]     |
[INFO] [stdout] 523 | pub enum InterSteps {
[INFO] [stdout]     |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 526 |     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:534:5
[INFO] [stdout]     |
[INFO] [stdout] 530 | pub enum FightSteps {
[INFO] [stdout]     |          ---------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 534 |     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:563:5
[INFO] [stdout]     |
[INFO] [stdout] 556 | pub enum EnvInter {
[INFO] [stdout]     |          -------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 563 |     Task(TaskType),
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 569 |     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:577:5
[INFO] [stdout]     |
[INFO] [stdout] 576 | pub enum TaskEnv {
[INFO] [stdout]     |          ------- variant in this enum
[INFO] [stdout] 577 |     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:584:5
[INFO] [stdout]     |
[INFO] [stdout] 583 | pub enum TaskType {
[INFO] [stdout]     |          -------- variants in this enum
[INFO] [stdout] 584 |     Plot,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 585 |     RetrieveItem,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 586 |     PassMessage,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 587 |     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:593:5
[INFO] [stdout]     |
[INFO] [stdout] 591 | pub enum Door {
[INFO] [stdout]     |          ---- variants in this enum
[INFO] [stdout] 592 |     HOpen,
[INFO] [stdout] 593 |     HUnlocked,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 596 |     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:629:5
[INFO] [stdout]     |
[INFO] [stdout] 626 | pub enum Settle {
[INFO] [stdout]     |          ------ variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 629 |     Large,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 632 |     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:640:5
[INFO] [stdout]     |
[INFO] [stdout] 636 | pub enum NodeType {
[INFO] [stdout]     |          -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 640 |     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:660:5
[INFO] [stdout]     |
[INFO] [stdout] 658 | pub enum ShopItem {
[INFO] [stdout]     |          -------- variants in this enum
[INFO] [stdout] 659 |     Item(Item),
[INFO] [stdout] 660 |     Guild,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 661 |     Church,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 662 |     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:687:5
[INFO] [stdout]     |
[INFO] [stdout] 680 | pub enum FeatureType {
[INFO] [stdout]     |          ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 687 |     AbandonedSettlement,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 688 |     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:706:10
[INFO] [stdout]     |
[INFO] [stdout] 706 | 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: field `notes_opt` is never read
[INFO] [stdout]   --> src/gui.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct GUI {
[INFO] [stdout]    |            --- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 57 |     notes_opt: (Vec<String>, Vec<String>),
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `inter_res_draw` is never used
[INFO] [stdout]    --> src/gui/gui_man_draw.rs:710:12
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl GUI {
[INFO] [stdout]     | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 710 |     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: associated items `new` and `get_itype` are never used
[INFO] [stdout]     --> src/item.rs:70:12
[INFO] [stdout]      |
[INFO] [stdout]   69 | impl Item {
[INFO] [stdout]      | --------- associated items in this implementation
[INFO] [stdout]   70 |     pub fn new(
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1779 |     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: 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:1657:12
[INFO] [stdout]      |
[INFO] [stdout] 1578 | impl Puzzle {
[INFO] [stdout]      | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1657 |     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:573:12
[INFO] [stdout]     |
[INFO] [stdout] 572 | impl Settlement {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout] 573 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 620 |     pub fn new_small_settle(pos: (i16, i16)) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 743 |     pub fn get_shop_from_item_pos(&mut self, pos: (i16, i16)) -> Option<Shop> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 814 |     pub fn set_pos(&mut self, tpos: (i16, i16)) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 834 |     pub fn get_items_sent(&mut self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 838 |     pub fn tog_items_sent(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 842 |     pub fn get_shops(&mut self) -> HashMap<Shops, Shop> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 846 |     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:71:5
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct PlayerStats {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 71 |     alignment: i8,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 72 |     renown: u8,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Agility`, `Vitality`, `Strength`, `Trading`, `Lockpicking`, and `Herbalism` are never constructed
[INFO] [stdout]    --> src/stats.rs:161:5
[INFO] [stdout]     |
[INFO] [stdout] 160 | pub enum BuffType {
[INFO] [stdout]     |          -------- variants in this enum
[INFO] [stdout] 161 |     Agility,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 162 |     Vitality,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 163 |     Strength,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     Trading,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout] 169 |     Lockpicking,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 170 |     Herbalism,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `BuffType` 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 `Equip` and `Effect` are never constructed
[INFO] [stdout]    --> src/stats.rs:174:5
[INFO] [stdout]     |
[INFO] [stdout] 173 | pub enum Buff {
[INFO] [stdout]     |          ---- variants in this enum
[INFO] [stdout] 174 |     Equip {
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     Effect {
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Buff` 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: field `player_stats` is never read
[INFO] [stdout]    --> src/stats.rs:193:9
[INFO] [stdout]     |
[INFO] [stdout] 190 | pub struct Stats {
[INFO] [stdout]     |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 193 |     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: using `.clone()` on a double reference, which returns `&str` instead of cloning the inner type
[INFO] [stdout]    --> src/gui/environment_interactions.rs:708:48
[INFO] [stdout]     |
[INFO] [stdout] 708 |                     Cell::from(Span::styled(row.clone(), ratatui::style::Style::default().fg(ratatui::style::Color::Yellow)))
[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/environment_interactions.rs:710:35
[INFO] [stdout]     |
[INFO] [stdout] 710 |                     Cell::from(row.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] 
[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:398:9
[INFO] [stdout]     |
[INFO] [stdout] 398 |         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] 398 |         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:404:9
[INFO] [stdout]     |
[INFO] [stdout] 404 |         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] 404 |         let _ = writeln!(nfile, "{}", filename.clone());
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 25.51s
[INFO] running `Command { std: "docker" "inspect" "d238a9dab1c4b0b86408e5aef1d1aea2d5b79f3f1f6ea3b9d3ba8a2156e30038", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d238a9dab1c4b0b86408e5aef1d1aea2d5b79f3f1f6ea3b9d3ba8a2156e30038", kill_on_drop: false }`
[INFO] [stdout] d238a9dab1c4b0b86408e5aef1d1aea2d5b79f3f1f6ea3b9d3ba8a2156e30038
