[INFO] cloning repository https://github.com/BurritoBandit28/NEA-Project
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/BurritoBandit28/NEA-Project" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBurritoBandit28%2FNEA-Project", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBurritoBandit28%2FNEA-Project'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 9b1a17d675b00a1ceb7c58a1a06d622271a10590
[INFO] building BurritoBandit28/NEA-Project against try#334963c956d25708feab489a3816ae63f639355d for pr-135216
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBurritoBandit28%2FNEA-Project" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/BurritoBandit28/NEA-Project on toolchain 334963c956d25708feab489a3816ae63f639355d
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+334963c956d25708feab489a3816ae63f639355d" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/BurritoBandit28/NEA-Project
[INFO] finished tweaking git repo https://github.com/BurritoBandit28/NEA-Project
[INFO] tweaked toml for git repo https://github.com/BurritoBandit28/NEA-Project written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] crate git repo https://github.com/BurritoBandit28/NEA-Project 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" "+334963c956d25708feab489a3816ae63f639355d" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+334963c956d25708feab489a3816ae63f639355d" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] f2befe1c61774744dbbc4ec72b1f654c1215b745690fec751c0fc00f777a56da
[INFO] running `Command { std: "docker" "start" "-a" "f2befe1c61774744dbbc4ec72b1f654c1215b745690fec751c0fc00f777a56da", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f2befe1c61774744dbbc4ec72b1f654c1215b745690fec751c0fc00f777a56da", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f2befe1c61774744dbbc4ec72b1f654c1215b745690fec751c0fc00f777a56da", kill_on_drop: false }`
[INFO] [stdout] f2befe1c61774744dbbc4ec72b1f654c1215b745690fec751c0fc00f777a56da
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:f3a9d4ad9d972b27faf3965f35b62e55ba32bbce8f20bc8fe909558a86702fde" "/opt/rustwide/cargo-home/bin/cargo" "+334963c956d25708feab489a3816ae63f639355d" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 201622b873648ea84c0faaf807b06a1bc506304b5149401e075893d8e41e8c19
[INFO] running `Command { std: "docker" "start" "-a" "201622b873648ea84c0faaf807b06a1bc506304b5149401e075893d8e41e8c19", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.76
[INFO] [stderr]    Compiling autocfg v1.2.0
[INFO] [stderr]    Compiling serde v1.0.204
[INFO] [stderr]    Compiling libc v0.2.155
[INFO] [stderr]    Compiling arrayvec v0.7.4
[INFO] [stderr]    Compiling bytemuck v1.16.1
[INFO] [stderr]    Compiling crossbeam-utils v0.8.20
[INFO] [stderr]    Compiling simd-adler32 v0.3.7
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling thiserror v1.0.62
[INFO] [stderr]    Compiling encoding_rs v0.8.34
[INFO] [stderr]    Compiling memchr v2.7.4
[INFO] [stderr]    Compiling pkg-config v0.3.30
[INFO] [stderr]    Compiling either v1.13.0
[INFO] [stderr]    Compiling paste v1.0.15
[INFO] [stderr]    Compiling siphasher v0.3.11
[INFO] [stderr]    Compiling aligned-vec v0.5.0
[INFO] [stderr]    Compiling miniz_oxide v0.7.4
[INFO] [stderr]    Compiling smallvec v1.13.2
[INFO] [stderr]    Compiling version-compare v0.1.1
[INFO] [stderr]    Compiling built v0.7.4
[INFO] [stderr]    Compiling crc32fast v1.4.2
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling parking_lot_core v0.9.10
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling phf_shared v0.11.2
[INFO] [stderr]    Compiling itertools v0.12.1
[INFO] [stderr]    Compiling num-traits v0.2.18
[INFO] [stderr]    Compiling num-bigint v0.4.4
[INFO] [stderr]    Compiling lock_api v0.4.12
[INFO] [stderr]    Compiling num-rational v0.4.1
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling sdl2-sys v0.36.0
[INFO] [stderr]    Compiling rav1e v0.7.1
[INFO] [stderr]    Compiling bitflags v2.6.0
[INFO] [stderr]    Compiling equivalent v1.0.1
[INFO] [stderr]    Compiling alsa-sys v0.3.1
[INFO] [stderr]    Compiling noop_proc_macro v0.3.0
[INFO] [stderr]    Compiling quote v1.0.35
[INFO] [stderr]    Compiling spin v0.9.8
[INFO] [stderr]    Compiling flate2 v1.0.30
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling serde_json v1.0.125
[INFO] [stderr]    Compiling syn v2.0.48
[INFO] [stderr]    Compiling crossbeam-deque v0.8.5
[INFO] [stderr]    Compiling cpal v0.15.3
[INFO] [stderr]    Compiling rayon-core v1.12.1
[INFO] [stderr]    Compiling destructure_traitobject v0.2.0
[INFO] [stderr]    Compiling imgref v1.10.1
[INFO] [stderr]    Compiling getrandom v0.2.15
[INFO] [stderr]    Compiling weezl v0.1.8
[INFO] [stderr]    Compiling simd_helpers v0.1.0
[INFO] [stderr]    Compiling bitstream-io v2.5.0
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling extended v0.1.0
[INFO] [stderr]    Compiling new_debug_unreachable v1.0.6
[INFO] [stderr]    Compiling ryu v1.0.18
[INFO] [stderr]    Compiling unsafe-any-ors v1.0.0
[INFO] [stderr]    Compiling flume v0.11.0
[INFO] [stderr]    Compiling rayon v1.10.0
[INFO] [stderr]    Compiling alsa v0.9.1
[INFO] [stderr]    Compiling loop9 v0.1.5
[INFO] [stderr]    Compiling phf_generator v0.11.2
[INFO] [stderr]    Compiling avif-serialize v0.8.1
[INFO] [stderr]    Compiling rgb v0.8.45
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling fdeflate v0.3.4
[INFO] [stderr]    Compiling zune-inflate v0.2.54
[INFO] [stderr]    Compiling is-docker v0.2.0
[INFO] [stderr]    Compiling half v2.4.1
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling v_frame v0.3.8
[INFO] [stderr]    Compiling ordered-float v2.10.1
[INFO] [stderr]    Compiling indexmap v2.5.0
[INFO] [stderr]    Compiling iana-time-zone v0.1.60
[INFO] [stderr]    Compiling sdl2 v0.36.0
[INFO] [stderr]    Compiling lebe v0.5.2
[INFO] [stderr]    Compiling unsafe-libyaml v0.2.11
[INFO] [stderr]    Compiling zune-core v0.4.12
[INFO] [stderr]    Compiling byteorder-lite v0.1.0
[INFO] [stderr]    Compiling quick-error v2.0.1
[INFO] [stderr]    Compiling dasp_sample v0.11.0
[INFO] [stderr]    Compiling bit_field v0.10.2
[INFO] [stderr]    Compiling mint v0.5.9
[INFO] [stderr]    Compiling color_quant v1.1.0
[INFO] [stderr]    Compiling jpeg-decoder v0.3.1
[INFO] [stderr]    Compiling gif v0.13.1
[INFO] [stderr]    Compiling exr v1.72.0
[INFO] [stderr]    Compiling zune-jpeg v0.4.11
[INFO] [stderr]    Compiling chrono v0.4.38
[INFO] [stderr]    Compiling num-iter v0.1.44
[INFO] [stderr]    Compiling png v0.17.13
[INFO] [stderr]    Compiling num-complex v0.4.5
[INFO] [stderr]    Compiling glam v0.29.0
[INFO] [stderr]    Compiling is-wsl v0.4.0
[INFO] [stderr]    Compiling maybe-rayon v0.1.1
[INFO] [stderr]    Compiling tiff v0.9.1
[INFO] [stderr]    Compiling parking_lot v0.12.3
[INFO] [stderr]    Compiling typemap-ors v1.0.0
[INFO] [stderr]    Compiling thread-id v4.2.2
[INFO] [stderr]    Compiling triple_buffer v8.0.0
[INFO] [stderr]    Compiling ringbuf v0.3.3
[INFO] [stderr]    Compiling qoi v0.4.1
[INFO] [stderr]    Compiling fnv v1.0.7
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]    Compiling arc-swap v1.7.1
[INFO] [stderr]    Compiling log-mdc v0.1.0
[INFO] [stderr]    Compiling pathdiff v0.2.1
[INFO] [stderr]    Compiling humantime v2.1.0
[INFO] [stderr]    Compiling same-file v1.0.6
[INFO] [stderr]    Compiling open v5.3.0
[INFO] [stderr]    Compiling num v0.4.2
[INFO] [stderr]    Compiling walkdir v2.5.0
[INFO] [stderr]    Compiling gjson v0.8.1
[INFO] [stderr]    Compiling derivative v2.2.0
[INFO] [stderr]    Compiling serde_derive v1.0.204
[INFO] [stderr]    Compiling thiserror-impl v1.0.62
[INFO] [stderr]    Compiling profiling-procmacros v1.0.15
[INFO] [stderr]    Compiling arg_enum_proc_macro v0.3.4
[INFO] [stderr]    Compiling num-derive v0.4.2
[INFO] [stderr]    Compiling phf_macros v0.11.2
[INFO] [stderr]    Compiling uuid-macro-internal v1.10.0
[INFO] [stderr]    Compiling uuid v1.10.0
[INFO] [stderr]    Compiling profiling v1.0.15
[INFO] [stderr]    Compiling phf v0.11.2
[INFO] [stderr]    Compiling image-webp v0.1.2
[INFO] [stderr]    Compiling log v0.4.22
[INFO] [stderr]    Compiling serde_yaml v0.9.34+deprecated
[INFO] [stderr]    Compiling serde-value v0.7.0
[INFO] [stderr]    Compiling symphonia-core v0.5.4
[INFO] [stderr]    Compiling av1-grain v0.2.3
[INFO] [stderr]    Compiling log4rs v1.3.0
[INFO] [stderr]    Compiling symphonia-metadata v0.5.4
[INFO] [stderr]    Compiling symphonia-codec-pcm v0.5.4
[INFO] [stderr]    Compiling symphonia-utils-xiph v0.5.4
[INFO] [stderr]    Compiling symphonia-format-riff v0.5.4
[INFO] [stderr]    Compiling symphonia-bundle-mp3 v0.5.4
[INFO] [stderr]    Compiling symphonia-format-ogg v0.5.4
[INFO] [stderr]    Compiling symphonia-bundle-flac v0.5.4
[INFO] [stderr]    Compiling symphonia-codec-vorbis v0.5.4
[INFO] [stderr]    Compiling symphonia v0.5.4
[INFO] [stderr]    Compiling kira v0.9.5
[INFO] [stderr]    Compiling ravif v0.11.8
[INFO] [stderr]    Compiling image v0.25.1
[INFO] [stderr]    Compiling NEA-Project v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::cmp::PartialEq`
[INFO] [stdout]  --> src/entities/player.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::cmp::PartialEq;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Arc`
[INFO] [stdout]  --> src/entities/player.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                 ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `EventPollIterator`
[INFO] [stdout]  --> src/entities/player.rs:5:26
[INFO] [stdout]   |
[INFO] [stdout] 5 | use sdl2::event::{Event, EventPollIterator};
[INFO] [stdout]   |                          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::EventPump`
[INFO] [stdout]  --> src/entities/player.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use sdl2::EventPump;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Keycode`
[INFO] [stdout]  --> src/entities/player.rs:7:22
[INFO] [stdout]   |
[INFO] [stdout] 7 | use sdl2::keyboard::{Keycode, Scancode};
[INFO] [stdout]   |                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TileSize`
[INFO] [stdout]   --> src/entities/player.rs:15:19
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::tile::{TileSize, TileType};
[INFO] [stdout]    |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `num::integer::sqrt`
[INFO] [stdout]  --> src/entities/turret.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use num::integer::sqrt;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/entities/turret.rs:115:13
[INFO] [stdout]     |
[INFO] [stdout] 115 | /             /// Here there is a check to see if the timer has exceeded 5 seconds.
[INFO] [stdout] 116 | |             /// The reason why it doesn't say "``self.timer == 5.0``" is because the timer is a sum of the time in seconds between frames.
[INFO] [stdout] 117 | |             /// This means it could be that the timer never actually equals 5 seconds, but by using the greater than operator, the moment 5 seconds has passed, the operation is run.
[INFO] [stdout]     | |_____________________________________________________________________________________________________________________________________________________________________________________^
[INFO] [stdout] 118 | /             if self.timer > 0.5 {
[INFO] [stdout] 119 | |                 self.timer = 0.0;
[INFO] [stdout] 120 | |                 let _ = player.change_health(-1.0);
[INFO] [stdout] 121 | |                 game.play_sound(ResourceLocation::new("game", "sounds/entity/turret/turret_gunshot.ogg"))
[INFO] [stdout] 122 | |             }
[INFO] [stdout]     | |_____________- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout]     = note: `#[warn(unused_doc_comments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `num::abs`
[INFO] [stdout]  --> src/entities/floaty_bomb.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use num::abs;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::keyboard::Keycode::N`
[INFO] [stdout]  --> src/entities/floaty_bomb.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use sdl2::keyboard::Keycode::N;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `image::math::Rect`
[INFO] [stdout]  --> src/entities/explosion.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use image::math::Rect;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Entity`
[INFO] [stdout]  --> src/entities.rs:8:21
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::entity::{Entity};
[INFO] [stdout]   |                     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Pointer`
[INFO] [stdout]  --> src/entity.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::Pointer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::DerefMut`
[INFO] [stdout]  --> src/entity.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::ops::DerefMut;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Arc` and `Mutex`
[INFO] [stdout]  --> src/entity.rs:3:17
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::sync::{Arc, Mutex};
[INFO] [stdout]   |                 ^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::event::EventPollIterator`
[INFO] [stdout]  --> src/entity.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use sdl2::event::EventPollIterator;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::rect::Rect`
[INFO] [stdout]  --> src/entity.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use sdl2::rect::Rect;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::entities::player::Player`
[INFO] [stdout]  --> src/entity.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::entities::player::Player;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::entities::turret::Turret`
[INFO] [stdout]  --> src/entity.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::entities::turret::Turret;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::game::Game`
[INFO] [stdout]  --> src/entity.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::game::Game;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs::File`
[INFO] [stdout]  --> src/game.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fs::File;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::BufReader`
[INFO] [stdout]  --> src/game.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::BufReader;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::DerefMut`
[INFO] [stdout]  --> src/game.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::ops::DerefMut;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::Month`
[INFO] [stdout]  --> src/game.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use chrono::Month;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AudioManagerSettings`, `AudioManager`, and `DefaultBackend`
[INFO] [stdout]  --> src/game.rs:7:21
[INFO] [stdout]   |
[INFO] [stdout] 7 | use kira::manager::{AudioManager, AudioManagerSettings, DefaultBackend};
[INFO] [stdout]   |                     ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `enemy`
[INFO] [stdout]   --> src/game.rs:14:23
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::entities::{enemy, player, turret};
[INFO] [stdout]    |                       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TileGraph`
[INFO] [stdout]   --> src/game.rs:16:27
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::level::{Level, TileGraph};
[INFO] [stdout]    |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `entities`
[INFO] [stdout]   --> src/game.rs:17:13
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::{entities, render, sound};
[INFO] [stdout]    |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TileSize`
[INFO] [stdout]   --> src/game.rs:23:25
[INFO] [stdout]    |
[INFO] [stdout] 23 | use crate::tile::{Tile, TileSize};
[INFO] [stdout]    |                         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Hash` and `Hasher`
[INFO] [stdout]  --> src/render.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::hash::{Hash, Hasher};
[INFO] [stdout]   |                 ^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::iter::Copied`
[INFO] [stdout]  --> src/render.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::iter::Copied;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::keyboard::Scancode::I`
[INFO] [stdout]  --> src/render.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use sdl2::keyboard::Scancode::I;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::libc::stat`
[INFO] [stdout]   --> src/render.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use sdl2::libc::stat;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::pixels::Color`
[INFO] [stdout]   --> src/render.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use sdl2::pixels::Color;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render`
[INFO] [stdout]   --> src/render.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::render;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::SystemTime`
[INFO] [stdout]  --> src/utils.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::time::SystemTime;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Level`, `Metadata`, and `Record`
[INFO] [stdout]  --> src/utils.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 | use log::{Level, LevelFilter, Metadata, Record};
[INFO] [stdout]   |           ^^^^^               ^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sqrt`
[INFO] [stdout]   --> src/utils.rs:11:20
[INFO] [stdout]    |
[INFO] [stdout] 11 | use num::integer::{sqrt, Roots};
[INFO] [stdout]    |                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `num::pow`
[INFO] [stdout]   --> src/utils.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use num::pow;
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::cmp::PartialEq`
[INFO] [stdout]  --> src/level.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::cmp::PartialEq;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `image::imageops::tile`
[INFO] [stdout]  --> src/level.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use image::imageops::tile;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Canvas`
[INFO] [stdout]  --> src/level.rs:5:20
[INFO] [stdout]   |
[INFO] [stdout] 5 | use sdl2::render::{Canvas, Texture, WindowCanvas};
[INFO] [stdout]   |                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::game::Game`
[INFO] [stdout]  --> src/level.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::game::Game;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::resource_location::ResourceLocation`
[INFO] [stdout]  --> src/level.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::resource_location::ResourceLocation;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::utils::get_dist`
[INFO] [stdout]  --> src/level.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::utils::get_dist;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/level.rs:57:20
[INFO] [stdout]    |
[INFO] [stdout] 57 |         let wall = (tiles.get("game:tiles/wall.json").unwrap().clone());
[INFO] [stdout]    |                    ^                                                  ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 57 -         let wall = (tiles.get("game:tiles/wall.json").unwrap().clone());
[INFO] [stdout] 57 +         let wall = tiles.get("game:tiles/wall.json").unwrap().clone();
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/level.rs:58:21
[INFO] [stdout]    |
[INFO] [stdout] 58 |         let floor = (tiles.get("game:tiles/floor.json").unwrap().clone());
[INFO] [stdout]    |                     ^                                                   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 58 -         let floor = (tiles.get("game:tiles/floor.json").unwrap().clone());
[INFO] [stdout] 58 +         let floor = tiles.get("game:tiles/floor.json").unwrap().clone();
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::keyboard::Scancode::S`
[INFO] [stdout]  --> src/tile.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use sdl2::keyboard::Scancode::S;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Canvas`
[INFO] [stdout]  --> src/tile.rs:5:20
[INFO] [stdout]   |
[INFO] [stdout] 5 | use sdl2::render::{Canvas, Texture, WindowCanvas};
[INFO] [stdout]   |                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/widgets/source_widget.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/widgets/play_widget.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::keyboard::Keycode::N`
[INFO] [stdout]  --> src/widgets/play_widget.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use sdl2::keyboard::Keycode::N;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::screens::room_editor_screen::RoomEditorScreen`
[INFO] [stdout]  --> src/widgets/play_widget.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::screens::room_editor_screen::RoomEditorScreen;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/widgets/editor_widget.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::keyboard::Keycode::N`
[INFO] [stdout]  --> src/widgets/editor_widget.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use sdl2::keyboard::Keycode::N;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::screens::main_menu_screen`
[INFO] [stdout]  --> src/widgets/editor_widget.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::screens::main_menu_screen;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::warn`
[INFO] [stdout]  --> src/widgets/enum_widget.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use log::warn;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::keyboard::Keycode::N`
[INFO] [stdout]  --> src/widgets/enum_widget.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use sdl2::keyboard::Keycode::N;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::widgets::err_widget::ErrWidget`
[INFO] [stdout]  --> src/widgets/enum_widget.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::widgets::err_widget::ErrWidget;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/widgets/err_widget.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/widgets/err_widget.rs:2:18
[INFO] [stdout]   |
[INFO] [stdout] 2 | use log::{error, warn};
[INFO] [stdout]   |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::widgets::play_widget::PlayWidget`
[INFO] [stdout]   --> src/widgets/player_health_widget.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::widgets::play_widget::PlayWidget;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/widgets/death_message.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `num::clamp`
[INFO] [stdout]  --> src/widgets/death_message.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use num::clamp;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Texture` and `WindowCanvas`
[INFO] [stdout]  --> src/widgets/death_message.rs:7:20
[INFO] [stdout]   |
[INFO] [stdout] 7 | use sdl2::render::{Texture, WindowCanvas};
[INFO] [stdout]   |                    ^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render`
[INFO] [stdout]  --> src/widgets/death_message.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::render;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::widgets::play_widget::PlayWidget`
[INFO] [stdout]   --> src/widgets/death_message.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::widgets::play_widget::PlayWidget;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `num::clamp`
[INFO] [stdout]  --> src/widgets/score_widget.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use num::clamp;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::entity::Entity`
[INFO] [stdout]  --> src/widgets/score_widget.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::entity::Entity;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::widgets::play_widget::PlayWidget`
[INFO] [stdout]   --> src/widgets/score_widget.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::widgets::play_widget::PlayWidget;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary trailing semicolon
[INFO] [stdout]   --> src/widgets/score_widget.rs:96:109
[INFO] [stdout]    |
[INFO] [stdout] 96 |                 d_ass.resource_location = ResourceLocation::new("game", "gui/widgets/debug_background.png");;
[INFO] [stdout]    |                                                                                                             ^ help: remove this semicolon
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(redundant_semicolons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/widgets/quit_widget.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::keyboard::Keycode::N`
[INFO] [stdout]  --> src/widgets/quit_widget.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use sdl2::keyboard::Keycode::N;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::screen::Screen`
[INFO] [stdout]  --> src/widgets/quit_widget.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::screen::Screen;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::screens::hud_screen::HudScreen`
[INFO] [stdout]  --> src/widgets/quit_widget.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::screens::hud_screen::HudScreen;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::screens::room_editor_screen::RoomEditorScreen`
[INFO] [stdout]   --> src/widgets/quit_widget.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::screens::room_editor_screen::RoomEditorScreen;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::widget::Widget`
[INFO] [stdout]   --> src/widgets.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::widget::Widget;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::keyboard::Keycode::D`
[INFO] [stdout]  --> src/screens/room_editor_screen.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use sdl2::keyboard::Keycode::D;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Texture` and `WindowCanvas`
[INFO] [stdout]  --> src/screens/room_editor_screen.rs:8:20
[INFO] [stdout]   |
[INFO] [stdout] 8 | use sdl2::render::{Texture, WindowCanvas};
[INFO] [stdout]   |                    ^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/screens/hud_screen.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::event::Event`
[INFO] [stdout]  --> src/screens/hud_screen.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use sdl2::event::Event;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Texture` and `WindowCanvas`
[INFO] [stdout]  --> src/screens/hud_screen.rs:3:20
[INFO] [stdout]   |
[INFO] [stdout] 3 | use sdl2::render::{Texture, WindowCanvas};
[INFO] [stdout]   |                    ^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::widgets::editor_widget::EditorWidget`
[INFO] [stdout]  --> src/screens/hud_screen.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::widgets::editor_widget::EditorWidget;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::widgets::play_widget::PlayWidget`
[INFO] [stdout]  --> src/screens/hud_screen.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::widgets::play_widget::PlayWidget;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::widgets::source_widget::SourceWidget`
[INFO] [stdout]   --> src/screens/hud_screen.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::widgets::source_widget::SourceWidget;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::widgets::player_health_widget::PlayerHealthWidget`
[INFO] [stdout]  --> src/screens/you_died.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::widgets::player_health_widget::PlayerHealthWidget;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::widgets::source_widget::SourceWidget`
[INFO] [stdout]  --> src/screens/you_died.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::widgets::source_widget::SourceWidget;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::screen::Screen`
[INFO] [stdout]  --> src/screens.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::screen::Screen;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::game::Game`
[INFO] [stdout]  --> src/widget.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::game::Game;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs::File`
[INFO] [stdout]  --> src/sound.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fs::File;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::BufReader`
[INFO] [stdout]  --> src/sound.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::io::BufReader;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `env`
[INFO] [stdout]   --> src/main.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | use std::{env, fs};
[INFO] [stdout]    |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs::File`
[INFO] [stdout]   --> src/main.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use std::fs::File;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::hash::Hash`
[INFO] [stdout]   --> src/main.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use std::hash::Hash;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::BufReader`
[INFO] [stdout]   --> src/main.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use std::io::BufReader;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::DerefMut`
[INFO] [stdout]   --> src/main.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::ops::DerefMut;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]   --> src/main.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use std::path::Path;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `enemy` and `player`
[INFO] [stdout]   --> src/main.rs:23:23
[INFO] [stdout]    |
[INFO] [stdout] 23 | use crate::entities::{enemy, player};
[INFO] [stdout]    |                       ^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::screens::main_menu_screen`
[INFO] [stdout]   --> src/main.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use crate::screens::main_menu_screen;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::entity::Entity`
[INFO] [stdout]   --> src/main.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use crate::entity::Entity;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `num::clamp`
[INFO] [stdout]   --> src/main.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | use num::clamp;
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::event::Event`
[INFO] [stdout]   --> src/main.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use sdl2::event::Event;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::keyboard::Keycode`
[INFO] [stdout]   --> src/main.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 31 | use sdl2::keyboard::Keycode;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gjson::Value`
[INFO] [stdout]   --> src/main.rs:34:5
[INFO] [stdout]    |
[INFO] [stdout] 34 | use gjson::Value;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::event::Event::KeyDown`
[INFO] [stdout]   --> src/main.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 36 | use sdl2::event::Event::KeyDown;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::level::Level`
[INFO] [stdout]   --> src/main.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 41 | use crate::level::Level;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::render::AssetData`
[INFO] [stdout]   --> src/main.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | use crate::render::AssetData;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::widget::Alignment`
[INFO] [stdout]   --> src/main.rs:45:5
[INFO] [stdout]    |
[INFO] [stdout] 45 | use crate::widget::Alignment;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::widgets::source_widget`
[INFO] [stdout]   --> src/main.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 46 | use crate::widgets::source_widget;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::widgets::source_widget::SourceWidget`
[INFO] [stdout]   --> src/main.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 47 | use crate::widgets::source_widget::SourceWidget;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/main.rs:282:5
[INFO] [stdout]     |
[INFO] [stdout] 282 | /     /// Delta refers to the time taken between showing two frames. This value is often used for physics related operations, as this allow...
[INFO] [stdout] 283 | |     /// You can see that happening in [`Entity::physics`]
[INFO] [stdout]     | |_________________________________________________________^
[INFO] [stdout] 284 |       // initiate delta
[INFO] [stdout] 285 |       let mut delta: f32 = 0.0;
[INFO] [stdout]     |       ------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `widget::Widget`
[INFO] [stdout]   --> src/main.rs:40:5
[INFO] [stdout]    |
[INFO] [stdout] 40 | use widget::Widget;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::widget::Widget`
[INFO] [stdout]   --> src/game.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use crate::widget::Widget;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `delta`
[INFO] [stdout]   --> src/entities/player.rs:33:24
[INFO] [stdout]    |
[INFO] [stdout] 33 |     fn tick(&mut self, delta: f32) {
[INFO] [stdout]    |                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_delta`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/entities/player.rs:111:17
[INFO] [stdout]     |
[INFO] [stdout] 111 |             let mut player = Self {
[INFO] [stdout]     |                 ----^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `events`
[INFO] [stdout]    --> src/entities/player.rs:143:62
[INFO] [stdout]     |
[INFO] [stdout] 143 |     pub fn handle_input(&mut self, held_keys: Vec<Scancode>, events: Vec<Event>) {
[INFO] [stdout]     |                                                              ^^^^^^ help: if this is intentional, prefix it with an underscore: `_events`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `amount`
[INFO] [stdout]   --> src/entities/enemy.rs:58:33
[INFO] [stdout]    |
[INFO] [stdout] 58 |     fn change_health(&mut self, amount: f32) {
[INFO] [stdout]    |                                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_amount`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/entities/enemy.rs:73:13
[INFO] [stdout]    |
[INFO] [stdout] 73 |         let mut entity = Self{
[INFO] [stdout]    |             ----^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `amount`
[INFO] [stdout]   --> src/entities/dummy.rs:33:33
[INFO] [stdout]    |
[INFO] [stdout] 33 |     fn change_health(&mut self, amount: f32) {
[INFO] [stdout]    |                                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_amount`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/entities/turret.rs:35:13
[INFO] [stdout]    |
[INFO] [stdout] 35 |         let mut entity = Self{
[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/entities/turret.rs:76:13
[INFO] [stdout]    |
[INFO] [stdout] 76 |         let mut player : &mut dyn Entity;
[INFO] [stdout]    |             ----^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `velocity`
[INFO] [stdout]    --> src/entities/turret.rs:138:32
[INFO] [stdout]     |
[INFO] [stdout] 138 |     fn set_velocity(&mut self, velocity: (f32, f32)) {}
[INFO] [stdout]     |                                ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_velocity`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `delta`
[INFO] [stdout]   --> src/entities/floaty_bomb.rs:42:24
[INFO] [stdout]    |
[INFO] [stdout] 42 |     fn tick(&mut self, delta: f32) {
[INFO] [stdout]    |                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_delta`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/entities/floaty_bomb.rs:96:13
[INFO] [stdout]    |
[INFO] [stdout] 96 |         let mut floaty_bomb = Self {
[INFO] [stdout]    |             ----^^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `amount`
[INFO] [stdout]   --> src/entities/explosion.rs:39:33
[INFO] [stdout]    |
[INFO] [stdout] 39 |     fn change_health(&mut self, amount: f32) {
[INFO] [stdout]    |                                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_amount`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `velocity`
[INFO] [stdout]   --> src/entities/explosion.rs:55:32
[INFO] [stdout]    |
[INFO] [stdout] 55 |     fn set_velocity(&mut self, velocity: (f32, f32)) {
[INFO] [stdout]    |                                ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_velocity`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/entities/explosion.rs:116:13
[INFO] [stdout]     |
[INFO] [stdout] 116 |         let mut explosion = Self {
[INFO] [stdout]     |             ----^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rl`
[INFO] [stdout]   --> src/entity.rs:42:41
[INFO] [stdout]    |
[INFO] [stdout] 42 |     fn set_resource_location(&mut self, rl : ResourceLocation) {
[INFO] [stdout]    |                                         ^^ help: if this is intentional, prefix it with an underscore: `_rl`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `delta`
[INFO] [stdout]   --> src/entity.rs:47:24
[INFO] [stdout]    |
[INFO] [stdout] 47 |     fn tick(&mut self, delta : f32) {}
[INFO] [stdout]    |                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_delta`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ass`
[INFO] [stdout]    --> src/entity.rs:105:34
[INFO] [stdout]     |
[INFO] [stdout] 105 |     fn set_asset_data(&mut self, ass : AssetData) {
[INFO] [stdout]     |                                  ^^^ help: if this is intentional, prefix it with an underscore: `_ass`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/game.rs:161:17
[INFO] [stdout]     |
[INFO] [stdout] 161 |             let mut level = &mut self.current_level;
[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/game.rs:169:21
[INFO] [stdout]     |
[INFO] [stdout] 169 |                 let mut list = &mut self.entities;
[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/render.rs:91:57
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub fn draw_pp_texture(x: i32, y: i32, ass: &AssetData, mut canvas: &mut WindowCanvas, sf: i32, textures : &HashMap<String, Texture>) {
[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/render.rs:94:9
[INFO] [stdout]    |
[INFO] [stdout] 94 |     let mut id = ass.resource_location.clone();
[INFO] [stdout]    |         ----^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `size`
[INFO] [stdout]    --> src/tile.rs:223:13
[INFO] [stdout]     |
[INFO] [stdout] 223 |         let size = self.size.get();
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/screen.rs:16:13
[INFO] [stdout]    |
[INFO] [stdout] 16 |         let mut listy = self.get_widgets().get_mut(y);
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `events`
[INFO] [stdout]   --> src/screen.rs:37:72
[INFO] [stdout]    |
[INFO] [stdout] 37 |     fn cycle(&mut self, mousex : u32, mousey : u32, dims : (u32, u32), events: Vec<Event>) {
[INFO] [stdout]    |                                                                        ^^^^^^ help: if this is intentional, prefix it with an underscore: `_events`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/screen.rs:42:21
[INFO] [stdout]    |
[INFO] [stdout] 42 |                 let mut coords = w.correct_coords(dims);
[INFO] [stdout]    |                     ----^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tf`
[INFO] [stdout]   --> src/widgets/player_health_widget.rs:56:32
[INFO] [stdout]    |
[INFO] [stdout] 56 |     fn set_selected(&mut self, tf: bool) {}
[INFO] [stdout]    |                                ^^ help: if this is intentional, prefix it with an underscore: `_tf`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/widgets/player_health_widget.rs:102:17
[INFO] [stdout]     |
[INFO] [stdout] 102 |             for mut h in 0..(health/2.0).ceil() as u32 {
[INFO] [stdout]     |                 ----^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tf`
[INFO] [stdout]   --> src/widgets/death_message.rs:54:32
[INFO] [stdout]    |
[INFO] [stdout] 54 |     fn set_selected(&mut self, tf: bool) {}
[INFO] [stdout]    |                                ^^ help: if this is intentional, prefix it with an underscore: `_tf`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tf`
[INFO] [stdout]   --> src/widgets/score_widget.rs:51:32
[INFO] [stdout]    |
[INFO] [stdout] 51 |     fn set_selected(&mut self, tf: bool) {}
[INFO] [stdout]    |                                ^^ help: if this is intentional, prefix it with an underscore: `_tf`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dims`
[INFO] [stdout]   --> src/widgets/score_widget.rs:86:99
[INFO] [stdout]    |
[INFO] [stdout] 86 |     fn render(&mut self, textures: &HashMap<String, Texture>, sf: i32, canvas: &mut WindowCanvas, dims: (u32, u32), debug : bool) {
[INFO] [stdout]    |                                                                                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_dims`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tile`
[INFO] [stdout]   --> src/screens/room_editor_screen.rs:35:13
[INFO] [stdout]    |
[INFO] [stdout] 35 |         let tile = Some(tiles.get("game:tiles/wall.json").unwrap().clone());
[INFO] [stdout]    |             ^^^^ help: if this is intentional, prefix it with an underscore: `_tile`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tile3`
[INFO] [stdout]   --> src/screens/room_editor_screen.rs:36:13
[INFO] [stdout]    |
[INFO] [stdout] 36 |         let tile3 = Some(tiles.get("game:tiles/dirt.json").unwrap().clone());
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_tile3`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tile4`
[INFO] [stdout]   --> src/screens/room_editor_screen.rs:37:13
[INFO] [stdout]    |
[INFO] [stdout] 37 |         let tile4 = Some(tiles.get("game:tiles/orange.json").unwrap().clone());
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_tile4`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tile`
[INFO] [stdout]   --> src/screens/room_editor_screen.rs:77:13
[INFO] [stdout]    |
[INFO] [stdout] 77 |         let tile  = game.tiles.get("game:tiles/wall.json");
[INFO] [stdout]    |             ^^^^ help: if this is intentional, prefix it with an underscore: `_tile`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/screens/room_editor_screen.rs:79:13
[INFO] [stdout]    |
[INFO] [stdout] 79 |         let mut level = Level {
[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/screens/room_editor_screen.rs:120:21
[INFO] [stdout]     |
[INFO] [stdout] 120 |                 let mut coords = w.correct_coords(dims);
[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/screens/room_editor_screen.rs:153:17
[INFO] [stdout]     |
[INFO] [stdout] 153 |             let mut ass = (*self.game).entities.get_mut(self.highlight_index).unwrap().lock().unwrap().get_asset_data();
[INFO] [stdout]     |                 ----^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scale_offset`
[INFO] [stdout]   --> src/main.rs:68:9
[INFO] [stdout]    |
[INFO] [stdout] 68 |     let scale_offset = (sdl_ctx.video().unwrap().current_display_mode(0).unwrap().h / scale_factor as i32) - 180;
[INFO] [stdout]    |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_scale_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:88:9
[INFO] [stdout]    |
[INFO] [stdout] 88 |     let mut canvas = &mut window.into_canvas().build().unwrap();
[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/main.rs:100:13
[INFO] [stdout]     |
[INFO] [stdout] 100 |         let mut path = String::from(dir.unwrap().path().to_str().unwrap()).replace("\\", "/");
[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/main.rs:137:13
[INFO] [stdout]     |
[INFO] [stdout] 137 |         let mut path = String::from(dir.unwrap().path().to_str().unwrap()).replace("\\", "/");
[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/main.rs:235:25
[INFO] [stdout]     |
[INFO] [stdout] 235 |                     let mut collison_box : Option<(u32,u32)>;
[INFO] [stdout]     |                         ----^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `uuid` is never read
[INFO] [stdout]   --> src/entities/player.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct Player {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 25 |     uuid : Uuid,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `uuid` and `game` are never read
[INFO] [stdout]   --> src/entities/enemy.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Enemy {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 14 |     uuid : Uuid,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 15 |     game : *mut Game,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `create` is never used
[INFO] [stdout]   --> src/entities/enemy.rs:64:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | impl Enemy {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] 64 |     pub fn create(game: &mut Game) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `uuid` and `game` are never read
[INFO] [stdout]   --> src/entities/dummy.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 8  | pub struct DummyEntity {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     uuid : Uuid,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 14 |     game : *mut Game,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `velocity`, `uuid`, and `index` are never read
[INFO] [stdout]   --> src/entities/turret.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Turret {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 14 |     velocity : (f32, f32),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 15 |     uuid : Uuid,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     index : usize,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `uuid` is never read
[INFO] [stdout]   --> src/entities/floaty_bomb.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct FloatyBomb {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 20 |     uuid : Uuid,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `uuid` is never read
[INFO] [stdout]   --> src/entities/explosion.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Explosion {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 18 |     uuid : Uuid
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_resource_location` and `get_index` are never used
[INFO] [stdout]   --> src/entity.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub trait Entity {
[INFO] [stdout]    |           ------ methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 42 |     fn set_resource_location(&mut self, rl : ResourceLocation) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     fn get_index(&self) -> usize;
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_tile` is never used
[INFO] [stdout]   --> src/level.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl Level {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn get_tile(&mut self, size : TileSize, coordinates: (f32, f32)) -> Tile {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_name` is never used
[INFO] [stdout]    --> src/tile.rs:238:12
[INFO] [stdout]     |
[INFO] [stdout] 143 | impl Tile {
[INFO] [stdout]     | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 238 |     pub fn get_name(&mut self) -> String {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `set_game` is never used
[INFO] [stdout]   --> src/screen.rs:29:8
[INFO] [stdout]    |
[INFO] [stdout] 8  | pub trait Screen {
[INFO] [stdout]    |           ------ method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 29 |     fn set_game(&mut self, game : *mut Game);
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `empty` is never used
[INFO] [stdout]   --> src/widgets/source_widget.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl SourceWidget {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 19 |     pub fn empty() -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `game` is never read
[INFO] [stdout]   --> src/widgets/enum_widget.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct EnumWidget<T : WidgetEnum> {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 18 |     game : *mut Game,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_value` is never used
[INFO] [stdout]   --> src/widgets/enum_widget.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl<T : WidgetEnum + 'static + Clone> EnumWidget<T> {
[INFO] [stdout]    | ---------------------------------------------------- method in this implementation
[INFO] [stdout] 22 |
[INFO] [stdout] 23 |     fn get_value(&mut self) -> T {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `empty` is never used
[INFO] [stdout]   --> src/widgets/err_widget.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl ErrWidget {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 20 |     pub fn empty() -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `create` is never used
[INFO] [stdout]   --> src/widgets/err_widget.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl ErrWidget {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 44 |     pub fn create(alignment: Alignment, x : i32, y : i32, game : *mut Game) -> Box<Self>
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `selected` is never read
[INFO] [stdout]   --> src/widgets/player_health_widget.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct PlayerHealthWidget {
[INFO] [stdout]    |            ------------------ field in this struct
[INFO] [stdout] 13 |     selected : bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `selected` and `game` are never read
[INFO] [stdout]   --> src/widgets/death_message.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct DeathMessage {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 16 |     selected : bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     game : *mut Game,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `selected` and `score` are never read
[INFO] [stdout]   --> src/widgets/score_widget.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct ScoreWidget {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 14 |     selected : bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     score : u32
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `sf` and `centre` are never read
[INFO] [stdout]   --> src/screens/room_editor_screen.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct RoomEditorScreen {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 21 |     sf : i32,
[INFO] [stdout]    |     ^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     centre : (f32, f32),
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_screen_coordinates`, `set_asset_data`, `set_allignment`, and `get_game` are never used
[INFO] [stdout]   --> src/widget.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub trait Widget {
[INFO] [stdout]    |           ------ methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 25 |     fn set_screen_coordinates(&mut self, x : i32, y : i32);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     fn set_asset_data(&mut self, ass : AssetData);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 71 |     fn set_allignment(&mut self, alignment: Alignment);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     fn get_game(&mut self);
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `RIGHT`, `BOTTOM`, and `CENTRE` are never constructed
[INFO] [stdout]   --> src/widget.rs:93:5
[INFO] [stdout]    |
[INFO] [stdout] 91 | pub enum Alignment {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] 92 |     LEFT,
[INFO] [stdout] 93 |     RIGHT,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 94 |     TOP,
[INFO] [stdout] 95 |     BOTTOM,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 96 |     CENTRE,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `parse` is never used
[INFO] [stdout]    --> src/widget.rs:101:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl Alignment {
[INFO] [stdout]     | -------------- associated function in this implementation
[INFO] [stdout] 101 |     pub fn parse(val : String) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `resource_location` is never read
[INFO] [stdout]   --> src/sound.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 9  | pub struct Sound {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] 10 |     pub path : String,
[INFO] [stdout] 11 |     pub resource_location : ResourceLocation
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]   --> src/main.rs:85:5
[INFO] [stdout]    |
[INFO] [stdout] 85 |     &window.set_mouse_grab(true);
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the borrow produces a value
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 85 |     let _ = &window.set_mouse_grab(true);
[INFO] [stdout]    |     +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Entity::set_coords` that must be used
[INFO] [stdout]   --> src/entities/player.rs:82:9
[INFO] [stdout]    |
[INFO] [stdout] 82 |         self.set_coords( (x,y) );
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 82 |         let _ = self.set_coords( (x,y) );
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Entity::set_velocity` that must be used
[INFO] [stdout]    --> src/entities/player.rs:168:9
[INFO] [stdout]     |
[INFO] [stdout] 168 |         self.set_velocity(norm);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 168 |         let _ = self.set_velocity(norm);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Entity::change_health` that must be used
[INFO] [stdout]   --> src/entities/floaty_bomb.rs:53:17
[INFO] [stdout]    |
[INFO] [stdout] 53 |                 game.get_player().unwrap().lock().unwrap().change_health(-10.0);
[INFO] [stdout]    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 53 |                 let _ = game.get_player().unwrap().lock().unwrap().change_health(-10.0);
[INFO] [stdout]    |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Entity::set_velocity` that must be used
[INFO] [stdout]   --> src/entities/floaty_bomb.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |         self.set_velocity(normalised);
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 60 |         let _ = self.set_velocity(normalised);
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/widgets/death_message.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 |         fs::create_dir("./scores");
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 28 |         let _ = fs::create_dir("./scores");
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused return value of `Entity::set_coords` that must be used
[INFO] [stdout]   --> src/screens/room_editor_screen.rs:71:9
[INFO] [stdout]    |
[INFO] [stdout] 71 |         dummy_player.set_coords((0.0, 0.0));
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 71 |         let _ = dummy_player.set_coords((0.0, 0.0));
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: linking with `cc` failed: exit status: 1
[INFO] [stdout]   |
[INFO] [stdout]   = note: LC_ALL="C" PATH="/opt/rustwide/rustup-home/toolchains/334963c956d25708feab489a3816ae63f639355d/lib/rustlib/x86_64-unknown-linux-gnu/bin:/opt/rustwide/rustup-home/toolchains/334963c956d25708feab489a3816ae63f639355d/lib/rustlib/x86_64-unknown-linux-gnu/bin/self-contained:/opt/rustwide/cargo-home/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" VSLANG="1033" "cc" "-m64" "/tmp/rustcy8RAQW/symbols.o" "<10 object files omitted>" "-Wl,--as-needed" "-Wl,-Bstatic" "/opt/rustwide/target/debug/deps/{libopen-e9bf059460267353.rlib,libpathdiff-aa7c4144031a5892.rlib,libis_wsl-f9be73f8f1f0b589.rlib,libis_docker-1ec04d1ae1091bca.rlib,libwalkdir-1a00c768f8c7f3de.rlib,libsame_file-1ceb7b6153588b15.rlib,libgjson-e3831fe79f676848.rlib,liblog4rs-f937435360d6a826.rlib,liblog_mdc-23f68b9a997ec7bd.rlib,libserde_json-4e2c81bbb2cfe7dd.rlib,libthread_id-807258634ca908aa.rlib,libhumantime-271ba35809dd8c72.rlib,libserde_yaml-8a573a839854479b.rlib,libryu-f8ba606093049f91.rlib,libitoa-4c6598116a867907.rlib,libindexmap-3e1330b84b3857ac.rlib,libequivalent-fdc46004df91ad08.rlib,libhashbrown-5d9404f16ad26a3c.rlib,libunsafe_libyaml-7bc1bf218b2f5452.rlib,libtypemap_ors-d2bc07c6ea24a36d.rlib,libunsafe_any_ors-20ad651d8507443d.rlib,libdestructure_traitobject-cad42d600d9d013e.rlib,libparking_lot-90e96ca713c02760.rlib,libparking_lot_core-c96e94e3ddb05e2a.rlib,liblock_api-75834f234b1d4b89.rlib,libscopeguard-d52bd00767847e44.rlib,libserde_value-284639506a6f8d0a.rlib,libordered_float-b615c018ab30b6a1.rlib,libfnv-2d77ec4f6f971b24.rlib,libarc_swap-4d53f24db0759841.rlib,libonce_cell-24c5d665b6879050.rlib,libkira-fc8c3f33d2f799d5.rlib,libglam-dac6f10b0c8e3aa8.rlib,libmint-01670892f5cc95e3.rlib,libsymphonia-e4da8c1a0636ff1c.rlib,libsymphonia_format_riff-803e3277bef70fb8.rlib,libsymphonia_format_ogg-1894ff00d156dc63.rlib,libsymphonia_codec_vorbis-f0015d83bc66ba50.rlib,libsymphonia_codec_pcm-927d5d28491e95b9.rlib,libsymphonia_bundle_mp3-b96aa99a80aef7e9.rlib,libsymphonia_bundle_flac-b7f09f1112796973.rlib,libsymphonia_utils_xiph-6cf117c0a8c21971.rlib,libsymphonia_metadata-6ddd2a504a874e14.rlib,libencoding_rs-721451430cd4dde4.rlib,libsymphonia_core-101caa0b34cd21af.rlib,libringbuf-3a8f15fb3381f262.rlib,libcpal-33e154612a58c077.rlib,libdasp_sample-bfd2e54ef6869ba0.rlib,libalsa-7c86aad9f4082b03.rlib,libbitflags-ce446ee600bbaa5e.rlib,libalsa_sys-0e7199844e8286c8.rlib,libtriple_buffer-204d2e00f139dfff.rlib,libchrono-57398ff03046f6eb.rlib,libiana_time_zone-a18c7932f053b032.rlib,libimage-f8f5001e2f38bcfc.rlib,libimage_webp-330aa339eabba840.rlib,libbyteorder_lite-25e78048a27d33b8.rlib,libqoi-cd9e54588071b436.rlib,libpng-fd228b89475cd273.rlib,libfdeflate-2676e2396689691a.rlib,libexr-56f5308b3150b5de.rlib,libflume-9016736a6757991b.rlib,libzune_inflate-249878d2816071b4.rlib,libbit_field-eda3227a244109cb.rlib,liblebe-dd40720b17de66d8.rlib,libhalf-8828d1a34d8bd812.rlib,libsmallvec-8045c56aeb050430.rlib,libzune_jpeg-27f69ef2fcb5b2b5.rlib,libzune_core-e448b15fbf642cb4.rlib,libgif-d5ddca0d037621a1.rlib,libcolor_quant-fa7ff1de0e6ea74b.rlib,libbyteorder-1efcbe4f07366651.rlib,libravif-9fe4cfda9e9f22eb.rlib,libloop9-a00110964edb7656.rlib,libavif_serialize-462a2c6d348ebf69.rlib,libquick_error-8d402ad4d863a69d.rlib,librgb-64755a0b51526240.rlib,librav1e-377634c0d4084d59.rlib,libprofiling-0b17fbb946229217.rlib,libav1_grain-d80cb8c86e07e0a4.rlib,libnom-ad9297965177f1dd.rlib,libmemchr-4f0714dc45d95749.rlib,libanyhow-ee70fbd11e6fed51.rlib,libdebug_unreachable-64be8850bfcabca1.rlib,libmaybe_rayon-92aab8412df93c0f.rlib,librayon-f67f93ec3a198981.rlib,librayon_core-9a8f334f0de531d6.rlib,libcrossbeam_deque-337e201672f94d3a.rlib,libcrossbeam_epoch-6eaad7f981b0bedd.rlib,libcrossbeam_utils-d3f614f0e73f3455.rlib,libv_frame-1f201fc178a23b59.rlib,libaligned_vec-ab53b3b8648dcc44.rlib,libarrayvec-f942e8c771b56381.rlib,libthiserror-5f307e7b1ef09c9d.rlib,libbitstream_io-597846931e8771d6.rlib,libitertools-97851b5a067112d9.rlib,libeither-38d43fea6173fdf6.rlib,libimgref-8300d2ee6b200c5b.rlib,libbytemuck-11a326b1957631b5.rlib,libtiff-d84999960054ebdf.rlib,libflate2-f41334977e3c1288.rlib,libminiz_oxide-7be321083b22689a.rlib,libsimd_adler32-eda01a159841bab2.rlib,libcrc32fast-ec6b1847c42b19ed.rlib,libweezl-a28855e8054185c9.rlib,libjpeg_decoder-5020c691837dd46e.rlib,libnum-80d62bfb26851d1f.rlib,libnum_iter-179abf821e25cf7d.rlib,libnum_rational-157c6ddf71846775.rlib,libnum_complex-69e59a8dcc4ca154.rlib,libnum_bigint-e52eff3c1a063aff.rlib,libnum_integer-eaa35f7d55eff352.rlib,libnum_traits-ed086f9edf4db8fb.rlib,libuuid-d7b45bc365533eab.rlib,librand-4f193d7e935238d9.rlib,librand_chacha-3cab81f139e2a969.rlib,libppv_lite86-4250c766b4729968.rlib,librand_core-73772c071ea9440d.rlib,libgetrandom-130a500c742fee17.rlib,libcfg_if-33ef6c02a07f9fec.rlib,liblog-84090fa08de3e3a1.rlib,libserde-98a8d4bb1e17f636.rlib,libsdl2-3c5e888276990ff5.rlib,libsdl2_sys-14f4968704d2cf1d.rlib,libbitflags-e2b4db6c651223da.rlib,liblazy_static-2bb390fee0230a38.rlib,liblibc-fe9819ecd9fb6bb5.rlib}" "/opt/rustwide/rustup-home/toolchains/334963c956d25708feab489a3816ae63f639355d/lib/rustlib/x86_64-unknown-linux-gnu/lib/{libstd-d6f1d924b2f4233e.rlib,libpanic_unwind-00eb06e39850f679.rlib,libobject-d0382f11baa011b6.rlib,libmemchr-b7e2e2c1a7e4643d.rlib,libaddr2line-30ced7f1999cfa29.rlib,libgimli-3ee7e14c58e31ebd.rlib,librustc_demangle-a4f649bba77ffcc5.rlib,libstd_detect-c89a3ce7ad7c3dbd.rlib,libhashbrown-e1ce1d3d110c6707.rlib,librustc_std_workspace_alloc-e0604fecbf0f39dc.rlib,libminiz_oxide-0a9c6172f04822cc.rlib,libadler2-14a33f7117abcee7.rlib,libunwind-24c16adbe5e57356.rlib,libcfg_if-d2688d4a5c8e415b.rlib,liblibc-8ff7ba6d97853f27.rlib,liballoc-5c001d095eb077ec.rlib,librustc_std_workspace_core-395a38b8e0851c9b.rlib,libcore-d453bab70303062c.rlib,libcompiler_builtins-dd545221bb4f4734.rlib}" "-Wl,-Bdynamic" "-lasound" "-lSDL2" "-lSDL2_image" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-B/opt/rustwide/rustup-home/toolchains/334963c956d25708feab489a3816ae63f639355d/lib/rustlib/x86_64-unknown-linux-gnu/bin/gcc-ld" "-fuse-ld=lld" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" "/usr/lib/x86_64-linux-gnu" "-L" "/opt/rustwide/rustup-home/toolchains/334963c956d25708feab489a3816ae63f639355d/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/opt/rustwide/target/debug/deps/NEA_Project-87bc9dc2c819192e" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-nodefaultlibs"
[INFO] [stdout]   = note: some arguments are omitted. use `--verbose` to show all linker arguments
[INFO] [stdout]   = note: rust-lld: error: unable to find library -lSDL2_image
[INFO] [stdout]           collect2: error: ld returned 1 exit status
[INFO] [stdout]           
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `NEA-Project` (bin "NEA-Project") due to 1 previous error; 186 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "201622b873648ea84c0faaf807b06a1bc506304b5149401e075893d8e41e8c19", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "201622b873648ea84c0faaf807b06a1bc506304b5149401e075893d8e41e8c19", kill_on_drop: false }`
[INFO] [stdout] 201622b873648ea84c0faaf807b06a1bc506304b5149401e075893d8e41e8c19
