[INFO] cloning repository https://github.com/aseverino/openrift
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/aseverino/openrift" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Faseverino%2Fopenrift", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Faseverino%2Fopenrift'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] a859bb4601dbba1fe9ec9c605475a17b9c605c24
[INFO] checking aseverino/openrift against eca445e5ae4a6679cc27d3a09106ce245e13a5a6 for pr-162478
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Faseverino%2Fopenrift" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/aseverino/openrift
[INFO] finished tweaking git repo https://github.com/aseverino/openrift
[INFO] tweaked toml for git repo https://github.com/aseverino/openrift written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/aseverino/openrift on toolchain eca445e5ae4a6679cc27d3a09106ce245e13a5a6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/aseverino/openrift 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" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded mlua-sys v0.6.8
[INFO] [stderr]   Downloaded deprecate-until v0.1.1
[INFO] [stderr]   Downloaded which v7.0.3
[INFO] [stderr]   Downloaded bytemuck v1.23.0
[INFO] [stderr]   Downloaded mlua v0.9.9
[INFO] [stderr]   Downloaded cc v1.2.27
[INFO] [stderr]   Downloaded pathfinding v4.14.0
[INFO] [stderr]   Downloaded lua-src v547.0.0
[INFO] [stderr]   Downloaded luajit-src v210.5.12+a4f56a4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 3e88e3431795f55f31b4e0fcd14f03070697ebe5c131724ec7718331cc4018dc
[INFO] running `Command { std: "docker" "start" "3e88e3431795f55f31b4e0fcd14f03070697ebe5c131724ec7718331cc4018dc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "3e88e3431795f55f31b4e0fcd14f03070697ebe5c131724ec7718331cc4018dc", 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" "3e88e3431795f55f31b4e0fcd14f03070697ebe5c131724ec7718331cc4018dc" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "3e88e3431795f55f31b4e0fcd14f03070697ebe5c131724ec7718331cc4018dc", 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" "3e88e3431795f55f31b4e0fcd14f03070697ebe5c131724ec7718331cc4018dc" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]     Checking cfg-if v1.0.0
[INFO] [stderr]    Compiling rustix v1.0.7
[INFO] [stderr]    Compiling bitflags v2.9.1
[INFO] [stderr]    Compiling linux-raw-sys v0.9.4
[INFO] [stderr]     Checking memchr v2.7.4
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling env_home v0.1.0
[INFO] [stderr]     Checking simd-adler32 v0.3.7
[INFO] [stderr]     Checking adler2 v2.0.0
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling libc v0.2.172
[INFO] [stderr]    Compiling cc v1.2.27
[INFO] [stderr]     Checking allocator-api2 v0.2.21
[INFO] [stderr]     Checking foldhash v0.1.5
[INFO] [stderr]    Compiling zerocopy v0.8.25
[INFO] [stderr]    Compiling syn v2.0.101
[INFO] [stderr]     Checking futures-core v0.3.31
[INFO] [stderr]     Checking crc32fast v1.4.2
[INFO] [stderr]     Checking futures-sink v0.3.31
[INFO] [stderr]    Compiling semver v1.0.26
[INFO] [stderr]     Checking miniz_oxide v0.8.8
[INFO] [stderr]     Checking fdeflate v0.3.7
[INFO] [stderr]     Checking futures-io v0.3.31
[INFO] [stderr]     Checking futures-channel v0.3.31
[INFO] [stderr]     Checking pin-utils v0.1.0
[INFO] [stderr]     Checking bitflags v1.3.2
[INFO] [stderr]     Checking futures-task v0.3.31
[INFO] [stderr]    Compiling miniquad v0.4.8
[INFO] [stderr]     Checking pin-project-lite v0.2.16
[INFO] [stderr]    Compiling thiserror v2.0.12
[INFO] [stderr]     Checking slab v0.4.10
[INFO] [stderr]     Checking hashbrown v0.15.3
[INFO] [stderr]    Compiling serde v1.0.219
[INFO] [stderr]     Checking color_quant v1.1.0
[INFO] [stderr]     Checking rustc-hash v2.1.1
[INFO] [stderr]     Checking bytemuck v1.23.0
[INFO] [stderr]     Checking flate2 v1.1.1
[INFO] [stderr]     Checking ttf-parser v0.21.1
[INFO] [stderr]    Compiling serde_json v1.0.140
[INFO] [stderr]     Checking itoa v1.0.15
[INFO] [stderr]     Checking ryu v1.0.20
[INFO] [stderr]     Checking bstr v1.12.0
[INFO] [stderr]    Compiling macroquad_macro v0.1.8
[INFO] [stderr]     Checking once_cell v1.21.3
[INFO] [stderr]     Checking glam v0.27.0
[INFO] [stderr]     Checking quad-rand v0.2.3
[INFO] [stderr]     Checking png v0.17.16
[INFO] [stderr]    Compiling lua-src v547.0.0
[INFO] [stderr]     Checking integer-sqrt v0.1.5
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking indexmap v2.9.0
[INFO] [stderr]     Checking image v0.24.9
[INFO] [stderr]     Checking fontdue v0.9.3
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]    Compiling which v7.0.3
[INFO] [stderr]    Compiling luajit-src v210.5.12+a4f56a4
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling thiserror-impl v2.0.12
[INFO] [stderr]    Compiling deprecate-until v0.1.1
[INFO] [stderr]    Compiling mlua-sys v0.6.8
[INFO] [stderr]     Checking macroquad v0.4.14
[INFO] [stderr]     Checking pathfinding v4.14.0
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]     Checking mlua v0.9.9
[INFO] [stderr]     Checking rust-rogue v0.0.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `Map` and `Player`
[INFO] [stdout]   --> src/combat.rs:30:17
[INFO] [stdout]    |
[INFO] [stdout] 30 |     maps::map::{Map, MapRc},
[INFO] [stdout]    |                 ^^^
[INFO] [stdout] 31 |     monster::Monster,
[INFO] [stdout] 32 |     player::{Player, PlayerRc},
[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: `Map` and `Player`
[INFO] [stdout]   --> src/combat.rs:30:17
[INFO] [stdout]    |
[INFO] [stdout] 30 |     maps::map::{Map, MapRc},
[INFO] [stdout]    |                 ^^^
[INFO] [stdout] 31 |     monster::Monster,
[INFO] [stdout] 32 |     player::{Player, PlayerRc},
[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: `Arc`, `RwLock`, `cell::RefCell`, and `rc::Rc`
[INFO] [stdout]   --> src/creature.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     cell::RefCell,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 25 |     rc::Rc,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 26 |     sync::{Arc, RwLock},
[INFO] [stdout]    |            ^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc`, `RwLock`, `cell::RefCell`, and `rc::Rc`
[INFO] [stdout]   --> src/creature.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     cell::RefCell,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 25 |     rc::Rc,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 26 |     sync::{Arc, RwLock},
[INFO] [stdout]    |            ^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `graphics::graphics_manager::GraphicsManager`
[INFO] [stdout]   --> src/creature.rs:31:13
[INFO] [stdout]    |
[INFO] [stdout] 31 | use crate::{graphics::graphics_manager::GraphicsManager, position::Position, ui::point_f::PointF};
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `graphics::graphics_manager::GraphicsManager`
[INFO] [stdout]   --> src/creature.rs:31:13
[INFO] [stdout]    |
[INFO] [stdout] 31 | use crate::{graphics::graphics_manager::GraphicsManager, position::Position, ui::point_f::PointF};
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]   --> src/game.rs:28:28
[INFO] [stdout]    |
[INFO] [stdout] 28 | use crate::lua_interface::{self, LuaInterface, LuaInterfaceRc, LuaScripted};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]   --> src/game.rs:28:28
[INFO] [stdout]    |
[INFO] [stdout] 28 | use crate::lua_interface::{self, LuaInterface, LuaInterfaceRc, LuaScripted};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]   --> src/game.rs:37:21
[INFO] [stdout]    |
[INFO] [stdout] 37 | use crate::player::{self, Player, PlayerRc};
[INFO] [stdout]    |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SpellKind`
[INFO] [stdout]   --> src/game.rs:40:25
[INFO] [stdout]    |
[INFO] [stdout] 40 | use crate::spell_type::{SpellKind, get_spell_types};
[INFO] [stdout]    |                         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `mlua::Table`
[INFO] [stdout]   --> src/game.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 46 | use mlua::Table;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]   --> src/game.rs:37:21
[INFO] [stdout]    |
[INFO] [stdout] 37 | use crate::player::{self, Player, PlayerRc};
[INFO] [stdout]    |                     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SpellKind`
[INFO] [stdout]   --> src/game.rs:40:25
[INFO] [stdout]    |
[INFO] [stdout] 40 | use crate::spell_type::{SpellKind, get_spell_types};
[INFO] [stdout]    |                         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `mlua::Table`
[INFO] [stdout]   --> src/game.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 46 | use mlua::Table;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc`, `RwLock`, `cell::RefCell`, and `rc::Rc`
[INFO] [stdout]   --> src/items/base_item.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     cell::RefCell,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 25 |     rc::Rc,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 26 |     sync::{Arc, RwLock},
[INFO] [stdout]    |            ^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Weak`, `any::Any`, `cell::RefCell`, and `rc::Rc`
[INFO] [stdout]   --> src/items/collection.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     any::Any,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 25 |     cell::RefCell,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 26 |     collections::{HashMap, HashSet},
[INFO] [stdout] 27 |     rc::Rc,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 28 |     sync::{Arc, RwLock, Weak},
[INFO] [stdout]    |                         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HoldableGroupKind`
[INFO] [stdout]   --> src/items/collection.rs:34:35
[INFO] [stdout]    |
[INFO] [stdout] 34 |         holdable::{HoldableGroup, HoldableGroupKind},
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc`, `RwLock`, `cell::RefCell`, and `rc::Rc`
[INFO] [stdout]   --> src/items/base_item.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     cell::RefCell,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 25 |     rc::Rc,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 26 |     sync::{Arc, RwLock},
[INFO] [stdout]    |            ^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Weak`, `any::Any`, `cell::RefCell`, and `rc::Rc`
[INFO] [stdout]   --> src/items/collection.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     any::Any,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 25 |     cell::RefCell,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 26 |     collections::{HashMap, HashSet},
[INFO] [stdout] 27 |     rc::Rc,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 28 |     sync::{Arc, RwLock, Weak},
[INFO] [stdout]    |                         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HoldableGroupKind`
[INFO] [stdout]   --> src/items/collection.rs:34:35
[INFO] [stdout]    |
[INFO] [stdout] 34 |         holdable::{HoldableGroup, HoldableGroupKind},
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Item`
[INFO] [stdout]   --> src/items/container.rs:23:45
[INFO] [stdout]    |
[INFO] [stdout] 23 | use crate::items::base_item::{BaseItemData, Item};
[INFO] [stdout]    |                                             ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Item`
[INFO] [stdout]   --> src/items/container.rs:23:45
[INFO] [stdout]    |
[INFO] [stdout] 23 | use crate::items::base_item::{BaseItemData, Item};
[INFO] [stdout]    |                                             ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Item`
[INFO] [stdout]   --> src/items/holdable.rs:26:45
[INFO] [stdout]    |
[INFO] [stdout] 26 | use crate::items::base_item::{BaseItemData, Item};
[INFO] [stdout]    |                                             ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Item`
[INFO] [stdout]   --> src/items/holdable.rs:26:45
[INFO] [stdout]    |
[INFO] [stdout] 26 | use crate::items::base_item::{BaseItemData, Item};
[INFO] [stdout]    |                                             ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::items::base_item::Item`
[INFO] [stdout]   --> src/items/orb.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use crate::items::base_item::Item;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::items::base_item::Item`
[INFO] [stdout]   --> src/items/teleport.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use crate::items::base_item::Item;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MultiValue` and `UserDataMetatable`
[INFO] [stdout]   --> src/lua_interface.rs:28:84
[INFO] [stdout]    |
[INFO] [stdout] 28 |     AnyUserData, AnyUserDataExt, Error, FromLuaMulti, Function, IntoLuaMulti, Lua, MultiValue,
[INFO] [stdout]    |                                                                                    ^^^^^^^^^^
[INFO] [stdout] 29 |     RegistryKey, Result, Table, UserDataMetatable, Value,
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::items::base_item::Item`
[INFO] [stdout]   --> src/items/orb.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use crate::items::base_item::Item;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::items::base_item::Item`
[INFO] [stdout]   --> src/items/teleport.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use crate::items::base_item::Item;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Map`
[INFO] [stdout]   --> src/lua_interface.rs:36:24
[INFO] [stdout]    |
[INFO] [stdout] 36 | use crate::maps::map::{Map, MapRc};
[INFO] [stdout]    |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MultiValue` and `UserDataMetatable`
[INFO] [stdout]   --> src/lua_interface.rs:28:84
[INFO] [stdout]    |
[INFO] [stdout] 28 |     AnyUserData, AnyUserDataExt, Error, FromLuaMulti, Function, IntoLuaMulti, Lua, MultiValue,
[INFO] [stdout]    |                                                                                    ^^^^^^^^^^
[INFO] [stdout] 29 |     RegistryKey, Result, Table, UserDataMetatable, Value,
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]    --> src/lua_interface.rs:47:24
[INFO] [stdout]     |
[INFO] [stdout]  47 |             move |lua, ( $($arg),* ): ( $($ty),* )| {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |         lua_fn_opt!(lua_if, "get_monster_by_id", get_monster_by_id_callback,( id: u32 ));
[INFO] [stdout]     |         -------------------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout]     = note: this warning originates in the macro `lua_fn_opt` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Map`
[INFO] [stdout]   --> src/lua_interface.rs:36:24
[INFO] [stdout]    |
[INFO] [stdout] 36 | use crate::maps::map::{Map, MapRc};
[INFO] [stdout]    |                        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]    --> src/lua_interface.rs:47:39
[INFO] [stdout]     |
[INFO] [stdout]  47 |             move |lua, ( $($arg),* ): ( $($ty),* )| {
[INFO] [stdout]     |                                       ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |         lua_fn_opt!(lua_if, "get_monster_by_id", get_monster_by_id_callback,( id: u32 ));
[INFO] [stdout]     |         -------------------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `lua_fn_opt` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]    --> src/lua_interface.rs:47:24
[INFO] [stdout]     |
[INFO] [stdout]  47 |             move |lua, ( $($arg),* ): ( $($ty),* )| {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |         lua_fn_opt!(lua_if, "get_monster_by_id", get_monster_by_id_callback,( id: u32 ));
[INFO] [stdout]     |         -------------------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout]     = note: this warning originates in the macro `lua_fn_opt` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]    --> src/lua_interface.rs:47:24
[INFO] [stdout]     |
[INFO] [stdout]  47 |             move |lua, ( $($arg),* ): ( $($ty),* )| {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |         lua_fn_opt!(lua_if, "get_monster_kind_by_id", get_monster_kind_by_id_callback,( id: u32 ));
[INFO] [stdout]     |         ------------------------------------------------------------------------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `lua_fn_opt` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]    --> src/lua_interface.rs:47:39
[INFO] [stdout]     |
[INFO] [stdout]  47 |             move |lua, ( $($arg),* ): ( $($ty),* )| {
[INFO] [stdout]     |                                       ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |         lua_fn_opt!(lua_if, "get_monster_kind_by_id", get_monster_kind_by_id_callback,( id: u32 ));
[INFO] [stdout]     |         ------------------------------------------------------------------------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `lua_fn_opt` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]    --> src/lua_interface.rs:47:39
[INFO] [stdout]     |
[INFO] [stdout]  47 |             move |lua, ( $($arg),* ): ( $($ty),* )| {
[INFO] [stdout]     |                                       ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |         lua_fn_opt!(lua_if, "get_monster_by_id", get_monster_by_id_callback,( id: u32 ));
[INFO] [stdout]     |         -------------------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `lua_fn_opt` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around pattern
[INFO] [stdout]    --> src/lua_interface.rs:47:24
[INFO] [stdout]     |
[INFO] [stdout]  47 |             move |lua, ( $($arg),* ): ( $($ty),* )| {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |         lua_fn_opt!(lua_if, "get_monster_kind_by_id", get_monster_kind_by_id_callback,( id: u32 ));
[INFO] [stdout]     |         ------------------------------------------------------------------------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `lua_fn_opt` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `lua_interface::LuaInterfaceRc`
[INFO] [stdout]   --> src/maps/generated_map.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 |     lua_interface::LuaInterfaceRc,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]    --> src/lua_interface.rs:47:39
[INFO] [stdout]     |
[INFO] [stdout]  47 |             move |lua, ( $($arg),* ): ( $($ty),* )| {
[INFO] [stdout]     |                                       ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |         lua_fn_opt!(lua_if, "get_monster_kind_by_id", get_monster_kind_by_id_callback,( id: u32 ));
[INFO] [stdout]     |         ------------------------------------------------------------------------------------------ in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: this warning originates in the macro `lua_fn_opt` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::graphics`
[INFO] [stdout]   --> src/maps/map.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | use crate::graphics;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `lua_interface::LuaInterfaceRc`
[INFO] [stdout]   --> src/maps/generated_map.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 |     lua_interface::LuaInterfaceRc,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::graphics`
[INFO] [stdout]   --> src/maps/map.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | use crate::graphics;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Monster`
[INFO] [stdout]   --> src/maps/map.rs:39:22
[INFO] [stdout]    |
[INFO] [stdout] 39 | use crate::monster::{Monster, MonsterRc};
[INFO] [stdout]    |                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::Map`
[INFO] [stdout]   --> src/maps/map_generator.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | use serde_json::Map;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Items`
[INFO] [stdout]   --> src/maps/map_generator.rs:33:32
[INFO] [stdout]    |
[INFO] [stdout] 33 | use crate::items::collection::{Items, ItemsArc};
[INFO] [stdout]    |                                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Monster`
[INFO] [stdout]   --> src/maps/map.rs:39:22
[INFO] [stdout]    |
[INFO] [stdout] 39 | use crate::monster::{Monster, MonsterRc};
[INFO] [stdout]    |                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::Map`
[INFO] [stdout]   --> src/maps/map_generator.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | use serde_json::Map;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MonsterKind` and `MonsterKinds`
[INFO] [stdout]   --> src/maps/map_generator.rs:39:27
[INFO] [stdout]    |
[INFO] [stdout] 39 | use crate::monster_kind::{MonsterKind, MonsterKinds, MonsterKindsVecArc};
[INFO] [stdout]    |                           ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Items`
[INFO] [stdout]   --> src/maps/map_generator.rs:33:32
[INFO] [stdout]    |
[INFO] [stdout] 33 | use crate::items::collection::{Items, ItemsArc};
[INFO] [stdout]    |                                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MonsterKind` and `MonsterKinds`
[INFO] [stdout]   --> src/maps/map_generator.rs:39:27
[INFO] [stdout]    |
[INFO] [stdout] 39 | use crate::monster_kind::{MonsterKind, MonsterKinds, MonsterKindsVecArc};
[INFO] [stdout]    |                           ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `monster` and `tile`
[INFO] [stdout]   --> src/maps/map_generator.rs:42:13
[INFO] [stdout]    |
[INFO] [stdout] 42 | use crate::{monster, tile};
[INFO] [stdout]    |             ^^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MonsterKinds`
[INFO] [stdout]   --> src/maps/overworld_generator.rs:34:20
[INFO] [stdout]    |
[INFO] [stdout] 34 |     monster_kind::{MonsterKinds, MonsterKindsVecArc},
[INFO] [stdout]    |                    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `monster` and `tile`
[INFO] [stdout]   --> src/maps/map_generator.rs:42:13
[INFO] [stdout]    |
[INFO] [stdout] 42 | use crate::{monster, tile};
[INFO] [stdout]    |             ^^^^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MonsterKinds`
[INFO] [stdout]   --> src/maps/overworld_generator.rs:34:20
[INFO] [stdout]    |
[INFO] [stdout] 34 |     monster_kind::{MonsterKinds, MonsterKindsVecArc},
[INFO] [stdout]    |                    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::graphics::graphics_manager::GraphicsManager`
[INFO] [stdout]   --> src/monster.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use crate::graphics::graphics_manager::GraphicsManager;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MonsterKindSprite`
[INFO] [stdout]   --> src/monster.rs:27:40
[INFO] [stdout]    |
[INFO] [stdout] 27 | use crate::monster_kind::{MonsterKind, MonsterKindSprite};
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::graphics::graphics_manager::GraphicsManager`
[INFO] [stdout]   --> src/monster.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use crate::graphics::graphics_manager::GraphicsManager;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MonsterKindSprite`
[INFO] [stdout]   --> src/monster.rs:27:40
[INFO] [stdout]    |
[INFO] [stdout] 27 | use crate::monster_kind::{MonsterKind, MonsterKindSprite};
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::graphics::graphics_manager::GraphicsManager`
[INFO] [stdout]   --> src/player.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use crate::graphics::graphics_manager::GraphicsManager;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `spell_type`
[INFO] [stdout]   --> src/player.rs:31:23
[INFO] [stdout]    |
[INFO] [stdout] 31 | use crate::{graphics, spell_type};
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::graphics::graphics_manager::GraphicsManager`
[INFO] [stdout]   --> src/player.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use crate::graphics::graphics_manager::GraphicsManager;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::spell_type::SpellType`
[INFO] [stdout]   --> src/spell_execution.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | use crate::spell_type::SpellType;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `spell_type`
[INFO] [stdout]   --> src/player.rs:31:23
[INFO] [stdout]    |
[INFO] [stdout] 31 | use crate::{graphics, spell_type};
[INFO] [stdout]    |                       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::spell_type::SpellType`
[INFO] [stdout]   --> src/spell_execution.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | use crate::spell_type::SpellType;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AnchorKind`, `Anchor`, and `quad_f::QuadF`
[INFO] [stdout]   --> src/ui/widget_button.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     quad_f::QuadF,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 32 |     size_f::SizeF,
[INFO] [stdout] 33 |     widget::{Anchor, AnchorKind, Widget, WidgetBase, WidgetBasicConstructor},
[INFO] [stdout]    |              ^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rc`
[INFO] [stdout]   --> src/ui/widget_panel.rs:30:10
[INFO] [stdout]    |
[INFO] [stdout] 30 |     rc::{Rc, Weak},
[INFO] [stdout]    |          ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AnchorKind`, `Anchor`, and `quad_f::QuadF`
[INFO] [stdout]   --> src/ui/widget_button.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 |     quad_f::QuadF,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 32 |     size_f::SizeF,
[INFO] [stdout] 33 |     widget::{Anchor, AnchorKind, Widget, WidgetBase, WidgetBasicConstructor},
[INFO] [stdout]    |              ^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AnchorKind`, `Anchor`, `point_f::PointF`, `quad_f::QuadF`, and `size_f::SizeF`
[INFO] [stdout]   --> src/ui/widget_panel.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     point_f::PointF,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 36 |     quad_f::QuadF,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 37 |     size_f::SizeF,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 38 |     widget::{Anchor, AnchorKind, Widget, WidgetBase, WidgetBasicConstructor},
[INFO] [stdout]    |              ^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AnchorKind`, `Anchor`, `point_f::PointF`, and `quad_f::QuadF`
[INFO] [stdout]   --> src/ui/widget_text.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 |     point_f::PointF,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 31 |     quad_f::QuadF,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 32 |     size_f::SizeF,
[INFO] [stdout] 33 |     widget::{Anchor, AnchorKind, Widget, WidgetBase, WidgetBasicConstructor},
[INFO] [stdout]    |              ^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rc`
[INFO] [stdout]   --> src/ui/widget_text.rs:38:10
[INFO] [stdout]    |
[INFO] [stdout] 38 |     rc::{Rc, Weak},
[INFO] [stdout]    |          ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rc`
[INFO] [stdout]   --> src/ui/widget_panel.rs:30:10
[INFO] [stdout]    |
[INFO] [stdout] 30 |     rc::{Rc, Weak},
[INFO] [stdout]    |          ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AnchorKind`, `Anchor`, `point_f::PointF`, `quad_f::QuadF`, and `size_f::SizeF`
[INFO] [stdout]   --> src/ui/widget_panel.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     point_f::PointF,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 36 |     quad_f::QuadF,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 37 |     size_f::SizeF,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 38 |     widget::{Anchor, AnchorKind, Widget, WidgetBase, WidgetBasicConstructor},
[INFO] [stdout]    |              ^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AnchorKind`, `Anchor`, `point_f::PointF`, and `quad_f::QuadF`
[INFO] [stdout]   --> src/ui/widget_text.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 |     point_f::PointF,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 31 |     quad_f::QuadF,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 32 |     size_f::SizeF,
[INFO] [stdout] 33 |     widget::{Anchor, AnchorKind, Widget, WidgetBase, WidgetBasicConstructor},
[INFO] [stdout]    |              ^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rc`
[INFO] [stdout]   --> src/ui/widget_text.rs:38:10
[INFO] [stdout]    |
[INFO] [stdout] 38 |     rc::{Rc, Weak},
[INFO] [stdout]    |          ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/game.rs:728:17
[INFO] [stdout]     |
[INFO] [stdout] 728 |                 _ => {}
[INFO] [stdout]     |                 ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/game.rs:728:17
[INFO] [stdout]     |
[INFO] [stdout] 676 |                 UiEvent::IncStrength => {
[INFO] [stdout]     |                 -------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 682 |                 UiEvent::IncDexterity => {
[INFO] [stdout]     |                 --------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 688 |                 UiEvent::IncIntelligence => {
[INFO] [stdout]     |                 ------------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 694 |                 UiEvent::SkillPurchase(skill) => {
[INFO] [stdout]     |                 ----------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 728 |                 _ => {}
[INFO] [stdout]     |                 ^ ...and 1 other patterns collectively make 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/game.rs:823:25
[INFO] [stdout]     |
[INFO] [stdout] 823 |                         _ => "Unknown Tile",
[INFO] [stdout]     |                         ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/game.rs:823:25
[INFO] [stdout]     |
[INFO] [stdout] 820 |                         TileKind::Floor => "Floor",
[INFO] [stdout]     |                         --------------- matches some of the same values
[INFO] [stdout] 821 |                         TileKind::Wall => "Wall",
[INFO] [stdout]     |                         -------------- matches some of the same values
[INFO] [stdout] 822 |                         TileKind::Chasm => "Chasm",
[INFO] [stdout]     |                         --------------- matches some of the same values
[INFO] [stdout] 823 |                         _ => "Unknown Tile",
[INFO] [stdout]     |                         ^ collectively making this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/game.rs:728:17
[INFO] [stdout]     |
[INFO] [stdout] 728 |                 _ => {}
[INFO] [stdout]     |                 ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/game.rs:728:17
[INFO] [stdout]     |
[INFO] [stdout] 676 |                 UiEvent::IncStrength => {
[INFO] [stdout]     |                 -------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 682 |                 UiEvent::IncDexterity => {
[INFO] [stdout]     |                 --------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 688 |                 UiEvent::IncIntelligence => {
[INFO] [stdout]     |                 ------------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 694 |                 UiEvent::SkillPurchase(skill) => {
[INFO] [stdout]     |                 ----------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 728 |                 _ => {}
[INFO] [stdout]     |                 ^ ...and 1 other patterns collectively make 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/game.rs:823:25
[INFO] [stdout]     |
[INFO] [stdout] 823 |                         _ => "Unknown Tile",
[INFO] [stdout]     |                         ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/game.rs:823:25
[INFO] [stdout]     |
[INFO] [stdout] 820 |                         TileKind::Floor => "Floor",
[INFO] [stdout]     |                         --------------- matches some of the same values
[INFO] [stdout] 821 |                         TileKind::Wall => "Wall",
[INFO] [stdout]     |                         -------------- matches some of the same values
[INFO] [stdout] 822 |                         TileKind::Chasm => "Chasm",
[INFO] [stdout]     |                         --------------- matches some of the same values
[INFO] [stdout] 823 |                         _ => "Unknown Tile",
[INFO] [stdout]     |                         ^ collectively making this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/tile.rs:83:17
[INFO] [stdout]    |
[INFO] [stdout] 83 |             let mut texture = match texture_result {
[INFO] [stdout]    |                 ----^^^^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/tile.rs:83:17
[INFO] [stdout]    |
[INFO] [stdout] 83 |             let mut texture = match texture_result {
[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 import: `AnyUserDataExt`
[INFO] [stdout]   --> src/lua_interface.rs:28:18
[INFO] [stdout]    |
[INFO] [stdout] 28 |     AnyUserData, AnyUserDataExt, Error, FromLuaMulti, Function, IntoLuaMulti, Lua, MultiValue,
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `dead_at_pos` is never read
[INFO] [stdout]   --> src/combat.rs:61:45
[INFO] [stdout]    |
[INFO] [stdout] 61 |     let mut dead_at_pos: Option<Position> = None;
[INFO] [stdout]    |                                             ^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 70 |             dead_at_pos = Some(target_pos);
[INFO] [stdout]    |             ------------------------------ `dead_at_pos` is overwritten here before the previous value is read
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AnyUserDataExt`
[INFO] [stdout]   --> src/lua_interface.rs:28:18
[INFO] [stdout]    |
[INFO] [stdout] 28 |     AnyUserData, AnyUserDataExt, Error, FromLuaMulti, Function, IntoLuaMulti, Lua, MultiValue,
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `current_tier` is never read
[INFO] [stdout]    --> src/game.rs:300:36
[INFO] [stdout]     |
[INFO] [stdout] 300 |             let mut current_tier = 0u32;
[INFO] [stdout]     |                                    ^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 306 |                     current_tier = map.generated_map.tier;
[INFO] [stdout]     |                     ------------------------------------- `current_tier` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `dead_at_pos` is never read
[INFO] [stdout]   --> src/combat.rs:61:45
[INFO] [stdout]    |
[INFO] [stdout] 61 |     let mut dead_at_pos: Option<Position> = None;
[INFO] [stdout]    |                                             ^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 70 |             dead_at_pos = Some(target_pos);
[INFO] [stdout]    |             ------------------------------ `dead_at_pos` is overwritten here before the previous value is read
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `current_tier` is never read
[INFO] [stdout]    --> src/game.rs:300:36
[INFO] [stdout]     |
[INFO] [stdout] 300 |             let mut current_tier = 0u32;
[INFO] [stdout]     |                                    ^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 306 |                     current_tier = map.generated_map.tier;
[INFO] [stdout]     |                     ------------------------------------- `current_tier` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/items/base_item.rs:127:13
[INFO] [stdout]     |
[INFO] [stdout] 127 |             _ => None,
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/items/base_item.rs:127:13
[INFO] [stdout]     |
[INFO] [stdout] 122 |             Item::Weapon(w) => Some(&w.base_holdable),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 123 |             Item::Armor(a) => Some(&a.base_holdable),
[INFO] [stdout]     |             -------------- matches some of the same values
[INFO] [stdout] 124 |             Item::Shield(s) => Some(&s.base_holdable),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 125 |             Item::Helmet(h) => Some(&h.base_holdable),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 126 |             Item::Boots(b) => Some(&b.base_holdable),
[INFO] [stdout] 127 |             _ => None,
[INFO] [stdout]     |             ^ ...and 1 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/items/base_item.rs:127:13
[INFO] [stdout]     |
[INFO] [stdout] 127 |             _ => None,
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/items/base_item.rs:127:13
[INFO] [stdout]     |
[INFO] [stdout] 122 |             Item::Weapon(w) => Some(&w.base_holdable),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 123 |             Item::Armor(a) => Some(&a.base_holdable),
[INFO] [stdout]     |             -------------- matches some of the same values
[INFO] [stdout] 124 |             Item::Shield(s) => Some(&s.base_holdable),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 125 |             Item::Helmet(h) => Some(&h.base_holdable),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 126 |             Item::Boots(b) => Some(&b.base_holdable),
[INFO] [stdout] 127 |             _ => None,
[INFO] [stdout]     |             ^ ...and 1 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/player.rs:154:13
[INFO] [stdout]     |
[INFO] [stdout] 154 |             _ => {
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/player.rs:154:13
[INFO] [stdout]     |
[INFO] [stdout] 149 |             Item::Weapon(w) => self.equipment.weapon = Some(w),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 150 |             Item::Armor(a) => self.equipment.armor = Some(a),
[INFO] [stdout]     |             -------------- matches some of the same values
[INFO] [stdout] 151 |             Item::Shield(s) => self.equipment.shield = Some(s),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 152 |             Item::Helmet(h) => self.equipment.helmet = Some(h),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 153 |             Item::Boots(b) => self.equipment.boots = Some(b),
[INFO] [stdout] 154 |             _ => {
[INFO] [stdout]     |             ^ ...and 1 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]   --> src/spell_type.rs:65:20
[INFO] [stdout]    |
[INFO] [stdout] 65 |     fn draw(&self, offset: PointF) {
[INFO] [stdout]    |                    ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sprite_arc`
[INFO] [stdout]   --> src/spell_type.rs:66:21
[INFO] [stdout]    |
[INFO] [stdout] 66 |         if let Some(sprite_arc) = &self.sprite {}
[INFO] [stdout]    |                     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sprite_arc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ui`
[INFO] [stdout]    --> src/ui/widget.rs:110:12
[INFO] [stdout]     |
[INFO] [stdout] 110 |     fn new(ui: &mut Ui, id: u32, parent: Option<Weak<RefCell<dyn Widget>>>) -> Rc<RefCell<Self>>
[INFO] [stdout]     |            ^^ help: if this is intentional, prefix it with an underscore: `_ui`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/player.rs:154:13
[INFO] [stdout]     |
[INFO] [stdout] 154 |             _ => {
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/player.rs:154:13
[INFO] [stdout]     |
[INFO] [stdout] 149 |             Item::Weapon(w) => self.equipment.weapon = Some(w),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 150 |             Item::Armor(a) => self.equipment.armor = Some(a),
[INFO] [stdout]     |             -------------- matches some of the same values
[INFO] [stdout] 151 |             Item::Shield(s) => self.equipment.shield = Some(s),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 152 |             Item::Helmet(h) => self.equipment.helmet = Some(h),
[INFO] [stdout]     |             --------------- matches some of the same values
[INFO] [stdout] 153 |             Item::Boots(b) => self.equipment.boots = Some(b),
[INFO] [stdout] 154 |             _ => {
[INFO] [stdout]     |             ^ ...and 1 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]   --> src/spell_type.rs:65:20
[INFO] [stdout]    |
[INFO] [stdout] 65 |     fn draw(&self, offset: PointF) {
[INFO] [stdout]    |                    ^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sprite_arc`
[INFO] [stdout]   --> src/spell_type.rs:66:21
[INFO] [stdout]    |
[INFO] [stdout] 66 |         if let Some(sprite_arc) = &self.sprite {}
[INFO] [stdout]    |                     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sprite_arc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ui`
[INFO] [stdout]    --> src/ui/widget.rs:110:12
[INFO] [stdout]     |
[INFO] [stdout] 110 |     fn new(ui: &mut Ui, id: u32, parent: Option<Weak<RefCell<dyn Widget>>>) -> Rc<RefCell<Self>>
[INFO] [stdout]     |            ^^ help: if this is intentional, prefix it with an underscore: `_ui`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `title_id`
[INFO] [stdout]     --> src/ui/manager.rs:1190:13
[INFO] [stdout]      |
[INFO] [stdout] 1190 |         let title_id = self.id_counter + 1;
[INFO] [stdout]      |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_title_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_player`, `is_monster`, and `as_any` are never used
[INFO] [stdout]   --> src/creature.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub trait Creature {
[INFO] [stdout]    |           -------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 43 |     fn is_player(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     fn is_monster(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     fn as_any(&self) -> &dyn std::any::Any;
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Confirm` is never constructed
[INFO] [stdout]   --> src/game.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub enum PlayerEvent {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 65 |     Confirm,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PlayerEvent` 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 `print_overworld` is never used
[INFO] [stdout]    --> src/game.rs:389:8
[INFO] [stdout]     |
[INFO] [stdout] 389 | pub fn print_overworld(game: &mut GameState) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `AttackConfirm` is never constructed
[INFO] [stdout]   --> src/input.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub enum KeyboardAction {
[INFO] [stdout]    |          -------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 37 |     AttackConfirm,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `KeyboardAction` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Holdable` is never constructed
[INFO] [stdout]   --> src/items/base_item.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub enum ItemKind {
[INFO] [stdout]    |          -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 62 |     Holdable(HoldableGroupKind),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ItemKind` 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: methods `is_holdable`, `as_holdable`, and `as_weapon` are never used
[INFO] [stdout]    --> src/items/base_item.rs:113:12
[INFO] [stdout]     |
[INFO] [stdout]  92 | impl Item {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn is_holdable(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn as_holdable(&self) -> Option<&BaseHoldableItemData> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn as_weapon(&self) -> Option<&Weapon> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `remove_item` is never used
[INFO] [stdout]   --> src/items/container.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl Container {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn remove_item(&mut self, item_id: u32) -> Option<u32> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `class`, `attribute_modifier`, `required`, and `slot` are never read
[INFO] [stdout]   --> src/items/holdable.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct BaseHoldableItemData {
[INFO] [stdout]    |            -------------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub class: String,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub attribute_modifier: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 37 |     pub required: Vec<Vec<serde_json::Value>>,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 38 |     pub slot: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BaseHoldableItemData` 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 `two_handed` is never read
[INFO] [stdout]    --> src/items/holdable.rs:104:9
[INFO] [stdout]     |
[INFO] [stdout]  99 | pub struct Weapon {
[INFO] [stdout]     |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub two_handed: bool,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Weapon` 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 `defense_dice` is never read
[INFO] [stdout]    --> src/items/holdable.rs:127:9
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct Armor {
[INFO] [stdout]     |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub defense_dice: Vec<u32>,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Armor` 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 `Wall` is never constructed
[INFO] [stdout]   --> src/maps/mod.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum MapTheme {
[INFO] [stdout]    |          -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 36 |     Wall,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MapTheme` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `walkable_cache` is never read
[INFO] [stdout]   --> src/maps/generated_map.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct GeneratedMap {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub walkable_cache: Vec<Position>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GeneratedMap` 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: associated items `get_map_status` and `carve_straight_path` are never used
[INFO] [stdout]    --> src/maps/map_generator.rs:153:12
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl MapGenerator {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn get_map_status(&self, opos: &OverworldPos) -> MapStatus {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     fn carve_straight_path(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_path` is never used
[INFO] [stdout]    --> src/maps/navigator.rs:211:8
[INFO] [stdout]     |
[INFO] [stdout] 211 | pub fn find_path<F>(
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `add_mana` is never used
[INFO] [stdout]    --> src/player.rs:131:8
[INFO] [stdout]     |
[INFO] [stdout]  78 | impl Player {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 131 |     fn add_mana(&mut self, amount: i32) {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_valid` and `distance_to` are never used
[INFO] [stdout]   --> src/position.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | impl Position {
[INFO] [stdout]    | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn is_valid(&self, width: usize, height: usize) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn distance_to(&self, other: &Position) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SpellExecution` is never constructed
[INFO] [stdout]   --> src/spell_execution.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct SpellExecution<'a> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `kind` and `description` are never read
[INFO] [stdout]   --> src/spell_type.rs:50:9
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct SpellType {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub kind: SpellKind,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub description: String,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SpellType` 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: method `draw` is never used
[INFO] [stdout]   --> src/spell_type.rs:65:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | impl SpellType {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] 65 |     fn draw(&self, offset: PointF) {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `has_container` is never used
[INFO] [stdout]    --> src/tile.rs:146:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | impl Tile {
[INFO] [stdout]     | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub fn has_container(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `in_bounds` is never used
[INFO] [stdout]   --> src/tile_map.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl TileMap {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn in_bounds(&self, pos: Position) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_zero` and `is_valid` are never used
[INFO] [stdout]   --> src/ui/point_f.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl PointF {
[INFO] [stdout]    | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn is_zero(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn is_valid(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_valid`, `is_zero`, `is_empty`, `area`, and `contains` are never used
[INFO] [stdout]   --> src/ui/quad_f.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl QuadF {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn is_valid(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn is_zero(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn area(&self) -> f32 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn contains(&self, x: f32, y: f32) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_zero`, `is_valid`, and `to_quad` are never used
[INFO] [stdout]   --> src/ui/size_f.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl SizeF {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn is_zero(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn is_valid(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn to_quad(&self, pos: PointF) -> QuadF {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/ui/widget.rs:107:8
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub trait Widget: WidgetBasicConstructor + Any + Debug + 'static {
[INFO] [stdout]     |           ------ methods in this trait
[INFO] [stdout] 107 |     fn as_any(&self) -> &dyn Any;
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     fn as_button(&self) -> Option<&WidgetButton> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     fn set_parent(&mut self, parent: Option<Weak<RefCell<dyn Widget>>>) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     fn get_parent_mut(&mut self) -> &mut Option<Weak<RefCell<dyn Widget>>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     fn get_position(&self) -> PointF {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     fn get_size(&self) -> SizeF {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     fn get_margin_top(&self) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 217 |     fn get_margin_left(&self) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 220 |     fn get_margin_right(&self) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     fn get_margin_bottom(&self) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     fn get_margin(&self) -> QuadF {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     fn set_margin_bottom(&mut self, margin: f32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     fn get_coords(&self) -> QuadF {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 359 |     fn set_position(&mut self, pos: PointF) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `title_id`
[INFO] [stdout]     --> src/ui/manager.rs:1190:13
[INFO] [stdout]      |
[INFO] [stdout] 1190 |         let title_id = self.id_counter + 1;
[INFO] [stdout]      |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_title_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_player`, `is_monster`, and `as_any` are never used
[INFO] [stdout]   --> src/creature.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub trait Creature {
[INFO] [stdout]    |           -------- methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 43 |     fn is_player(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     fn is_monster(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     fn as_any(&self) -> &dyn std::any::Any;
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Confirm` is never constructed
[INFO] [stdout]   --> src/game.rs:65:5
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub enum PlayerEvent {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 65 |     Confirm,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PlayerEvent` 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 `print_overworld` is never used
[INFO] [stdout]    --> src/game.rs:389:8
[INFO] [stdout]     |
[INFO] [stdout] 389 | pub fn print_overworld(game: &mut GameState) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `AttackConfirm` is never constructed
[INFO] [stdout]   --> src/input.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub enum KeyboardAction {
[INFO] [stdout]    |          -------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 37 |     AttackConfirm,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `KeyboardAction` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Holdable` is never constructed
[INFO] [stdout]   --> src/items/base_item.rs:62:5
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub enum ItemKind {
[INFO] [stdout]    |          -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 62 |     Holdable(HoldableGroupKind),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ItemKind` 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: methods `is_holdable`, `as_holdable`, and `as_weapon` are never used
[INFO] [stdout]    --> src/items/base_item.rs:113:12
[INFO] [stdout]     |
[INFO] [stdout]  92 | impl Item {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn is_holdable(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn as_holdable(&self) -> Option<&BaseHoldableItemData> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn as_weapon(&self) -> Option<&Weapon> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `remove_item` is never used
[INFO] [stdout]   --> src/items/container.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl Container {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn remove_item(&mut self, item_id: u32) -> Option<u32> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `class`, `attribute_modifier`, `required`, and `slot` are never read
[INFO] [stdout]   --> src/items/holdable.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct BaseHoldableItemData {
[INFO] [stdout]    |            -------------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub class: String,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub attribute_modifier: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 37 |     pub required: Vec<Vec<serde_json::Value>>,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 38 |     pub slot: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BaseHoldableItemData` 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 `two_handed` is never read
[INFO] [stdout]    --> src/items/holdable.rs:104:9
[INFO] [stdout]     |
[INFO] [stdout]  99 | pub struct Weapon {
[INFO] [stdout]     |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub two_handed: bool,
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Weapon` 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 `defense_dice` is never read
[INFO] [stdout]    --> src/items/holdable.rs:127:9
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct Armor {
[INFO] [stdout]     |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub defense_dice: Vec<u32>,
[INFO] [stdout]     |         ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Armor` 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 `Wall` is never constructed
[INFO] [stdout]   --> src/maps/mod.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum MapTheme {
[INFO] [stdout]    |          -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 36 |     Wall,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MapTheme` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `walkable_cache` is never read
[INFO] [stdout]   --> src/maps/generated_map.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct GeneratedMap {
[INFO] [stdout]    |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub walkable_cache: Vec<Position>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GeneratedMap` 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: associated items `get_map_status` and `carve_straight_path` are never used
[INFO] [stdout]    --> src/maps/map_generator.rs:153:12
[INFO] [stdout]     |
[INFO] [stdout] 122 | impl MapGenerator {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 153 |     pub fn get_map_status(&self, opos: &OverworldPos) -> MapStatus {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 328 |     fn carve_straight_path(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_path` is never used
[INFO] [stdout]    --> src/maps/navigator.rs:211:8
[INFO] [stdout]     |
[INFO] [stdout] 211 | pub fn find_path<F>(
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `add_mana` is never used
[INFO] [stdout]    --> src/player.rs:131:8
[INFO] [stdout]     |
[INFO] [stdout]  78 | impl Player {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 131 |     fn add_mana(&mut self, amount: i32) {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_valid` and `distance_to` are never used
[INFO] [stdout]   --> src/position.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | impl Position {
[INFO] [stdout]    | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn is_valid(&self, width: usize, height: usize) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn distance_to(&self, other: &Position) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SpellExecution` is never constructed
[INFO] [stdout]   --> src/spell_execution.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct SpellExecution<'a> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `kind` and `description` are never read
[INFO] [stdout]   --> src/spell_type.rs:50:9
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct SpellType {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub kind: SpellKind,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub description: String,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SpellType` 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: method `draw` is never used
[INFO] [stdout]   --> src/spell_type.rs:65:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | impl SpellType {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] 65 |     fn draw(&self, offset: PointF) {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `has_container` is never used
[INFO] [stdout]    --> src/tile.rs:146:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | impl Tile {
[INFO] [stdout]     | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub fn has_container(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `in_bounds` is never used
[INFO] [stdout]   --> src/tile_map.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl TileMap {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn in_bounds(&self, pos: Position) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_zero` and `is_valid` are never used
[INFO] [stdout]   --> src/ui/point_f.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl PointF {
[INFO] [stdout]    | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn is_zero(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn is_valid(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_valid`, `is_zero`, `is_empty`, `area`, and `contains` are never used
[INFO] [stdout]   --> src/ui/quad_f.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl QuadF {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn is_valid(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn is_zero(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn area(&self) -> f32 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn contains(&self, x: f32, y: f32) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_zero`, `is_valid`, and `to_quad` are never used
[INFO] [stdout]   --> src/ui/size_f.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl SizeF {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn is_zero(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn is_valid(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn to_quad(&self, pos: PointF) -> QuadF {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/ui/widget.rs:107:8
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub trait Widget: WidgetBasicConstructor + Any + Debug + 'static {
[INFO] [stdout]     |           ------ methods in this trait
[INFO] [stdout] 107 |     fn as_any(&self) -> &dyn Any;
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     fn as_button(&self) -> Option<&WidgetButton> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 153 |     fn set_parent(&mut self, parent: Option<Weak<RefCell<dyn Widget>>>) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     fn get_parent_mut(&mut self) -> &mut Option<Weak<RefCell<dyn Widget>>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     fn get_position(&self) -> PointF {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     fn get_size(&self) -> SizeF {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     fn get_margin_top(&self) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 217 |     fn get_margin_left(&self) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 220 |     fn get_margin_right(&self) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     fn get_margin_bottom(&self) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     fn get_margin(&self) -> QuadF {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     fn set_margin_bottom(&mut self, margin: f32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     fn get_coords(&self) -> QuadF {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 359 |     fn set_position(&mut self, pos: PointF) {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 56.34s
[INFO] running `Command { std: "docker" "inspect" "3e88e3431795f55f31b4e0fcd14f03070697ebe5c131724ec7718331cc4018dc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3e88e3431795f55f31b4e0fcd14f03070697ebe5c131724ec7718331cc4018dc", kill_on_drop: false }`
[INFO] [stdout] 3e88e3431795f55f31b4e0fcd14f03070697ebe5c131724ec7718331cc4018dc
