[INFO] cloning repository https://github.com/BurritoBandit28/Memory-Game
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/BurritoBandit28/Memory-Game" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBurritoBandit28%2FMemory-Game", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBurritoBandit28%2FMemory-Game'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] e9b3fddb97b8280af2186da0fbfac1c8cbba3f92
[INFO] testing BurritoBandit28/Memory-Game against master#733b47ea4b1b86216f14ef56e49440c33933f230+rustflags=-Copt-level=3 for pr-138759
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBurritoBandit28%2FMemory-Game" "/workspace/builds/worker-6-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/BurritoBandit28/Memory-Game
[INFO] finished tweaking git repo https://github.com/BurritoBandit28/Memory-Game
[INFO] tweaked toml for git repo https://github.com/BurritoBandit28/Memory-Game written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/BurritoBandit28/Memory-Game on toolchain 733b47ea4b1b86216f14ef56e49440c33933f230
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+733b47ea4b1b86216f14ef56e49440c33933f230" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/BurritoBandit28/Memory-Game 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" "+733b47ea4b1b86216f14ef56e49440c33933f230" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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" "+733b47ea4b1b86216f14ef56e49440c33933f230" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 1e6ca087343a9cc64bd39df2cb1ef26ce4a8af8b28777c4c2f1c5eb94554e8e7
[INFO] running `Command { std: "docker" "start" "-a" "1e6ca087343a9cc64bd39df2cb1ef26ce4a8af8b28777c4c2f1c5eb94554e8e7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1e6ca087343a9cc64bd39df2cb1ef26ce4a8af8b28777c4c2f1c5eb94554e8e7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1e6ca087343a9cc64bd39df2cb1ef26ce4a8af8b28777c4c2f1c5eb94554e8e7", kill_on_drop: false }`
[INFO] [stdout] 1e6ca087343a9cc64bd39df2cb1ef26ce4a8af8b28777c4c2f1c5eb94554e8e7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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 -Copt-level=3" "-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+733b47ea4b1b86216f14ef56e49440c33933f230" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 778462a114896e91afc915c7eaf3df574e2b6d96c6dd4a2b75cb90d2f347fde0
[INFO] running `Command { std: "docker" "start" "-a" "778462a114896e91afc915c7eaf3df574e2b6d96c6dd4a2b75cb90d2f347fde0", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.95
[INFO] [stderr]    Compiling unicode-ident v1.0.18
[INFO] [stderr]    Compiling libc v0.2.172
[INFO] [stderr]    Compiling serde v1.0.219
[INFO] [stderr]    Compiling arrayvec v0.7.6
[INFO] [stderr]    Compiling zerocopy v0.8.25
[INFO] [stderr]    Compiling simd-adler32 v0.3.7
[INFO] [stderr]    Compiling rayon-core v1.12.1
[INFO] [stderr]    Compiling bytemuck v1.23.1
[INFO] [stderr]    Compiling anyhow v1.0.98
[INFO] [stderr]    Compiling memchr v2.7.4
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling adler2 v2.0.0
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling alsa-sys v0.3.1
[INFO] [stderr]    Compiling miniz_oxide v0.8.8
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling built v0.7.7
[INFO] [stderr]    Compiling version-compare v0.1.1
[INFO] [stderr]    Compiling crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling lock_api v0.4.13
[INFO] [stderr]    Compiling crc32fast v1.4.2
[INFO] [stderr]    Compiling encoding_rs v0.8.35
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling parking_lot_core v0.9.11
[INFO] [stderr]    Compiling flate2 v1.1.2
[INFO] [stderr]    Compiling itertools v0.12.1
[INFO] [stderr]    Compiling sdl2-sys v0.36.0
[INFO] [stderr]    Compiling hashbrown v0.15.4
[INFO] [stderr]    Compiling bitstream-io v2.6.0
[INFO] [stderr]    Compiling noop_proc_macro v0.3.0
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling rayon v1.10.0
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling new_debug_unreachable v1.0.6
[INFO] [stderr]    Compiling syn v2.0.101
[INFO] [stderr]    Compiling rav1e v0.7.1
[INFO] [stderr]    Compiling quick-error v2.0.1
[INFO] [stderr]    Compiling cpal v0.15.3
[INFO] [stderr]    Compiling weezl v0.1.10
[INFO] [stderr]    Compiling imgref v1.11.0
[INFO] [stderr]    Compiling destructure_traitobject v0.2.0
[INFO] [stderr]    Compiling num-bigint v0.4.6
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]    Compiling getrandom v0.2.16
[INFO] [stderr]    Compiling rand_core v0.9.3
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling bitflags v2.9.1
[INFO] [stderr]    Compiling serde_json v1.0.140
[INFO] [stderr]    Compiling ogg v0.8.0
[INFO] [stderr]    Compiling loop9 v0.1.5
[INFO] [stderr]    Compiling unsafe-any-ors v1.0.0
[INFO] [stderr]    Compiling alsa v0.9.1
[INFO] [stderr]    Compiling indexmap v2.9.0
[INFO] [stderr]    Compiling tinyvec v1.9.0
[INFO] [stderr]    Compiling ordered-float v2.10.1
[INFO] [stderr]    Compiling avif-serialize v0.8.3
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling zune-inflate v0.2.54
[INFO] [stderr]    Compiling fdeflate v0.3.7
[INFO] [stderr]    Compiling half v2.6.0
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling lebe v0.5.2
[INFO] [stderr]    Compiling jpeg-decoder v0.3.1
[INFO] [stderr]    Compiling zune-core v0.4.12
[INFO] [stderr]    Compiling num-rational v0.4.2
[INFO] [stderr]    Compiling color_quant v1.1.0
[INFO] [stderr]    Compiling unsafe-libyaml v0.2.11
[INFO] [stderr]    Compiling rgb v0.8.50
[INFO] [stderr]    Compiling iana-time-zone v0.1.63
[INFO] [stderr]    Compiling dasp_sample v0.11.0
[INFO] [stderr]    Compiling maybe-rayon v0.1.1
[INFO] [stderr]    Compiling simd_helpers v0.1.0
[INFO] [stderr]    Compiling byteorder-lite v0.1.0
[INFO] [stderr]    Compiling sdl2 v0.36.0
[INFO] [stderr]    Compiling bit_field v0.10.2
[INFO] [stderr]    Compiling tiff v0.9.1
[INFO] [stderr]    Compiling exr v1.73.0
[INFO] [stderr]    Compiling image-webp v0.2.2
[INFO] [stderr]    Compiling chrono v0.4.41
[INFO] [stderr]    Compiling zune-jpeg v0.4.17
[INFO] [stderr]    Compiling gif v0.13.1
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling rand v0.9.1
[INFO] [stderr]    Compiling lewton v0.10.2
[INFO] [stderr]    Compiling png v0.17.16
[INFO] [stderr]    Compiling parking_lot v0.12.4
[INFO] [stderr]    Compiling typemap-ors v1.0.0
[INFO] [stderr]    Compiling thread-id v4.2.2
[INFO] [stderr]    Compiling num-iter v0.1.45
[INFO] [stderr]    Compiling num-complex v0.4.6
[INFO] [stderr]    Compiling qoi v0.4.1
[INFO] [stderr]    Compiling hound v3.5.1
[INFO] [stderr]    Compiling claxon v0.4.3
[INFO] [stderr]    Compiling humantime v2.2.0
[INFO] [stderr]    Compiling log-mdc v0.1.0
[INFO] [stderr]    Compiling arc-swap v1.7.1
[INFO] [stderr]    Compiling num v0.4.3
[INFO] [stderr]    Compiling gjson v0.8.1
[INFO] [stderr]    Compiling derivative v2.2.0
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling equator-macro v0.4.2
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling profiling-procmacros v1.0.16
[INFO] [stderr]    Compiling num-derive v0.4.2
[INFO] [stderr]    Compiling arg_enum_proc_macro v0.3.4
[INFO] [stderr]    Compiling uuid-macro-internal v1.17.0
[INFO] [stderr]    Compiling uuid v1.17.0
[INFO] [stderr]    Compiling profiling v1.0.16
[INFO] [stderr]    Compiling equator v0.4.2
[INFO] [stderr]    Compiling aligned-vec v0.6.4
[INFO] [stderr]    Compiling v_frame v0.3.9
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling log v0.4.27
[INFO] [stderr]    Compiling serde-value v0.7.0
[INFO] [stderr]    Compiling serde_yaml v0.9.34+deprecated
[INFO] [stderr]    Compiling symphonia-core v0.5.4
[INFO] [stderr]    Compiling av1-grain v0.2.4
[INFO] [stderr]    Compiling symphonia-metadata v0.5.4
[INFO] [stderr]    Compiling log4rs v1.3.0
[INFO] [stderr]    Compiling symphonia-bundle-mp3 v0.5.4
[INFO] [stderr]    Compiling symphonia v0.5.4
[INFO] [stderr]    Compiling rodio v0.20.1
[INFO] [stderr]    Compiling ravif v0.11.12
[INFO] [stderr]    Compiling image v0.25.6
[INFO] [stderr]    Compiling Memory-Game v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::cmp::PartialEq`
[INFO] [stdout]  --> src/entities/card_entity.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: `log::info`
[INFO] [stdout]  --> src/entities/card_entity.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use log::info;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::render::Texture`
[INFO] [stdout]  --> src/entities/card_entity.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use sdl2::render::Texture;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Entity`
[INFO] [stdout]  --> src/entities.rs:5:21
[INFO] [stdout]   |
[INFO] [stdout] 5 | 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::game::Game`
[INFO] [stdout]  --> src/entity.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | 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: `std::thread::sleep`
[INFO] [stdout]  --> src/game.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::thread::sleep;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/game.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `chrono::Month`
[INFO] [stdout]  --> src/game.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use chrono::Month;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Decoder`, `OutputStreamHandle`, `OutputStream`, and `source::Source`
[INFO] [stdout]   --> src/game.rs:10:13
[INFO] [stdout]    |
[INFO] [stdout] 10 | use rodio::{Decoder, OutputStream, source::Source, OutputStreamHandle};
[INFO] [stdout]    |             ^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `num::bigint::U32Digits`
[INFO] [stdout]   --> src/game.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use num::bigint::U32Digits;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::keyboard::Keycode::C`
[INFO] [stdout]   --> src/game.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use sdl2::keyboard::Keycode::C;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TileGraph`
[INFO] [stdout]   --> src/game.rs:21:27
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::level::{Level, TileGraph};
[INFO] [stdout]    |                           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `entities` and `sound`
[INFO] [stdout]   --> src/game.rs:22:13
[INFO] [stdout]    |
[INFO] [stdout] 22 | use crate::{entities, render, sound};
[INFO] [stdout]    |             ^^^^^^^^          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::game::Turn::Player2`
[INFO] [stdout]   --> src/game.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use crate::game::Turn::Player2;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TileSize`
[INFO] [stdout]   --> src/game.rs:30:25
[INFO] [stdout]    |
[INFO] [stdout] 30 | use crate::tile::{Tile, TileSize};
[INFO] [stdout]    |                         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Alignment`
[INFO] [stdout]   --> src/game.rs:32:21
[INFO] [stdout]    |
[INFO] [stdout] 32 | use crate::widget::{Alignment, Widget};
[INFO] [stdout]    |                     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::widgets::play_widget::PlayWidget`
[INFO] [stdout]   --> src/game.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | use crate::widgets::play_widget::PlayWidget;
[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: 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/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: `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: `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: `std::thread::current`
[INFO] [stdout]  --> src/widgets/player_widget.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::thread::current;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/widgets/play_again_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_again_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: `std::collections::HashMap`
[INFO] [stdout]  --> src/widgets/end_screen_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/end_screen_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/end_screen_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/end_screen_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: `std::collections::HashMap`
[INFO] [stdout]  --> src/widgets/crown_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/crown_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::screen::Screen`
[INFO] [stdout]  --> src/widgets/crown_widget.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::screen::Screen;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::screens::hud_screen::HudScreen`
[INFO] [stdout]  --> src/widgets/crown_widget.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::screens::hud_screen::HudScreen;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::widget::Widget`
[INFO] [stdout]   --> src/widgets.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::widget::Widget;
[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::play_widget::PlayWidget`
[INFO] [stdout]   --> src/screens/hud_screen.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: `crate::widgets::score_widget::ScoreWidget`
[INFO] [stdout]   --> src/screens/hud_screen.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::widgets::score_widget::ScoreWidget;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::screen::Screen`
[INFO] [stdout]  --> src/screens.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | 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::collections::HashMap`
[INFO] [stdout]  --> src/sound.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Mutex`
[INFO] [stdout]  --> src/sound.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::Mutex;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `once_cell::sync::OnceCell`
[INFO] [stdout]  --> src/sound.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use once_cell::sync::OnceCell;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rodio::cpal::Stream`
[INFO] [stdout]  --> src/sound.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use rodio::cpal::Stream;
[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 import: `crate::screens::main_menu_screen`
[INFO] [stdout]   --> src/main.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | 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:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | use crate::entity::Entity;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `num::clamp`
[INFO] [stdout]   --> src/main.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | use num::clamp;
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::event::Event`
[INFO] [stdout]   --> src/main.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | use sdl2::event::Event;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::keyboard::Keycode`
[INFO] [stdout]   --> src/main.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | use sdl2::keyboard::Keycode;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gjson::Value`
[INFO] [stdout]   --> src/main.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | use gjson::Value;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::event::Event::KeyDown`
[INFO] [stdout]   --> src/main.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 | use sdl2::event::Event::KeyDown;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `CardEntity`
[INFO] [stdout]   --> src/main.rs:40:42
[INFO] [stdout]    |
[INFO] [stdout] 40 | use crate::entities::card_entity::{Card, CardEntity};
[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 doc comment
[INFO] [stdout]    --> src/main.rs:374:5
[INFO] [stdout]     |
[INFO] [stdout] 374 | /     /// Delta refers to the time taken between showing two frames. This value is often used for physics related operations, as this allow...
[INFO] [stdout] 375 | |     /// You can see that happening in [`Entity::physics`]
[INFO] [stdout]     | |_________________________________________________________^
[INFO] [stdout] 376 |       // initiate delta
[INFO] [stdout] 377 |       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]     = note: `#[warn(unused_doc_comments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `widget::Widget`
[INFO] [stdout]   --> src/main.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 39 | use widget::Widget;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Widget`
[INFO] [stdout]   --> src/game.rs:32:32
[INFO] [stdout]    |
[INFO] [stdout] 32 | use crate::widget::{Alignment, Widget};
[INFO] [stdout]    |                                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::entity::Entity`
[INFO] [stdout]  --> src/widgets/player_widget.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::entity::Entity;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[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]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `amount`
[INFO] [stdout]   --> src/entities/card_entity.rs:52:33
[INFO] [stdout]    |
[INFO] [stdout] 52 |     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: `delta`
[INFO] [stdout]   --> src/entities/card_entity.rs:60:24
[INFO] [stdout]    |
[INFO] [stdout] 60 |     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/card_entity.rs:65:13
[INFO] [stdout]    |
[INFO] [stdout] 65 |         let mut player : &mut dyn Entity;
[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: `rl`
[INFO] [stdout]   --> src/entity.rs:41:41
[INFO] [stdout]    |
[INFO] [stdout] 41 |     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:46:24
[INFO] [stdout]    |
[INFO] [stdout] 46 |     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:107:34
[INFO] [stdout]     |
[INFO] [stdout] 107 |     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: unused variable: `dims`
[INFO] [stdout]    --> src/game.rs:107:70
[INFO] [stdout]     |
[INFO] [stdout] 107 |     pub fn cycle(&mut self, delta : f32, mousex : u32, mousey : u32, dims : (u32, u32)) {
[INFO] [stdout]     |                                                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_dims`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/game.rs:239:13
[INFO] [stdout]     |
[INFO] [stdout] 239 |         let mut card_asset_base = AssetData {
[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:257:21
[INFO] [stdout]     |
[INFO] [stdout] 257 |                 let mut card = CardEntity::create(None, {
[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:298:17
[INFO] [stdout]     |
[INFO] [stdout] 298 |             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:306:21
[INFO] [stdout]     |
[INFO] [stdout] 306 |                 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:129:57
[INFO] [stdout]     |
[INFO] [stdout] 129 | 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:132:9
[INFO] [stdout]     |
[INFO] [stdout] 132 |     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: `tiles`
[INFO] [stdout]   --> src/level.rs:54:36
[INFO] [stdout]    |
[INFO] [stdout] 54 |     pub fn create_scene_background(tiles : &HashMap<String, Tile>) -> Self {
[INFO] [stdout]    |                                    ^^^^^ help: if this is intentional, prefix it with an underscore: `_tiles`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/level.rs:59:13
[INFO] [stdout]    |
[INFO] [stdout] 59 |         let mut level = Self{
[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:53
[INFO] [stdout]    |
[INFO] [stdout] 37 |     fn cycle(&mut self, mousex : u32, mousey : 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();
[INFO] [stdout]    |                     ----^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dims`
[INFO] [stdout]   --> src/screen.rs:61:102
[INFO] [stdout]    |
[INFO] [stdout] 61 |     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: `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: `ass`
[INFO] [stdout]   --> src/widgets/player_widget.rs:88:34
[INFO] [stdout]    |
[INFO] [stdout] 88 |     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: unused variable: `scale_offset`
[INFO] [stdout]   --> src/main.rs:83:9
[INFO] [stdout]    |
[INFO] [stdout] 83 |     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:113:9
[INFO] [stdout]     |
[INFO] [stdout] 113 |     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:125:13
[INFO] [stdout]     |
[INFO] [stdout] 125 |         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:162:13
[INFO] [stdout]     |
[INFO] [stdout] 162 |         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:264:25
[INFO] [stdout]     |
[INFO] [stdout] 264 |                     let mut collison_box : Option<(u32,u32)>;
[INFO] [stdout]     |                         ----^^^^^^^^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `uuid`, `game`, `health`, and `index` 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] 15 |     health : f32,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 16 |     resource_location: ResourceLocation,
[INFO] [stdout] 17 |     index : usize,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `uuid`, `health`, `index`, and `turn` are never read
[INFO] [stdout]   --> src/entities/card_entity.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct CardEntity {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 21 |     uuid : Uuid,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 22 |     game : Option<*mut Game>,
[INFO] [stdout] 23 |     health : f32,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 24 |     resource_location: ResourceLocation,
[INFO] [stdout] 25 |     index : usize,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     turn: Turn,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_resource_location` is never used
[INFO] [stdout]    --> src/entities/card_entity.rs:234:12
[INFO] [stdout]     |
[INFO] [stdout] 222 | impl Card {
[INFO] [stdout]     | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 234 |     pub fn get_resource_location(&self) -> ResourceLocation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_health`, `change_health`, `set_resource_location`, `get_index`, `set_velocity`, and `set_asset_data` are never used
[INFO] [stdout]    --> src/entity.rs:30:8
[INFO] [stdout]     |
[INFO] [stdout] 13  | pub trait Entity {
[INFO] [stdout]     |           ------ methods in this trait
[INFO] [stdout] ...
[INFO] [stdout] 30  |     fn get_health(&mut self) -> f32;
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39  |     fn change_health(&mut self, amount : f32);
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 40  |
[INFO] [stdout] 41  |     fn set_resource_location(&mut self, rl : ResourceLocation) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53  |     fn get_index(&self) -> usize;
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61  |     fn set_velocity(&mut self, velocity : (f32, f32));
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     fn set_asset_data(&mut self, ass : AssetData) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clone` is never used
[INFO] [stdout]   --> src/game.rs:71:19
[INFO] [stdout]    |
[INFO] [stdout] 70 | impl Turn {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] 71 |     pub(crate) fn clone(&self) -> Turn {
[INFO] [stdout]    |                   ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_turn` is never used
[INFO] [stdout]    --> src/game.rs:396:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | impl Game {
[INFO] [stdout]     | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 396 |     pub fn get_turn(&mut self) -> Turn {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_x`, `get_y`, `set_x`, and `set_y` are never used
[INFO] [stdout]   --> src/render.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | impl Dimensions {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] 52 |     pub fn get_x(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn get_y(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn set_x(&mut self, x : u32) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn set_y(&mut self, y : u32) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mul_vec` is never used
[INFO] [stdout]   --> src/utils.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn mul_vec(vec : &mut (f32, f32), val : f32) {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `normalise_vec` is never used
[INFO] [stdout]   --> src/utils.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn normalise_vec(vec : (f32, f32)) -> (f32,f32) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_dist` is never used
[INFO] [stdout]    --> src/utils.rs:126:8
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub fn get_dist(a : &(f32, f32), b : &(f32, f32)) -> u32 {
[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: field `connections` is never read
[INFO] [stdout]   --> src/level.rs:79:5
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub struct TileGraph {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] 78 |     nodes : HashMap<(i32, i32), Tile>,
[INFO] [stdout] 79 |     connections : HashMap<(i32,i32), Vec<((i32,i32), u32)>>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `append`, `append_from_wolrd_space`, `get_tile`, `build_connections`, and `path_to` are never used
[INFO] [stdout]    --> src/level.rs:86:12
[INFO] [stdout]     |
[INFO] [stdout] 83  | impl TileGraph {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 86  |     pub fn append(&mut self, tile : Tile,value : (i32, i32), connections : Vec<((i32, i32), u32)>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn append_from_wolrd_space(&mut self, tile : Tile,value : (i32, i32), connections : Vec<((i32, i32), u32)>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn get_tile(&mut self, x : i32, y : i32) -> Tile {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn build_connections(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 192 |     pub fn path_to(&mut self, x : i32, y : i32, tx : i32, ty : i32) -> Vec<(i32, i32)> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `create_none`, `create_nav`, `get_name`, `get_resource_location`, `get_size`, and `get_type` are never used
[INFO] [stdout]    --> src/tile.rs:177:12
[INFO] [stdout]     |
[INFO] [stdout] 143 | impl Tile {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn create_none(size : TileSize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 200 |     pub fn create_nav() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     pub fn get_name(&mut self) -> String {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     pub fn get_resource_location(&mut self) -> ResourceLocation {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 248 |     pub fn get_size(self) -> TileSize {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn get_type(&mut self) -> TileType {
[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: struct `EnumWidget` is never constructed
[INFO] [stdout]   --> src/widgets/enum_widget.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct EnumWidget<T : WidgetEnum> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `get_value` and `create` are 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]    | ---------------------------------------------------- associated items in this implementation
[INFO] [stdout] 22 |
[INFO] [stdout] 23 |     fn get_value(&mut self) -> T {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn create(alignment: Alignment, x: i32, y: i32, game: *mut Game, enumt : T) -> Box<dyn Widget> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `WidgetEnum` is never used
[INFO] [stdout]    --> src/widgets/enum_widget.rs:120:11
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub trait WidgetEnum {
[INFO] [stdout]     |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ErrWidget` is never constructed
[INFO] [stdout]   --> src/widgets/err_widget.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct ErrWidget {
[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: struct `ScoreWidget` is never constructed
[INFO] [stdout]   --> src/widgets/score_widget.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct ScoreWidget {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `create` is never used
[INFO] [stdout]   --> src/widgets/score_widget.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl ScoreWidget {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 23 |     pub fn create(alignment: Alignment, x : i32, y : i32, game : *mut Game) -> Box<Self>
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_screen_coordinates`, `set_asset_data`, `get_resource_location`, `set_allignment`, `get_game`, and `return_enum_int` 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] 63 |     fn set_asset_data(&mut self, ass : AssetData);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     fn get_resource_location(&mut self) -> ResourceLocation;
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     fn set_allignment(&mut self, alignment: Alignment);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     fn get_game(&mut self);
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 76 |
[INFO] [stdout] 77 |     fn return_enum_int(&mut self) -> Option<usize> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `TOP`, `BOTTOM`, `CENTRE`, and `NONE` are never constructed
[INFO] [stdout]   --> src/widget.rs:95:5
[INFO] [stdout]    |
[INFO] [stdout] 92 | pub enum Alignment {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 95 |     TOP,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 96 |     BOTTOM,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 97 |     CENTRE,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 98 |     NONE
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `parse` is never used
[INFO] [stdout]    --> src/widget.rs:102:12
[INFO] [stdout]     |
[INFO] [stdout] 101 | impl Alignment {
[INFO] [stdout]     | -------------- associated function in this implementation
[INFO] [stdout] 102 |     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:15:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct Sound {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] 14 |     pub path : String,
[INFO] [stdout] 15 |     pub resource_location : ResourceLocation
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused borrow that must be used
[INFO] [stdout]    --> src/main.rs:110:5
[INFO] [stdout]     |
[INFO] [stdout] 110 |     &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] 110 |     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/game.rs:233:9
[INFO] [stdout]     |
[INFO] [stdout] 233 |         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] 233 |         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:  "cc" "-m64" "/tmp/rustccOdpZ0/symbols.o" "<17 object files omitted>" "-Wl,--as-needed" "-Wl,-Bstatic" "/opt/rustwide/target/debug/deps/{libwalkdir-9b6c1111eeef0447.rlib,libsame_file-1637cad8c77ba63a.rlib,libgjson-ebbe995c221b2cc9.rlib,libimage-53b2ccb058804dd8.rlib,libimage_webp-b5da2bed8721583c.rlib,libqoi-59994bc6aab6aaa6.rlib,libpng-05ba0e371b0aa464.rlib,libfdeflate-125a0e1385d2b20c.rlib,libexr-8665eddd66063a1c.rlib,libzune_inflate-b2839dde349772a4.rlib,libbit_field-fe72518975dee8bc.rlib,liblebe-71c24b93b24895e5.rlib,libhalf-2dfe6bbbdc5b8333.rlib,libzune_jpeg-41a847308be24460.rlib,libzune_core-0d8f963c9e52c9b9.rlib,libgif-735b3683c07307ef.rlib,libcolor_quant-d00f6d1eead4a5d9.rlib,libbyteorder_lite-d214ffc99833f772.rlib,libravif-1940e24f0d6e2666.rlib,libloop9-505be38dda2ea3e1.rlib,libavif_serialize-d6da3aabafa367ac.rlib,libquick_error-17816055036082a6.rlib,librgb-a495f1ba76173243.rlib,librav1e-4a73e48c13458e02.rlib,libprofiling-4898afd9ef80a5ae.rlib,libav1_grain-63327863d3450207.rlib,libnom-f4deedd174d035b7.rlib,libdebug_unreachable-6e6a399b7b7163fd.rlib,libmaybe_rayon-b5d30c776bc91c1d.rlib,librayon-a85cf8b99606c35f.rlib,librayon_core-63a82e8d5f3c3599.rlib,libcrossbeam_deque-515d8498879230fc.rlib,libcrossbeam_epoch-b7db8a5edb82b101.rlib,libcrossbeam_utils-64542fc3947a68e3.rlib,libv_frame-2261e22218107bfe.rlib,libaligned_vec-83f9337b24cd2994.rlib,libequator-303d1dac82c47ddc.rlib,libbitstream_io-d0d2e997239d6b6a.rlib,libitertools-6282a7f6e3d158c5.rlib,libeither-020ae763b61097bf.rlib,libimgref-4a2ab3b673db586e.rlib,libtiff-3abdd518a15820b9.rlib,libflate2-44e9d5bd35da07bb.rlib,libminiz_oxide-9a580fdbb845caa0.rlib,libsimd_adler32-4356bac6c6cd5a93.rlib,libcrc32fast-eb05d000a72119f1.rlib,libweezl-8f02e409d9145e80.rlib,libjpeg_decoder-ff889b8aa0d5d82f.rlib,liblog4rs-a1f3de32e7f069cf.rlib,liblog_mdc-8c51fbb2fcc7df1b.rlib,libserde_json-e062da9d403bf567.rlib,libmemchr-929c69c48e62eaba.rlib,libthread_id-81f7f512bf6c9da0.rlib,libhumantime-de150a9495868e84.rlib,libserde_yaml-fa577abd15eb9447.rlib,libryu-f0a9e3af1c01c3d4.rlib,libitoa-a56f380555f0f52c.rlib,libindexmap-015ced3ba1a26e8c.rlib,libequivalent-75c815eea0f2c106.rlib,libhashbrown-82375a278d85d57b.rlib,libunsafe_libyaml-114948c044882a44.rlib,libtypemap_ors-ad8157763ef13b96.rlib,libunsafe_any_ors-8cc0d9e022f823a1.rlib,libdestructure_traitobject-53f0c62626717758.rlib,libthiserror-d01b53dc1a8b7bfe.rlib,libanyhow-07471542712fc6e3.rlib,libparking_lot-f6b097c10a523269.rlib,libparking_lot_core-9a05047188c76ba7.rlib,libsmallvec-35d51144cc506ce1.rlib,liblock_api-2f9d6661b8455048.rlib,libscopeguard-1b6afc93d27f72f6.rlib,libserde_value-47afe2d5cc7b7991.rlib,libordered_float-72e23304046ec00f.rlib,libfnv-cad931e6de93593b.rlib,libarc_swap-d36cb63d7fdec1ea.rlib,libonce_cell-3c6215c804b866be.rlib,librand-139017b817e4e822.rlib,librand_chacha-3464e4185b2732e3.rlib,librand_core-9ef41c82d26b0d33.rlib,libgetrandom-b480c7ef5438ee64.rlib,libnum-bb7e02b96471e4ea.rlib,libnum_iter-c887df77c8aedacc.rlib,libnum_rational-989d4e8b3c601d77.rlib,libnum_complex-4ce6524415b95863.rlib,libnum_bigint-dad715957d233a2a.rlib,libnum_integer-df10949b0e2a5665.rlib,librodio-ba186f6812f82fce.rlib,libhound-dda9b6c6955827b3.rlib,liblewton-540fb9c4f640f9d8.rlib,libogg-4317fe9bf1bcd477.rlib,libtinyvec-bdb8c58d5a6ba9d5.rlib,libtinyvec_macros-014e15edf4dbc647.rlib,libbyteorder-6bb12dffd5e1b12b.rlib,libclaxon-ac90c395bfcbf55d.rlib,libsymphonia-e3496fbc36d83537.rlib,libsymphonia_metadata-9ed26770a65ea817.rlib,libencoding_rs-3babb2613aed14fd.rlib,libsymphonia_bundle_mp3-266a9ed7172fb8c8.rlib,libsymphonia_core-073de98136d3925e.rlib,libbytemuck-d10901ffc1c96cb7.rlib,libarrayvec-6787795dad2022bb.rlib,libcpal-34d1db9d31fc9636.rlib,libdasp_sample-eefbde2551787723.rlib,libalsa-5e88d2ffb4abbb5d.rlib,libbitflags-89af23c6e1928f42.rlib,libalsa_sys-bffb51fb2887cc09.rlib,libchrono-046aa37868acfe62.rlib,libiana_time_zone-5c1d38771a83ad46.rlib,libnum_traits-c14b39ef6b39f25c.rlib,libsdl2-7fbb59d3d91dbbbc.rlib,libsdl2_sys-a49d24302fa7a009.rlib,libbitflags-ed512472f018a953.rlib,liblazy_static-5f41077b1fb4f2c7.rlib,liblog-1ced9fbd6f584bef.rlib,libserde-97321af5577c9cc9.rlib,libuuid-586db26161a685b1.rlib,librand-954a44fb9519c1ad.rlib,librand_chacha-8b3e37bac4483974.rlib,libppv_lite86-a38e5f93de2c2a94.rlib,libzerocopy-dacb213d9206f3e1.rlib,librand_core-5d11d830bb429af2.rlib,libgetrandom-b942a508f04bc1d4.rlib,liblibc-5d4998790aa1a97d.rlib,libcfg_if-238a855292fb6d2b.rlib}.rlib" "<sysroot>/lib/rustlib/x86_64-unknown-linux-gnu/lib/{libstd-*,libpanic_unwind-*,libobject-*,libmemchr-*,libaddr2line-*,libgimli-*,librustc_demangle-*,libstd_detect-*,libhashbrown-*,librustc_std_workspace_alloc-*,libminiz_oxide-*,libadler2-*,libunwind-*,libcfg_if-*,liblibc-*,librustc_std_workspace_core-*,liballoc-*,libcore-*,libcompiler_builtins-*}.rlib" "-Wl,-Bdynamic" "-lasound" "-lSDL2" "-lSDL2_image" "-lgcc_s" "-lutil" "-lrt" "-lpthread" "-lm" "-ldl" "-lc" "-L" "/tmp/rustccOdpZ0/raw-dylibs" "-B<sysroot>/lib/rustlib/x86_64-unknown-linux-gnu/bin/gcc-ld" "-fuse-ld=lld" "-Wl,-znostart-stop-gc" "-Wl,--eh-frame-hdr" "-Wl,-z,noexecstack" "-L" "/usr/lib/x86_64-linux-gnu" "-L" "<sysroot>/lib/rustlib/x86_64-unknown-linux-gnu/lib" "-o" "/opt/rustwide/target/debug/deps/Memory_Game-cb78fa07521f4809" "-Wl,--gc-sections" "-pie" "-Wl,-z,relro,-z,now" "-Wl,-O1" "-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 `Memory-Game` (bin "Memory-Game") due to 1 previous error; 159 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "778462a114896e91afc915c7eaf3df574e2b6d96c6dd4a2b75cb90d2f347fde0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "778462a114896e91afc915c7eaf3df574e2b6d96c6dd4a2b75cb90d2f347fde0", kill_on_drop: false }`
[INFO] [stdout] 778462a114896e91afc915c7eaf3df574e2b6d96c6dd4a2b75cb90d2f347fde0
