[INFO] cloning repository https://github.com/jamiebidelia/star_slammers
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jamiebidelia/star_slammers" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjamiebidelia%2Fstar_slammers", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjamiebidelia%2Fstar_slammers'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 689d03bb99bc7f2fc2b24fcd9f71555316b57f66
[INFO] testing jamiebidelia/star_slammers against beta-2025-09-21 for beta-1.91-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjamiebidelia%2Fstar_slammers" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/jamiebidelia/star_slammers
[INFO] finished tweaking git repo https://github.com/jamiebidelia/star_slammers
[INFO] tweaked toml for git repo https://github.com/jamiebidelia/star_slammers written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/jamiebidelia/star_slammers on toolchain beta-2025-09-21
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2025-09-21" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/jamiebidelia/star_slammers 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" "+beta-2025-09-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-09-21" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 34437b57b61e63a16324f88806cc55e2d82f78cabb3a6d3aee1cea6557805964
[INFO] running `Command { std: "docker" "start" "-a" "34437b57b61e63a16324f88806cc55e2d82f78cabb3a6d3aee1cea6557805964", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "34437b57b61e63a16324f88806cc55e2d82f78cabb3a6d3aee1cea6557805964", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "34437b57b61e63a16324f88806cc55e2d82f78cabb3a6d3aee1cea6557805964", kill_on_drop: false }`
[INFO] [stdout] 34437b57b61e63a16324f88806cc55e2d82f78cabb3a6d3aee1cea6557805964
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-09-21" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 09b2549f9808c2714f92a3fd95dccf8218a6cfd4bcbe595c66f0a21ef9289219
[INFO] running `Command { std: "docker" "start" "-a" "09b2549f9808c2714f92a3fd95dccf8218a6cfd4bcbe595c66f0a21ef9289219", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.55
[INFO] [stderr]    Compiling cc v1.0.37
[INFO] [stderr]    Compiling pkg-config v0.3.14
[INFO] [stderr]    Compiling gcc v0.3.55
[INFO] [stderr]    Compiling cfg-if v0.1.9
[INFO] [stderr]    Compiling bitflags v0.1.1
[INFO] [stderr]    Compiling log v0.4.6
[INFO] [stderr]    Compiling lua v0.0.10
[INFO] [stderr]    Compiling ncurses v5.99.0
[INFO] [stderr]    Compiling pancurses v0.16.1
[INFO] [stderr]    Compiling star_slammers v0.1.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `crate::camera`
[INFO] [stdout]   --> src/camera/tests.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use crate::camera;
[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: `crate::creature`
[INFO] [stdout]   --> src/camera/tests.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::creature;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::tile`
[INFO] [stdout]   --> src/camera/tests.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::tile;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::tile_map`
[INFO] [stdout]   --> src/camera/tests.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use crate::tile_map;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::menuaction`
[INFO] [stdout]   --> src/chargen.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use crate::menuaction;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::mode`
[INFO] [stdout]   --> src/chargen.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use crate::mode;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/attributeslider.rs:294:14
[INFO] [stdout]     |
[INFO] [stdout] 294 |         while(self.done == false)
[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] 294 -         while(self.done == false)
[INFO] [stdout] 294 +         while self.done == false
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this attribute can only be applied at the crate level
[INFO] [stdout]   --> src/creature.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | #![doc(html_no_source)]
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: read <https://doc.rust-lang.org/nightly/rustdoc/the-doc-attribute.html#at-the-crate-level> for more information
[INFO] [stdout]    = note: `#[warn(invalid_doc_attributes)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this attribute can only be applied at the crate level
[INFO] [stdout]   --> src/rng.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | #![doc(html_no_source)]
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: read <https://doc.rust-lang.org/nightly/rustdoc/the-doc-attribute.html#at-the-crate-level> for more information
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this attribute can only be applied at the crate level
[INFO] [stdout]   --> src/skill.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | #![doc(html_no_source)]
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: read <https://doc.rust-lang.org/nightly/rustdoc/the-doc-attribute.html#at-the-crate-level> for more information
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `stat1` is never read
[INFO] [stdout]    --> src/creature.rs:217:17
[INFO] [stdout]     |
[INFO] [stdout] 217 |         let mut stat1 = 0;
[INFO] [stdout]     |                 ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `stat2` is never read
[INFO] [stdout]    --> src/creature.rs:218:17
[INFO] [stdout]     |
[INFO] [stdout] 218 |         let mut stat2 = 0;
[INFO] [stdout]     |                 ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `stat3` is never read
[INFO] [stdout]    --> src/creature.rs:219:17
[INFO] [stdout]     |
[INFO] [stdout] 219 |         let mut stat3 = 0;
[INFO] [stdout]     |                 ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `defense` is never read
[INFO] [stdout]    --> src/creature.rs:220:17
[INFO] [stdout]     |
[INFO] [stdout] 220 |         let mut defense = 0;
[INFO] [stdout]     |                 ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_camera`
[INFO] [stdout]    --> src/camera/mod.rs:254:19
[INFO] [stdout]     |
[INFO] [stdout] 254 |                   game_camera: &Camera,
[INFO] [stdout]     |                   ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_camera`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `y` is never read
[INFO] [stdout]    --> src/camera/mod.rs:540:9
[INFO] [stdout]     |
[INFO] [stdout] 540 |         y = y + 1;
[INFO] [stdout]     |         ^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end_y`
[INFO] [stdout]   --> src/chargen.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 40 |     let end_y   = game_window.get_max_y();
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]    |
[INFO] [stdout] 40 |     let _end_y   = game_window.get_max_y();
[INFO] [stdout]    |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `CAMERA_OFFSET`
[INFO] [stdout]    |
[INFO] [stdout] 40 -     let end_y   = game_window.get_max_y();
[INFO] [stdout] 40 +     let camera::draw_screen::CAMERA_OFFSET   = game_window.get_max_y();
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name_field`
[INFO] [stdout]   --> src/chargen.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 |     let name_field     = "Name:";
[INFO] [stdout]    |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_name_field`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cur_mode`
[INFO] [stdout]   --> src/menu.rs:85:20
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub fn null_action(cur_mode   : &mut mode::Mode,
[INFO] [stdout]    |                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cur_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cur_cursor`
[INFO] [stdout]   --> src/menu.rs:86:20
[INFO] [stdout]    |
[INFO] [stdout] 86 |                    cur_cursor : &mut usize)
[INFO] [stdout]    |                    ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cur_cursor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cur_cursor`
[INFO] [stdout]   --> src/menu.rs:92:24
[INFO] [stdout]    |
[INFO] [stdout] 92 |                        cur_cursor : &mut usize)
[INFO] [stdout]    |                        ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cur_cursor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cur_cursor`
[INFO] [stdout]   --> src/menu.rs:98:20
[INFO] [stdout]    |
[INFO] [stdout] 98 |                    cur_cursor : &mut usize)
[INFO] [stdout]    |                    ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cur_cursor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end_x`
[INFO] [stdout]    --> src/inventory_screen.rs:124:9
[INFO] [stdout]     |
[INFO] [stdout] 124 |     let end_x   = game_window.get_max_x();
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 124 |     let _end_x   = game_window.get_max_x();
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `CAMERA_OFFSET`
[INFO] [stdout]     |
[INFO] [stdout] 124 -     let end_x   = game_window.get_max_x();
[INFO] [stdout] 124 +     let camera::draw_screen::CAMERA_OFFSET   = game_window.get_max_x();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end_y`
[INFO] [stdout]    --> src/inventory_screen.rs:127:9
[INFO] [stdout]     |
[INFO] [stdout] 127 |     let end_y   = game_window.get_max_y();
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 127 |     let _end_y   = game_window.get_max_y();
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `CAMERA_OFFSET`
[INFO] [stdout]     |
[INFO] [stdout] 127 -     let end_y   = game_window.get_max_y();
[INFO] [stdout] 127 +     let camera::draw_screen::CAMERA_OFFSET   = game_window.get_max_y();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map_start_x`
[INFO] [stdout]    --> src/inventory_screen.rs:129:9
[INFO] [stdout]     |
[INFO] [stdout] 129 |     let map_start_x = start_x;
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 129 |     let _map_start_x = start_x;
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `CAMERA_OFFSET`
[INFO] [stdout]     |
[INFO] [stdout] 129 -     let map_start_x = start_x;
[INFO] [stdout] 129 +     let camera::draw_screen::CAMERA_OFFSET = start_x;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map_start_y`
[INFO] [stdout]    --> src/inventory_screen.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 130 |     let map_start_y = start_y;
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 130 |     let _map_start_y = start_y;
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `CAMERA_OFFSET`
[INFO] [stdout]     |
[INFO] [stdout] 130 -     let map_start_y = start_y;
[INFO] [stdout] 130 +     let camera::draw_screen::CAMERA_OFFSET = start_y;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player`
[INFO] [stdout]    --> src/inventory_screen.rs:117:20
[INFO] [stdout]     |
[INFO] [stdout] 117 |                    player         : &mut creature::Creature,
[INFO] [stdout]     |                    ^^^^^^ help: if this is intentional, prefix it with an underscore: `_player`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `console_buffer`
[INFO] [stdout]    --> src/inventory_screen.rs:118:20
[INFO] [stdout]     |
[INFO] [stdout] 118 |                    console_buffer : &mut Vec<String>)
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_console_buffer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/rng.rs:61:13
[INFO] [stdout]    |
[INFO] [stdout] 61 |         for i in 0 .. dr.num_dice
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end_y`
[INFO] [stdout]   --> src/title.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |     let end_y   = game_window.get_max_y();
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]    |
[INFO] [stdout] 33 |     let _end_y   = game_window.get_max_y();
[INFO] [stdout]    |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `CAMERA_OFFSET`
[INFO] [stdout]    |
[INFO] [stdout] 33 -     let end_y   = game_window.get_max_y();
[INFO] [stdout] 33 +     let camera::draw_screen::CAMERA_OFFSET   = game_window.get_max_y();
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dedication_x`
[INFO] [stdout]   --> src/title.rs:93:8
[INFO] [stdout]    |
[INFO] [stdout] 93 |    let dedication_x =
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]    |
[INFO] [stdout] 93 |    let _dedication_x =
[INFO] [stdout]    |        +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `CAMERA_OFFSET`
[INFO] [stdout]    |
[INFO] [stdout] 93 -    let dedication_x =
[INFO] [stdout] 93 +    let camera::draw_screen::CAMERA_OFFSET =
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dedication_y`
[INFO] [stdout]   --> src/title.rs:98:8
[INFO] [stdout]    |
[INFO] [stdout] 98 |    let dedication_y =
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]    |
[INFO] [stdout] 98 |    let _dedication_y =
[INFO] [stdout]    |        +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `CAMERA_OFFSET`
[INFO] [stdout]    |
[INFO] [stdout] 98 -    let dedication_y =
[INFO] [stdout] 98 +    let camera::draw_screen::CAMERA_OFFSET =
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:73:9
[INFO] [stdout]    |
[INFO] [stdout] 73 |     let mut player = creature::Creature::Default_Player();
[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: `inventory_action`
[INFO] [stdout]    --> src/main.rs:198:9
[INFO] [stdout]     |
[INFO] [stdout] 198 |     let inventory_action = inventory_screen::process_keyboard(&game_window);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_inventory_action`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `KeyType` is more private than the item `TextWriter::input_key`
[INFO] [stdout]    --> src/textwriter.rs:135:5
[INFO] [stdout]     |
[INFO] [stdout] 135 |     pub fn input_key(&mut self, game_window : &pancurses::Window) -> KeyType
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `TextWriter::input_key` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `KeyType` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/textwriter.rs:27:1
[INFO] [stdout]     |
[INFO] [stdout]  27 | enum KeyType
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `experience_have`, `player_control`, and `inventory` are never read
[INFO] [stdout]   --> src/creature.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct Creature {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 47 |     experience_have: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 48 |     image: char,
[INFO] [stdout] 49 |     player_control: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 50 |     inventory: Vec<item::Item>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/creature.rs:54:12
[INFO] [stdout]     |
[INFO] [stdout]  53 | impl Creature {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout]  54 |     pub fn new() -> Creature {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn set_image(&mut self, new_image: char) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn get_player_control(&self) -> &bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     pub fn set_player_control(&mut self, new_player_control: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub fn set_evasion(&mut self, new_evasion: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn set_endurnace(&mut self, new_endurance: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn set_nullification(&mut self, new_nullification: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub fn use_skill(
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_console_end_x` is never used
[INFO] [stdout]    --> src/camera/mod.rs:230:4
[INFO] [stdout]     |
[INFO] [stdout] 230 | fn get_console_end_x(game_window: &pancurses::Window) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_info_end_x` is never used
[INFO] [stdout]    --> src/camera/mod.rs:245:4
[INFO] [stdout]     |
[INFO] [stdout] 245 | fn get_info_end_x(game_window: &pancurses::Window)   -> i32 {game_window.get_max_x() - 3 }
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_controls_end_x` is never used
[INFO] [stdout]    --> src/camera/mod.rs:501:4
[INFO] [stdout]     |
[INFO] [stdout] 501 | fn get_controls_end_x(game_window: &pancurses::Window)   -> i32 {game_window.get_max_x() - 3}
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `damage` is never read
[INFO] [stdout]   --> src/tile.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct Tile
[INFO] [stdout]    |            ---- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 26 |     damage   : i32,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Tile` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `new_full`, `set_passable`, `get_damage`, `set_damage`, and `set_image` are never used
[INFO] [stdout]   --> src/tile.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl Tile
[INFO] [stdout]    | --------- associated items in this implementation
[INFO] [stdout] 31 | {
[INFO] [stdout] 32 |     pub fn new() -> Tile
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn new_full(new_passable : bool, new_damage : i32, new_image : char) -> Tile
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn set_passable(&mut self, new_passable : bool)
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn get_damage(&self) -> &i32
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn set_damage(&mut self, new_damage : i32)
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn set_image(&mut self, new_image : char)
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_tile_database` is never used
[INFO] [stdout]    --> src/tile.rs:107:8
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub fn print_tile_database(tile_database: &[Tile; MAX_TILES])
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_map_handle` is never used
[INFO] [stdout]   --> src/tile_map.rs:61:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl TileMap
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn get_map_handle(&mut self) -> &mut Vec<Vec<tile::Tile>>
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_visible` is never used
[INFO] [stdout]   --> src/menu.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl MenuItem<'_>
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn get_visible(&self) -> bool
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_map_end_x` is never used
[INFO] [stdout]   --> src/inventory_screen.rs:62:4
[INFO] [stdout]    |
[INFO] [stdout] 62 | fn get_map_end_x(game_window : &pancurses::Window) -> i32
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_map_end_y` is never used
[INFO] [stdout]   --> src/inventory_screen.rs:78:4
[INFO] [stdout]    |
[INFO] [stdout] 78 | fn get_map_end_y(game_window : &pancurses::Window) -> i32
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_console_start_x` is never used
[INFO] [stdout]   --> src/inventory_screen.rs:94:4
[INFO] [stdout]    |
[INFO] [stdout] 94 | fn get_console_start_x(game_window : &pancurses::Window) -> i32
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_console_end_x` is never used
[INFO] [stdout]   --> src/inventory_screen.rs:99:4
[INFO] [stdout]    |
[INFO] [stdout] 99 | fn get_console_end_x(game_window : &pancurses::Window) -> i32
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_console_start_y` is never used
[INFO] [stdout]    --> src/inventory_screen.rs:104:4
[INFO] [stdout]     |
[INFO] [stdout] 104 | fn get_console_start_y(game_window : &pancurses::Window) -> i32
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_console_end_y` is never used
[INFO] [stdout]    --> src/inventory_screen.rs:109:4
[INFO] [stdout]     |
[INFO] [stdout] 109 | fn get_console_end_y(game_window : &pancurses::Window) -> i32
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PseudoRandom` is never constructed
[INFO] [stdout]   --> src/rng.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct PseudoRandom
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DiceRoll` is never constructed
[INFO] [stdout]   --> src/rng.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct DiceRoll
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `rand_in_range`, `roll_dice`, and `roll_skill_check` are never used
[INFO] [stdout]   --> src/rng.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl PseudoRandom
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 41 |     fn rand_in_range(&mut self, lower_bound : u32, upper_bound : u32) -> u32
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     fn roll_dice(&mut self, dr : &DiceRoll) -> u32
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub fn roll_skill_check(&mut self, stat1 : u32, stat2 : u32, stat3 : u32, defense : u32) -> bool
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `StatTarget` is never used
[INFO] [stdout]   --> src/skill.rs:22:10
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum StatTarget
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DefenseTarget` is never used
[INFO] [stdout]   --> src/skill.rs:31:10
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub enum DefenseTarget
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Effect` is never used
[INFO] [stdout]   --> src/skill.rs:41:10
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub enum Effect
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Skill` is never constructed
[INFO] [stdout]   --> src/skill.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct Skill
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/skill.rs:66:12
[INFO] [stdout]     |
[INFO] [stdout]  63 | impl Skill
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub fn new() -> Skill
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn GetName(&self) -> &String
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn GetRange(&self) -> &u32
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn GetStat1(&self) -> &StatTarget
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn GetStat2(&self) -> &StatTarget
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn GetStat3(&self) -> &StatTarget
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn GetDefense(&self) -> &DefenseTarget
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn GetDescription(&self) -> &String
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn GetEffect(&self) -> &Effect
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `desc` is never read
[INFO] [stdout]   --> src/attributeslider.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct Attribute
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 42 |     desc  : String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/main.rs:261:12
[INFO] [stdout]     |
[INFO] [stdout] 261 |     panic!(err);                               // We will now crash the game.
[INFO] [stdout]     |            ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: add a "{}" format string to `Display` the message
[INFO] [stdout]     |
[INFO] [stdout] 261 |     panic!("{}", err);                               // We will now crash the game.
[INFO] [stdout]     |            +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/menu.rs:70:33
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn create_menu(in_text    : &str,
[INFO] [stdout]    |                                 ^^^^ the lifetime is elided here
[INFO] [stdout] ...
[INFO] [stdout] 74 |                    -> MenuItem
[INFO] [stdout]    |                       ^^^^^^^^ the same lifetime is hidden 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] 74 |                    -> MenuItem<'_>
[INFO] [stdout]    |                               ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 6.70s
[INFO] running `Command { std: "docker" "inspect" "09b2549f9808c2714f92a3fd95dccf8218a6cfd4bcbe595c66f0a21ef9289219", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "09b2549f9808c2714f92a3fd95dccf8218a6cfd4bcbe595c66f0a21ef9289219", kill_on_drop: false }`
[INFO] [stdout] 09b2549f9808c2714f92a3fd95dccf8218a6cfd4bcbe595c66f0a21ef9289219
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-09-21" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 25c4261a04f2d498ef519816a38b33f2346e9c73ab8c6926910895cb86daa291
[INFO] running `Command { std: "docker" "start" "-a" "25c4261a04f2d498ef519816a38b33f2346e9c73ab8c6926910895cb86daa291", kill_on_drop: false }`
[INFO] [stderr]    Compiling star_slammers v0.1.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `crate::camera`
[INFO] [stdout]   --> src/camera/tests.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use crate::camera;
[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: `crate::creature`
[INFO] [stdout]   --> src/camera/tests.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::creature;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::tile`
[INFO] [stdout]   --> src/camera/tests.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::tile;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::tile_map`
[INFO] [stdout]   --> src/camera/tests.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use crate::tile_map;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::menuaction`
[INFO] [stdout]   --> src/chargen.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use crate::menuaction;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::mode`
[INFO] [stdout]   --> src/chargen.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use crate::mode;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]    --> src/attributeslider.rs:294:14
[INFO] [stdout]     |
[INFO] [stdout] 294 |         while(self.done == false)
[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] 294 -         while(self.done == false)
[INFO] [stdout] 294 +         while self.done == false
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this attribute can only be applied at the crate level
[INFO] [stdout]   --> src/creature.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | #![doc(html_no_source)]
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: read <https://doc.rust-lang.org/nightly/rustdoc/the-doc-attribute.html#at-the-crate-level> for more information
[INFO] [stdout]    = note: `#[warn(invalid_doc_attributes)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this attribute can only be applied at the crate level
[INFO] [stdout]   --> src/rng.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | #![doc(html_no_source)]
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: read <https://doc.rust-lang.org/nightly/rustdoc/the-doc-attribute.html#at-the-crate-level> for more information
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this attribute can only be applied at the crate level
[INFO] [stdout]   --> src/skill.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | #![doc(html_no_source)]
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: read <https://doc.rust-lang.org/nightly/rustdoc/the-doc-attribute.html#at-the-crate-level> for more information
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `stat1` is never read
[INFO] [stdout]    --> src/creature.rs:217:17
[INFO] [stdout]     |
[INFO] [stdout] 217 |         let mut stat1 = 0;
[INFO] [stdout]     |                 ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `stat2` is never read
[INFO] [stdout]    --> src/creature.rs:218:17
[INFO] [stdout]     |
[INFO] [stdout] 218 |         let mut stat2 = 0;
[INFO] [stdout]     |                 ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `stat3` is never read
[INFO] [stdout]    --> src/creature.rs:219:17
[INFO] [stdout]     |
[INFO] [stdout] 219 |         let mut stat3 = 0;
[INFO] [stdout]     |                 ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `defense` is never read
[INFO] [stdout]    --> src/creature.rs:220:17
[INFO] [stdout]     |
[INFO] [stdout] 220 |         let mut defense = 0;
[INFO] [stdout]     |                 ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/camera/tests.rs:60:13
[INFO] [stdout]    |
[INFO] [stdout] 60 |         let mut tile_map    = crate::tile_map::load_map("maps/test.map".to_string(),
[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/camera/tests.rs:78:13
[INFO] [stdout]    |
[INFO] [stdout] 78 |         let mut tile_map    = crate::tile_map::load_map("maps/test.map".to_string(),
[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/camera/tests.rs:94:13
[INFO] [stdout]    |
[INFO] [stdout] 94 |         let mut player      = crate::creature::Creature::new();
[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/camera/tests.rs:113:13
[INFO] [stdout]     |
[INFO] [stdout] 113 |         let mut player      = crate::creature::Creature::new();
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_camera`
[INFO] [stdout]    --> src/camera/mod.rs:254:19
[INFO] [stdout]     |
[INFO] [stdout] 254 |                   game_camera: &Camera,
[INFO] [stdout]     |                   ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_camera`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `y` is never read
[INFO] [stdout]    --> src/camera/mod.rs:540:9
[INFO] [stdout]     |
[INFO] [stdout] 540 |         y = y + 1;
[INFO] [stdout]     |         ^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end_y`
[INFO] [stdout]   --> src/chargen.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 40 |     let end_y   = game_window.get_max_y();
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]    |
[INFO] [stdout] 40 |     let _end_y   = game_window.get_max_y();
[INFO] [stdout]    |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `CAMERA_OFFSET`
[INFO] [stdout]    |
[INFO] [stdout] 40 -     let end_y   = game_window.get_max_y();
[INFO] [stdout] 40 +     let camera::draw_screen::CAMERA_OFFSET   = game_window.get_max_y();
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name_field`
[INFO] [stdout]   --> src/chargen.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 |     let name_field     = "Name:";
[INFO] [stdout]    |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_name_field`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cur_mode`
[INFO] [stdout]   --> src/menu.rs:85:20
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub fn null_action(cur_mode   : &mut mode::Mode,
[INFO] [stdout]    |                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cur_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cur_cursor`
[INFO] [stdout]   --> src/menu.rs:86:20
[INFO] [stdout]    |
[INFO] [stdout] 86 |                    cur_cursor : &mut usize)
[INFO] [stdout]    |                    ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cur_cursor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cur_cursor`
[INFO] [stdout]   --> src/menu.rs:92:24
[INFO] [stdout]    |
[INFO] [stdout] 92 |                        cur_cursor : &mut usize)
[INFO] [stdout]    |                        ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cur_cursor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cur_cursor`
[INFO] [stdout]   --> src/menu.rs:98:20
[INFO] [stdout]    |
[INFO] [stdout] 98 |                    cur_cursor : &mut usize)
[INFO] [stdout]    |                    ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cur_cursor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end_x`
[INFO] [stdout]    --> src/inventory_screen.rs:124:9
[INFO] [stdout]     |
[INFO] [stdout] 124 |     let end_x   = game_window.get_max_x();
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 124 |     let _end_x   = game_window.get_max_x();
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `CAMERA_OFFSET`
[INFO] [stdout]     |
[INFO] [stdout] 124 -     let end_x   = game_window.get_max_x();
[INFO] [stdout] 124 +     let camera::draw_screen::CAMERA_OFFSET   = game_window.get_max_x();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end_y`
[INFO] [stdout]    --> src/inventory_screen.rs:127:9
[INFO] [stdout]     |
[INFO] [stdout] 127 |     let end_y   = game_window.get_max_y();
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 127 |     let _end_y   = game_window.get_max_y();
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `CAMERA_OFFSET`
[INFO] [stdout]     |
[INFO] [stdout] 127 -     let end_y   = game_window.get_max_y();
[INFO] [stdout] 127 +     let camera::draw_screen::CAMERA_OFFSET   = game_window.get_max_y();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map_start_x`
[INFO] [stdout]    --> src/inventory_screen.rs:129:9
[INFO] [stdout]     |
[INFO] [stdout] 129 |     let map_start_x = start_x;
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 129 |     let _map_start_x = start_x;
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `CAMERA_OFFSET`
[INFO] [stdout]     |
[INFO] [stdout] 129 -     let map_start_x = start_x;
[INFO] [stdout] 129 +     let camera::draw_screen::CAMERA_OFFSET = start_x;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map_start_y`
[INFO] [stdout]    --> src/inventory_screen.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 130 |     let map_start_y = start_y;
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 130 |     let _map_start_y = start_y;
[INFO] [stdout]     |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `CAMERA_OFFSET`
[INFO] [stdout]     |
[INFO] [stdout] 130 -     let map_start_y = start_y;
[INFO] [stdout] 130 +     let camera::draw_screen::CAMERA_OFFSET = start_y;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player`
[INFO] [stdout]    --> src/inventory_screen.rs:117:20
[INFO] [stdout]     |
[INFO] [stdout] 117 |                    player         : &mut creature::Creature,
[INFO] [stdout]     |                    ^^^^^^ help: if this is intentional, prefix it with an underscore: `_player`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `console_buffer`
[INFO] [stdout]    --> src/inventory_screen.rs:118:20
[INFO] [stdout]     |
[INFO] [stdout] 118 |                    console_buffer : &mut Vec<String>)
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_console_buffer`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/rng.rs:61:13
[INFO] [stdout]    |
[INFO] [stdout] 61 |         for i in 0 .. dr.num_dice
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `end_y`
[INFO] [stdout]   --> src/title.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |     let end_y   = game_window.get_max_y();
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]    |
[INFO] [stdout] 33 |     let _end_y   = game_window.get_max_y();
[INFO] [stdout]    |         +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `CAMERA_OFFSET`
[INFO] [stdout]    |
[INFO] [stdout] 33 -     let end_y   = game_window.get_max_y();
[INFO] [stdout] 33 +     let camera::draw_screen::CAMERA_OFFSET   = game_window.get_max_y();
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dedication_x`
[INFO] [stdout]   --> src/title.rs:93:8
[INFO] [stdout]    |
[INFO] [stdout] 93 |    let dedication_x =
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]    |
[INFO] [stdout] 93 |    let _dedication_x =
[INFO] [stdout]    |        +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `CAMERA_OFFSET`
[INFO] [stdout]    |
[INFO] [stdout] 93 -    let dedication_x =
[INFO] [stdout] 93 +    let camera::draw_screen::CAMERA_OFFSET =
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dedication_y`
[INFO] [stdout]   --> src/title.rs:98:8
[INFO] [stdout]    |
[INFO] [stdout] 98 |    let dedication_y =
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]    |
[INFO] [stdout] 98 |    let _dedication_y =
[INFO] [stdout]    |        +
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `CAMERA_OFFSET`
[INFO] [stdout]    |
[INFO] [stdout] 98 -    let dedication_y =
[INFO] [stdout] 98 +    let camera::draw_screen::CAMERA_OFFSET =
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:73:9
[INFO] [stdout]    |
[INFO] [stdout] 73 |     let mut player = creature::Creature::Default_Player();
[INFO] [stdout]    |         ----^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `inventory_action`
[INFO] [stdout]    --> src/main.rs:198:9
[INFO] [stdout]     |
[INFO] [stdout] 198 |     let inventory_action = inventory_screen::process_keyboard(&game_window);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_inventory_action`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `KeyType` is more private than the item `TextWriter::input_key`
[INFO] [stdout]    --> src/textwriter.rs:135:5
[INFO] [stdout]     |
[INFO] [stdout] 135 |     pub fn input_key(&mut self, game_window : &pancurses::Window) -> KeyType
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `TextWriter::input_key` is reachable at visibility `pub(crate)`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `KeyType` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/textwriter.rs:27:1
[INFO] [stdout]     |
[INFO] [stdout]  27 | enum KeyType
[INFO] [stdout]     | ^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `experience_have`, `player_control`, and `inventory` are never read
[INFO] [stdout]   --> src/creature.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct Creature {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 47 |     experience_have: u32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 48 |     image: char,
[INFO] [stdout] 49 |     player_control: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 50 |     inventory: Vec<item::Item>,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/creature.rs:172:12
[INFO] [stdout]     |
[INFO] [stdout]  53 | impl Creature {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn set_image(&mut self, new_image: char) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn get_player_control(&self) -> &bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     pub fn set_player_control(&mut self, new_player_control: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 187 |     pub fn set_evasion(&mut self, new_evasion: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn set_endurnace(&mut self, new_endurance: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn set_nullification(&mut self, new_nullification: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub fn use_skill(
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_console_end_x` is never used
[INFO] [stdout]    --> src/camera/mod.rs:230:4
[INFO] [stdout]     |
[INFO] [stdout] 230 | fn get_console_end_x(game_window: &pancurses::Window) -> i32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_info_end_x` is never used
[INFO] [stdout]    --> src/camera/mod.rs:245:4
[INFO] [stdout]     |
[INFO] [stdout] 245 | fn get_info_end_x(game_window: &pancurses::Window)   -> i32 {game_window.get_max_x() - 3 }
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_controls_end_x` is never used
[INFO] [stdout]    --> src/camera/mod.rs:501:4
[INFO] [stdout]     |
[INFO] [stdout] 501 | fn get_controls_end_x(game_window: &pancurses::Window)   -> i32 {game_window.get_max_x() - 3}
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `damage` is never read
[INFO] [stdout]   --> src/tile.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct Tile
[INFO] [stdout]    |            ---- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 26 |     damage   : i32,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Tile` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `new_full`, `set_passable`, `get_damage`, `set_damage`, and `set_image` are never used
[INFO] [stdout]   --> src/tile.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl Tile
[INFO] [stdout]    | --------- associated items in this implementation
[INFO] [stdout] 31 | {
[INFO] [stdout] 32 |     pub fn new() -> Tile
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn new_full(new_passable : bool, new_damage : i32, new_image : char) -> Tile
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn set_passable(&mut self, new_passable : bool)
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn get_damage(&self) -> &i32
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn set_damage(&mut self, new_damage : i32)
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     pub fn set_image(&mut self, new_image : char)
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_tile_database` is never used
[INFO] [stdout]    --> src/tile.rs:107:8
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub fn print_tile_database(tile_database: &[Tile; MAX_TILES])
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_map_handle` is never used
[INFO] [stdout]   --> src/tile_map.rs:61:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl TileMap
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn get_map_handle(&mut self) -> &mut Vec<Vec<tile::Tile>>
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_visible` is never used
[INFO] [stdout]   --> src/menu.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl MenuItem<'_>
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn get_visible(&self) -> bool
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_map_end_x` is never used
[INFO] [stdout]   --> src/inventory_screen.rs:62:4
[INFO] [stdout]    |
[INFO] [stdout] 62 | fn get_map_end_x(game_window : &pancurses::Window) -> i32
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_map_end_y` is never used
[INFO] [stdout]   --> src/inventory_screen.rs:78:4
[INFO] [stdout]    |
[INFO] [stdout] 78 | fn get_map_end_y(game_window : &pancurses::Window) -> i32
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_console_start_x` is never used
[INFO] [stdout]   --> src/inventory_screen.rs:94:4
[INFO] [stdout]    |
[INFO] [stdout] 94 | fn get_console_start_x(game_window : &pancurses::Window) -> i32
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_console_end_x` is never used
[INFO] [stdout]   --> src/inventory_screen.rs:99:4
[INFO] [stdout]    |
[INFO] [stdout] 99 | fn get_console_end_x(game_window : &pancurses::Window) -> i32
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_console_start_y` is never used
[INFO] [stdout]    --> src/inventory_screen.rs:104:4
[INFO] [stdout]     |
[INFO] [stdout] 104 | fn get_console_start_y(game_window : &pancurses::Window) -> i32
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_console_end_y` is never used
[INFO] [stdout]    --> src/inventory_screen.rs:109:4
[INFO] [stdout]     |
[INFO] [stdout] 109 | fn get_console_end_y(game_window : &pancurses::Window) -> i32
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PseudoRandom` is never constructed
[INFO] [stdout]   --> src/rng.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct PseudoRandom
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DiceRoll` is never constructed
[INFO] [stdout]   --> src/rng.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct DiceRoll
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `rand_in_range`, `roll_dice`, and `roll_skill_check` are never used
[INFO] [stdout]   --> src/rng.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl PseudoRandom
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 41 |     fn rand_in_range(&mut self, lower_bound : u32, upper_bound : u32) -> u32
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     fn roll_dice(&mut self, dr : &DiceRoll) -> u32
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub fn roll_skill_check(&mut self, stat1 : u32, stat2 : u32, stat3 : u32, defense : u32) -> bool
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `StatTarget` is never used
[INFO] [stdout]   --> src/skill.rs:22:10
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum StatTarget
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DefenseTarget` is never used
[INFO] [stdout]   --> src/skill.rs:31:10
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub enum DefenseTarget
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Effect` is never used
[INFO] [stdout]   --> src/skill.rs:41:10
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub enum Effect
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Skill` is never constructed
[INFO] [stdout]   --> src/skill.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct Skill
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/skill.rs:66:12
[INFO] [stdout]     |
[INFO] [stdout]  63 | impl Skill
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub fn new() -> Skill
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn GetName(&self) -> &String
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn GetRange(&self) -> &u32
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn GetStat1(&self) -> &StatTarget
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn GetStat2(&self) -> &StatTarget
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn GetStat3(&self) -> &StatTarget
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn GetDefense(&self) -> &DefenseTarget
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn GetDescription(&self) -> &String
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn GetEffect(&self) -> &Effect
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `desc` is never read
[INFO] [stdout]   --> src/attributeslider.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct Attribute
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 42 |     desc  : String,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> src/main.rs:261:12
[INFO] [stdout]     |
[INFO] [stdout] 261 |     panic!(err);                               // We will now crash the game.
[INFO] [stdout]     |            ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: add a "{}" format string to `Display` the message
[INFO] [stdout]     |
[INFO] [stdout] 261 |     panic!("{}", err);                               // We will now crash the game.
[INFO] [stdout]     |            +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/menu.rs:70:33
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn create_menu(in_text    : &str,
[INFO] [stdout]    |                                 ^^^^ the lifetime is elided here
[INFO] [stdout] ...
[INFO] [stdout] 74 |                    -> MenuItem
[INFO] [stdout]    |                       ^^^^^^^^ the same lifetime is hidden 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] 74 |                    -> MenuItem<'_>
[INFO] [stdout]    |                               ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.57s
[INFO] running `Command { std: "docker" "inspect" "25c4261a04f2d498ef519816a38b33f2346e9c73ab8c6926910895cb86daa291", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "25c4261a04f2d498ef519816a38b33f2346e9c73ab8c6926910895cb86daa291", kill_on_drop: false }`
[INFO] [stdout] 25c4261a04f2d498ef519816a38b33f2346e9c73ab8c6926910895cb86daa291
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2025-09-21" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] b91480b5103738d16d112f9a96df79c0c8c028d29fd1dd9d29717a29f7d55465
[INFO] running `Command { std: "docker" "start" "-a" "b91480b5103738d16d112f9a96df79c0c8c028d29fd1dd9d29717a29f7d55465", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `crate::camera`
[INFO] [stderr]   --> src/camera/tests.rs:18:5
[INFO] [stderr]    |
[INFO] [stderr] 18 | use crate::camera;
[INFO] [stderr]    |     ^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::creature`
[INFO] [stderr]   --> src/camera/tests.rs:20:5
[INFO] [stderr]    |
[INFO] [stderr] 20 | use crate::creature;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::tile`
[INFO] [stderr]   --> src/camera/tests.rs:21:5
[INFO] [stderr]    |
[INFO] [stderr] 21 | use crate::tile;
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::tile_map`
[INFO] [stderr]   --> src/camera/tests.rs:22:5
[INFO] [stderr]    |
[INFO] [stderr] 22 | use crate::tile_map;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::menuaction`
[INFO] [stderr]   --> src/chargen.rs:22:5
[INFO] [stderr]    |
[INFO] [stderr] 22 | use crate::menuaction;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::mode`
[INFO] [stderr]   --> src/chargen.rs:23:5
[INFO] [stderr]    |
[INFO] [stderr] 23 | use crate::mode;
[INFO] [stderr]    |     ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around `while` condition
[INFO] [stderr]    --> src/attributeslider.rs:294:14
[INFO] [stderr]     |
[INFO] [stderr] 294 |         while(self.done == false)
[INFO] [stderr]     |              ^                  ^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]     |
[INFO] [stderr] 294 -         while(self.done == false)
[INFO] [stderr] 294 +         while self.done == false
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: this attribute can only be applied at the crate level
[INFO] [stderr]   --> src/creature.rs:16:8
[INFO] [stderr]    |
[INFO] [stderr] 16 | #![doc(html_no_source)]
[INFO] [stderr]    |        ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: read <https://doc.rust-lang.org/nightly/rustdoc/the-doc-attribute.html#at-the-crate-level> for more information
[INFO] [stderr]    = note: `#[warn(invalid_doc_attributes)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: this attribute can only be applied at the crate level
[INFO] [stderr]   --> src/rng.rs:17:8
[INFO] [stderr]    |
[INFO] [stderr] 17 | #![doc(html_no_source)]
[INFO] [stderr]    |        ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: read <https://doc.rust-lang.org/nightly/rustdoc/the-doc-attribute.html#at-the-crate-level> for more information
[INFO] [stderr] 
[INFO] [stderr] warning: this attribute can only be applied at the crate level
[INFO] [stderr]   --> src/skill.rs:17:8
[INFO] [stderr]    |
[INFO] [stderr] 17 | #![doc(html_no_source)]
[INFO] [stderr]    |        ^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: read <https://doc.rust-lang.org/nightly/rustdoc/the-doc-attribute.html#at-the-crate-level> for more information
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `stat1` is never read
[INFO] [stderr]    --> src/creature.rs:217:17
[INFO] [stderr]     |
[INFO] [stderr] 217 |         let mut stat1 = 0;
[INFO] [stderr]     |                 ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `stat2` is never read
[INFO] [stderr]    --> src/creature.rs:218:17
[INFO] [stderr]     |
[INFO] [stderr] 218 |         let mut stat2 = 0;
[INFO] [stderr]     |                 ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `stat3` is never read
[INFO] [stderr]    --> src/creature.rs:219:17
[INFO] [stderr]     |
[INFO] [stderr] 219 |         let mut stat3 = 0;
[INFO] [stderr]     |                 ^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `defense` is never read
[INFO] [stderr]    --> src/creature.rs:220:17
[INFO] [stderr]     |
[INFO] [stderr] 220 |         let mut defense = 0;
[INFO] [stderr]     |                 ^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/camera/tests.rs:60:13
[INFO] [stderr]    |
[INFO] [stderr] 60 |         let mut tile_map    = crate::tile_map::load_map("maps/test.map".to_string(),
[INFO] [stderr]    |             ----^^^^^^^^
[INFO] [stderr]    |             |
[INFO] [stderr]    |             help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/camera/tests.rs:78:13
[INFO] [stderr]    |
[INFO] [stderr] 78 |         let mut tile_map    = crate::tile_map::load_map("maps/test.map".to_string(),
[INFO] [stderr]    |             ----^^^^^^^^
[INFO] [stderr]    |             |
[INFO] [stderr]    |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/camera/tests.rs:94:13
[INFO] [stderr]    |
[INFO] [stderr] 94 |         let mut player      = crate::creature::Creature::new();
[INFO] [stderr]    |             ----^^^^^^
[INFO] [stderr]    |             |
[INFO] [stderr]    |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/camera/tests.rs:113:13
[INFO] [stderr]     |
[INFO] [stderr] 113 |         let mut player      = crate::creature::Creature::new();
[INFO] [stderr]     |             ----^^^^^^
[INFO] [stderr]     |             |
[INFO] [stderr]     |             help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `game_camera`
[INFO] [stderr]    --> src/camera/mod.rs:254:19
[INFO] [stderr]     |
[INFO] [stderr] 254 |                   game_camera: &Camera,
[INFO] [stderr]     |                   ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_camera`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `y` is never read
[INFO] [stderr]    --> src/camera/mod.rs:540:9
[INFO] [stderr]     |
[INFO] [stderr] 540 |         y = y + 1;
[INFO] [stderr]     |         ^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `end_y`
[INFO] [stderr]   --> src/chargen.rs:40:9
[INFO] [stderr]    |
[INFO] [stderr] 40 |     let end_y   = game_window.get_max_y();
[INFO] [stderr]    |         ^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]    |
[INFO] [stderr] 40 |     let _end_y   = game_window.get_max_y();
[INFO] [stderr]    |         +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `CAMERA_OFFSET`
[INFO] [stderr]    |
[INFO] [stderr] 40 -     let end_y   = game_window.get_max_y();
[INFO] [stderr] 40 +     let camera::draw_screen::CAMERA_OFFSET   = game_window.get_max_y();
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `name_field`
[INFO] [stderr]   --> src/chargen.rs:48:9
[INFO] [stderr]    |
[INFO] [stderr] 48 |     let name_field     = "Name:";
[INFO] [stderr]    |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_name_field`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `cur_mode`
[INFO] [stderr]   --> src/menu.rs:85:20
[INFO] [stderr]    |
[INFO] [stderr] 85 | pub fn null_action(cur_mode   : &mut mode::Mode,
[INFO] [stderr]    |                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cur_mode`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `cur_cursor`
[INFO] [stderr]   --> src/menu.rs:86:20
[INFO] [stderr]    |
[INFO] [stderr] 86 |                    cur_cursor : &mut usize)
[INFO] [stderr]    |                    ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cur_cursor`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `cur_cursor`
[INFO] [stderr]   --> src/menu.rs:92:24
[INFO] [stderr]    |
[INFO] [stderr] 92 |                        cur_cursor : &mut usize)
[INFO] [stderr]    |                        ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cur_cursor`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `cur_cursor`
[INFO] [stderr]   --> src/menu.rs:98:20
[INFO] [stderr]    |
[INFO] [stderr] 98 |                    cur_cursor : &mut usize)
[INFO] [stderr]    |                    ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cur_cursor`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `end_x`
[INFO] [stderr]    --> src/inventory_screen.rs:124:9
[INFO] [stderr]     |
[INFO] [stderr] 124 |     let end_x   = game_window.get_max_x();
[INFO] [stderr]     |         ^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]     |
[INFO] [stderr] 124 |     let _end_x   = game_window.get_max_x();
[INFO] [stderr]     |         +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `CAMERA_OFFSET`
[INFO] [stderr]     |
[INFO] [stderr] 124 -     let end_x   = game_window.get_max_x();
[INFO] [stderr] 124 +     let camera::draw_screen::CAMERA_OFFSET   = game_window.get_max_x();
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `end_y`
[INFO] [stderr]    --> src/inventory_screen.rs:127:9
[INFO] [stderr]     |
[INFO] [stderr] 127 |     let end_y   = game_window.get_max_y();
[INFO] [stderr]     |         ^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]     |
[INFO] [stderr] 127 |     let _end_y   = game_window.get_max_y();
[INFO] [stderr]     |         +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `CAMERA_OFFSET`
[INFO] [stderr]     |
[INFO] [stderr] 127 -     let end_y   = game_window.get_max_y();
[INFO] [stderr] 127 +     let camera::draw_screen::CAMERA_OFFSET   = game_window.get_max_y();
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `map_start_x`
[INFO] [stderr]    --> src/inventory_screen.rs:129:9
[INFO] [stderr]     |
[INFO] [stderr] 129 |     let map_start_x = start_x;
[INFO] [stderr]     |         ^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]     |
[INFO] [stderr] 129 |     let _map_start_x = start_x;
[INFO] [stderr]     |         +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `CAMERA_OFFSET`
[INFO] [stderr]     |
[INFO] [stderr] 129 -     let map_start_x = start_x;
[INFO] [stderr] 129 +     let camera::draw_screen::CAMERA_OFFSET = start_x;
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `map_start_y`
[INFO] [stderr]    --> src/inventory_screen.rs:130:9
[INFO] [stderr]     |
[INFO] [stderr] 130 |     let map_start_y = start_y;
[INFO] [stderr]     |         ^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]     |
[INFO] [stderr] 130 |     let _map_start_y = start_y;
[INFO] [stderr]     |         +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `CAMERA_OFFSET`
[INFO] [stderr]     |
[INFO] [stderr] 130 -     let map_start_y = start_y;
[INFO] [stderr] 130 +     let camera::draw_screen::CAMERA_OFFSET = start_y;
[INFO] [stderr]     |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `player`
[INFO] [stderr]    --> src/inventory_screen.rs:117:20
[INFO] [stderr]     |
[INFO] [stderr] 117 |                    player         : &mut creature::Creature,
[INFO] [stderr]     |                    ^^^^^^ help: if this is intentional, prefix it with an underscore: `_player`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `console_buffer`
[INFO] [stderr]    --> src/inventory_screen.rs:118:20
[INFO] [stderr]     |
[INFO] [stderr] 118 |                    console_buffer : &mut Vec<String>)
[INFO] [stderr]     |                    ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_console_buffer`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `i`
[INFO] [stderr]   --> src/rng.rs:61:13
[INFO] [stderr]    |
[INFO] [stderr] 61 |         for i in 0 .. dr.num_dice
[INFO] [stderr]    |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `end_y`
[INFO] [stderr]   --> src/title.rs:33:9
[INFO] [stderr]    |
[INFO] [stderr] 33 |     let end_y   = game_window.get_max_y();
[INFO] [stderr]    |         ^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]    |
[INFO] [stderr] 33 |     let _end_y   = game_window.get_max_y();
[INFO] [stderr]    |         +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `CAMERA_OFFSET`
[INFO] [stderr]    |
[INFO] [stderr] 33 -     let end_y   = game_window.get_max_y();
[INFO] [stderr] 33 +     let camera::draw_screen::CAMERA_OFFSET   = game_window.get_max_y();
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `dedication_x`
[INFO] [stderr]   --> src/title.rs:93:8
[INFO] [stderr]    |
[INFO] [stderr] 93 |    let dedication_x =
[INFO] [stderr]    |        ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]    |
[INFO] [stderr] 93 |    let _dedication_x =
[INFO] [stderr]    |        +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `CAMERA_OFFSET`
[INFO] [stderr]    |
[INFO] [stderr] 93 -    let dedication_x =
[INFO] [stderr] 93 +    let camera::draw_screen::CAMERA_OFFSET =
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `dedication_y`
[INFO] [stderr]   --> src/title.rs:98:8
[INFO] [stderr]    |
[INFO] [stderr] 98 |    let dedication_y =
[INFO] [stderr]    |        ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: if this is intentional, prefix it with an underscore
[INFO] [stderr]    |
[INFO] [stderr] 98 |    let _dedication_y =
[INFO] [stderr]    |        +
[INFO] [stderr] help: you might have meant to pattern match on the similarly named constant `CAMERA_OFFSET`
[INFO] [stderr]    |
[INFO] [stderr] 98 -    let dedication_y =
[INFO] [stderr] 98 +    let camera::draw_screen::CAMERA_OFFSET =
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/main.rs:73:9
[INFO] [stderr]    |
[INFO] [stderr] 73 |     let mut player = creature::Creature::Default_Player();
[INFO] [stderr]    |         ----^^^^^^
[INFO] [stderr]    |         |
[INFO] [stderr]    |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `inventory_action`
[INFO] [stderr]    --> src/main.rs:198:9
[INFO] [stderr]     |
[INFO] [stderr] 198 |     let inventory_action = inventory_screen::process_keyboard(&game_window);
[INFO] [stderr]     |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_inventory_action`
[INFO] [stderr] 
[INFO] [stderr] warning: type `KeyType` is more private than the item `TextWriter::input_key`
[INFO] [stderr]    --> src/textwriter.rs:135:5
[INFO] [stderr]     |
[INFO] [stderr] 135 |     pub fn input_key(&mut self, game_window : &pancurses::Window) -> KeyType
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `TextWriter::input_key` is reachable at visibility `pub(crate)`
[INFO] [stderr]     |
[INFO] [stderr] note: but type `KeyType` is only usable at visibility `pub(self)`
[INFO] [stderr]    --> src/textwriter.rs:27:1
[INFO] [stderr]     |
[INFO] [stderr]  27 | enum KeyType
[INFO] [stderr]     | ^^^^^^^^^^^^
[INFO] [stderr]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: fields `experience_have`, `player_control`, and `inventory` are never read
[INFO] [stderr]   --> src/creature.rs:47:5
[INFO] [stderr]    |
[INFO] [stderr] 25 | pub struct Creature {
[INFO] [stderr]    |            -------- fields in this struct
[INFO] [stderr] ...
[INFO] [stderr] 47 |     experience_have: u32,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 48 |     image: char,
[INFO] [stderr] 49 |     player_control: bool,
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 50 |     inventory: Vec<item::Item>,
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: multiple methods are never used
[INFO] [stderr]    --> src/creature.rs:172:12
[INFO] [stderr]     |
[INFO] [stderr]  53 | impl Creature {
[INFO] [stderr]     | ------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 172 |     pub fn set_image(&mut self, new_image: char) {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 176 |     pub fn get_player_control(&self) -> &bool {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 180 |     pub fn set_player_control(&mut self, new_player_control: bool) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 187 |     pub fn set_evasion(&mut self, new_evasion: u32) {
[INFO] [stderr]     |            ^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 193 |     pub fn set_endurnace(&mut self, new_endurance: u32) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 199 |     pub fn set_nullification(&mut self, new_nullification: u32) {
[INFO] [stderr]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 211 |     pub fn use_skill(
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_console_end_x` is never used
[INFO] [stderr]    --> src/camera/mod.rs:230:4
[INFO] [stderr]     |
[INFO] [stderr] 230 | fn get_console_end_x(game_window: &pancurses::Window) -> i32 {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_info_end_x` is never used
[INFO] [stderr]    --> src/camera/mod.rs:245:4
[INFO] [stderr]     |
[INFO] [stderr] 245 | fn get_info_end_x(game_window: &pancurses::Window)   -> i32 {game_window.get_max_x() - 3 }
[INFO] [stderr]     |    ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_controls_end_x` is never used
[INFO] [stderr]    --> src/camera/mod.rs:501:4
[INFO] [stderr]     |
[INFO] [stderr] 501 | fn get_controls_end_x(game_window: &pancurses::Window)   -> i32 {game_window.get_max_x() - 3}
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `damage` is never read
[INFO] [stderr]   --> src/tile.rs:26:5
[INFO] [stderr]    |
[INFO] [stderr] 23 | pub struct Tile
[INFO] [stderr]    |            ---- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 26 |     damage   : i32,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Tile` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: associated items `new`, `new_full`, `set_passable`, `get_damage`, `set_damage`, and `set_image` are never used
[INFO] [stderr]   --> src/tile.rs:32:12
[INFO] [stderr]    |
[INFO] [stderr] 30 | impl Tile
[INFO] [stderr]    | --------- associated items in this implementation
[INFO] [stderr] 31 | {
[INFO] [stderr] 32 |     pub fn new() -> Tile
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 39 |     pub fn new_full(new_passable : bool, new_damage : i32, new_image : char) -> Tile
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 51 |     pub fn set_passable(&mut self, new_passable : bool)
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 56 |     pub fn get_damage(&self) -> &i32
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 61 |     pub fn set_damage(&mut self, new_damage : i32)
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 71 |     pub fn set_image(&mut self, new_image : char)
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `print_tile_database` is never used
[INFO] [stderr]    --> src/tile.rs:107:8
[INFO] [stderr]     |
[INFO] [stderr] 107 | pub fn print_tile_database(tile_database: &[Tile; MAX_TILES])
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `get_map_handle` is never used
[INFO] [stderr]   --> src/tile_map.rs:61:12
[INFO] [stderr]    |
[INFO] [stderr] 32 | impl TileMap
[INFO] [stderr]    | ------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 61 |     pub fn get_map_handle(&mut self) -> &mut Vec<Vec<tile::Tile>>
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `get_visible` is never used
[INFO] [stderr]   --> src/menu.rs:35:12
[INFO] [stderr]    |
[INFO] [stderr] 28 | impl MenuItem<'_>
[INFO] [stderr]    | ----------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 35 |     pub fn get_visible(&self) -> bool
[INFO] [stderr]    |            ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_map_end_x` is never used
[INFO] [stderr]   --> src/inventory_screen.rs:62:4
[INFO] [stderr]    |
[INFO] [stderr] 62 | fn get_map_end_x(game_window : &pancurses::Window) -> i32
[INFO] [stderr]    |    ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_map_end_y` is never used
[INFO] [stderr]   --> src/inventory_screen.rs:78:4
[INFO] [stderr]    |
[INFO] [stderr] 78 | fn get_map_end_y(game_window : &pancurses::Window) -> i32
[INFO] [stderr]    |    ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_console_start_x` is never used
[INFO] [stderr]   --> src/inventory_screen.rs:94:4
[INFO] [stderr]    |
[INFO] [stderr] 94 | fn get_console_start_x(game_window : &pancurses::Window) -> i32
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_console_end_x` is never used
[INFO] [stderr]   --> src/inventory_screen.rs:99:4
[INFO] [stderr]    |
[INFO] [stderr] 99 | fn get_console_end_x(game_window : &pancurses::Window) -> i32
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_console_start_y` is never used
[INFO] [stderr]    --> src/inventory_screen.rs:104:4
[INFO] [stderr]     |
[INFO] [stderr] 104 | fn get_console_start_y(game_window : &pancurses::Window) -> i32
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `get_console_end_y` is never used
[INFO] [stderr]    --> src/inventory_screen.rs:109:4
[INFO] [stderr]     |
[INFO] [stderr] 109 | fn get_console_end_y(game_window : &pancurses::Window) -> i32
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `PseudoRandom` is never constructed
[INFO] [stderr]   --> src/rng.rs:23:12
[INFO] [stderr]    |
[INFO] [stderr] 23 | pub struct PseudoRandom
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `DiceRoll` is never constructed
[INFO] [stderr]   --> src/rng.rs:30:12
[INFO] [stderr]    |
[INFO] [stderr] 30 | pub struct DiceRoll
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: methods `rand_in_range`, `roll_dice`, and `roll_skill_check` are never used
[INFO] [stderr]   --> src/rng.rs:41:8
[INFO] [stderr]    |
[INFO] [stderr] 37 | impl PseudoRandom
[INFO] [stderr]    | ----------------- methods in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 41 |     fn rand_in_range(&mut self, lower_bound : u32, upper_bound : u32) -> u32
[INFO] [stderr]    |        ^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 57 |     fn roll_dice(&mut self, dr : &DiceRoll) -> u32
[INFO] [stderr]    |        ^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 78 |     pub fn roll_skill_check(&mut self, stat1 : u32, stat2 : u32, stat3 : u32, defense : u32) -> bool
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `StatTarget` is never used
[INFO] [stderr]   --> src/skill.rs:22:10
[INFO] [stderr]    |
[INFO] [stderr] 22 | pub enum StatTarget
[INFO] [stderr]    |          ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `DefenseTarget` is never used
[INFO] [stderr]   --> src/skill.rs:31:10
[INFO] [stderr]    |
[INFO] [stderr] 31 | pub enum DefenseTarget
[INFO] [stderr]    |          ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: enum `Effect` is never used
[INFO] [stderr]   --> src/skill.rs:41:10
[INFO] [stderr]    |
[INFO] [stderr] 41 | pub enum Effect
[INFO] [stderr]    |          ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct `Skill` is never constructed
[INFO] [stderr]   --> src/skill.rs:51:12
[INFO] [stderr]    |
[INFO] [stderr] 51 | pub struct Skill
[INFO] [stderr]    |            ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: multiple associated items are never used
[INFO] [stderr]    --> src/skill.rs:66:12
[INFO] [stderr]     |
[INFO] [stderr]  63 | impl Skill
[INFO] [stderr]     | ---------- associated items in this implementation
[INFO] [stderr] ...
[INFO] [stderr]  66 |     pub fn new() -> Skill
[INFO] [stderr]     |            ^^^
[INFO] [stderr] ...
[INFO] [stderr]  81 |     pub fn GetName(&self) -> &String
[INFO] [stderr]     |            ^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  86 |     pub fn GetRange(&self) -> &u32
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  91 |     pub fn GetStat1(&self) -> &StatTarget
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr]  96 |     pub fn GetStat2(&self) -> &StatTarget
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 101 |     pub fn GetStat3(&self) -> &StatTarget
[INFO] [stderr]     |            ^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 106 |     pub fn GetDefense(&self) -> &DefenseTarget
[INFO] [stderr]     |            ^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 111 |     pub fn GetDescription(&self) -> &String
[INFO] [stderr]     |            ^^^^^^^^^^^^^^
[INFO] [stderr] ...
[INFO] [stderr] 116 |     pub fn GetEffect(&self) -> &Effect
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `desc` is never read
[INFO] [stderr]   --> src/attributeslider.rs:42:5
[INFO] [stderr]    |
[INFO] [stderr] 39 | pub struct Attribute
[INFO] [stderr]    |            --------- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 42 |     desc  : String,
[INFO] [stderr]    |     ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: panic message is not a string literal
[INFO] [stderr]    --> src/main.rs:261:12
[INFO] [stderr]     |
[INFO] [stderr] 261 |     panic!(err);                               // We will now crash the game.
[INFO] [stderr]     |            ^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stderr]     = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stderr] help: add a "{}" format string to `Display` the message
[INFO] [stderr]     |
[INFO] [stderr] 261 |     panic!("{}", err);                               // We will now crash the game.
[INFO] [stderr]     |            +++++
[INFO] [stderr] 
[INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stderr]   --> src/menu.rs:70:33
[INFO] [stderr]    |
[INFO] [stderr] 70 | pub fn create_menu(in_text    : &str,
[INFO] [stderr]    |                                 ^^^^ the lifetime is elided here
[INFO] [stderr] ...
[INFO] [stderr] 74 |                    -> MenuItem
[INFO] [stderr]    |                       ^^^^^^^^ the same lifetime is hidden here
[INFO] [stderr]    |
[INFO] [stderr]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stderr]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stderr] help: use `'_` for type paths
[INFO] [stderr]    |
[INFO] [stderr] 74 |                    -> MenuItem<'_>
[INFO] [stderr]    |                               ++++
[INFO] [stderr] 
[INFO] [stderr] warning: `star_slammers` (bin "star_slammers" test) generated 66 warnings (run `cargo fix --bin "star_slammers" --tests` to apply 22 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.05s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/star_slammers-5ef9d942d7d443b9)
[INFO] [stdout] 
[INFO] [stdout] running 4 tests
[INFO] [stderr] Error opening terminal: unknown.
[INFO] [stderr] error: test failed, to rerun pass `--bin star_slammers`
[INFO] [stderr] 
[INFO] [stderr] Caused by:
[INFO] [stderr]   process didn't exit successfully: `/opt/rustwide/target/debug/deps/star_slammers-5ef9d942d7d443b9` (exit status: 1)
[INFO] [stderr] note: test exited abnormally; to see the full output pass --no-capture to the harness.
[INFO] running `Command { std: "docker" "inspect" "b91480b5103738d16d112f9a96df79c0c8c028d29fd1dd9d29717a29f7d55465", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b91480b5103738d16d112f9a96df79c0c8c028d29fd1dd9d29717a29f7d55465", kill_on_drop: false }`
[INFO] [stdout] b91480b5103738d16d112f9a96df79c0c8c028d29fd1dd9d29717a29f7d55465
