[INFO] cloning repository https://github.com/Elekrisk/fg-sdl2
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Elekrisk/fg-sdl2" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FElekrisk%2Ffg-sdl2", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FElekrisk%2Ffg-sdl2'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 0cf3ae388557c75442db79671b417b3e3d390b4f
[INFO] checking Elekrisk/fg-sdl2 against try#2b39fe756f52bc2825bf5b2bfc385cab922dae10 for pr-143011
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FElekrisk%2Ffg-sdl2" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-5-tc2/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/Elekrisk/fg-sdl2
[INFO] finished tweaking git repo https://github.com/Elekrisk/fg-sdl2
[INFO] tweaked toml for git repo https://github.com/Elekrisk/fg-sdl2 written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Elekrisk/fg-sdl2 on toolchain 2b39fe756f52bc2825bf5b2bfc385cab922dae10
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+2b39fe756f52bc2825bf5b2bfc385cab922dae10" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Elekrisk/fg-sdl2 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" "+2b39fe756f52bc2825bf5b2bfc385cab922dae10" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+2b39fe756f52bc2825bf5b2bfc385cab922dae10" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 2e36dc98e81405b77d6a23e486689427b2667116ed69cfab2510c5f841ad7222
[INFO] running `Command { std: "docker" "start" "-a" "2e36dc98e81405b77d6a23e486689427b2667116ed69cfab2510c5f841ad7222", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2e36dc98e81405b77d6a23e486689427b2667116ed69cfab2510c5f841ad7222", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2e36dc98e81405b77d6a23e486689427b2667116ed69cfab2510c5f841ad7222", kill_on_drop: false }`
[INFO] [stdout] 2e36dc98e81405b77d6a23e486689427b2667116ed69cfab2510c5f841ad7222
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+2b39fe756f52bc2825bf5b2bfc385cab922dae10" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 898686d1a9f06c67828f8c3014954e6d9241bee9f37685e7cca99fb9fcb4a2db
[INFO] running `Command { std: "docker" "start" "-a" "898686d1a9f06c67828f8c3014954e6d9241bee9f37685e7cca99fb9fcb4a2db", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.63
[INFO] [stderr]    Compiling unicode-ident v1.0.10
[INFO] [stderr]    Compiling quote v1.0.29
[INFO] [stderr]    Compiling libc v0.2.147
[INFO] [stderr]     Checking simd-adler32 v0.3.5
[INFO] [stderr]    Compiling crossbeam-utils v0.8.16
[INFO] [stderr]    Compiling memoffset v0.9.0
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.15
[INFO] [stderr]    Compiling lock_api v0.4.10
[INFO] [stderr]    Compiling memchr v2.5.0
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling rayon-core v1.11.0
[INFO] [stderr]    Compiling rustix v0.38.3
[INFO] [stderr]    Compiling cc v1.0.79
[INFO] [stderr]     Checking gimli v0.27.3
[INFO] [stderr]    Compiling serde v1.0.168
[INFO] [stderr]     Checking linux-raw-sys v0.4.3
[INFO] [stderr]     Checking miniz_oxide v0.7.1
[INFO] [stderr]    Compiling failure_derive v0.1.8
[INFO] [stderr]    Compiling version-compare v0.1.1
[INFO] [stderr]     Checking bitflags v2.3.3
[INFO] [stderr]     Checking smallvec v1.11.0
[INFO] [stderr]    Compiling unicode-xid v0.2.4
[INFO] [stderr]    Compiling futures-core v0.3.28
[INFO] [stderr]    Compiling sdl2-sys v0.35.2
[INFO] [stderr]    Compiling num-traits v0.2.15
[INFO] [stderr]     Checking utf8parse v0.2.1
[INFO] [stderr]    Compiling parking_lot_core v0.8.6
[INFO] [stderr]     Checking either v1.8.1
[INFO] [stderr]     Checking rustc-demangle v0.1.23
[INFO] [stderr]     Checking anstyle-parse v0.2.1
[INFO] [stderr]    Compiling num-integer v0.1.45
[INFO] [stderr]     Checking instant v0.1.12
[INFO] [stderr]     Checking futures-sink v0.3.28
[INFO] [stderr]     Checking ppv-lite86 v0.2.17
[INFO] [stderr]     Checking colorchoice v1.0.0
[INFO] [stderr]     Checking crossbeam-channel v0.5.8
[INFO] [stderr]     Checking spin v0.9.8
[INFO] [stderr]     Checking anstyle v1.0.1
[INFO] [stderr]     Checking anstyle-query v1.0.0
[INFO] [stderr]    Compiling num-rational v0.4.1
[INFO] [stderr]     Checking flate2 v1.0.26
[INFO] [stderr]     Checking fdeflate v0.3.0
[INFO] [stderr]     Checking zune-inflate v0.2.54
[INFO] [stderr]     Checking object v0.31.1
[INFO] [stderr]     Checking half v2.2.1
[INFO] [stderr]    Compiling sdl2 v0.35.2
[INFO] [stderr]    Compiling serde_json v1.0.100
[INFO] [stderr]     Checking bit_field v0.10.2
[INFO] [stderr]     Checking varinteger v1.0.6
[INFO] [stderr]    Compiling heck v0.4.1
[INFO] [stderr]     Checking strsim v0.10.0
[INFO] [stderr]     Checking clap_lex v0.5.0
[INFO] [stderr]     Checking gif v0.12.0
[INFO] [stderr]     Checking crossbeam-deque v0.8.3
[INFO] [stderr]     Checking png v0.17.9
[INFO] [stderr]     Checking ryu v1.0.14
[INFO] [stderr]     Checking itoa v1.0.8
[INFO] [stderr]     Checking once_cell v1.18.0
[INFO] [stderr]     Checking base64 v0.21.2
[INFO] [stderr]     Checking getrandom v0.2.10
[INFO] [stderr]     Checking num_cpus v1.16.0
[INFO] [stderr]     Checking is-terminal v0.4.9
[INFO] [stderr]     Checking parking_lot v0.11.2
[INFO] [stderr]    Compiling syn v2.0.23
[INFO] [stderr]    Compiling backtrace v0.3.68
[INFO] [stderr]     Checking nanorand v0.7.0
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking anstream v0.3.2
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking clap_builder v4.3.11
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking rayon v1.7.0
[INFO] [stderr]     Checking addr2line v0.20.0
[INFO] [stderr]    Compiling synstructure v0.12.6
[INFO] [stderr]     Checking jpeg-decoder v0.3.0
[INFO] [stderr]     Checking failure v0.1.8
[INFO] [stderr]     Checking bitfield-rle v0.2.0
[INFO] [stderr]     Checking tiff v0.8.1
[INFO] [stderr]    Compiling bytemuck_derive v1.4.1
[INFO] [stderr]    Compiling serde_derive v1.0.168
[INFO] [stderr]    Compiling pin-project-internal v1.1.2
[INFO] [stderr]    Compiling clap_derive v4.3.2
[INFO] [stderr]    Compiling macros v0.1.0 (/opt/rustwide/workdir/macros)
[INFO] [stdout] warning: unused import: `ToTokens`
[INFO] [stdout]  --> macros/src/lib.rs:2:20
[INFO] [stdout]   |
[INFO] [stdout] 2 | use quote::{quote, ToTokens};
[INFO] [stdout]   |                    ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PathArguments` and `Token`
[INFO] [stdout]  --> macros/src/lib.rs:3:49
[INFO] [stdout]   |
[INFO] [stdout] 3 | use syn::{parse_macro_input, DeriveInput, Path, PathArguments, Token};
[INFO] [stdout]   |                                                 ^^^^^^^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `delegate`
[INFO] [stdout]   --> macros/src/lib.rs:49:17
[INFO] [stdout]    |
[INFO] [stdout] 49 |             let delegate = variant.attrs.iter().find(|attr| attr.path().get_ident().is_some_and(|x| x == "delegate")).is_some();
[INFO] [stdout]    |                 ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_delegate`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking bytemuck v1.13.1
[INFO] [stderr]     Checking qoi v0.4.1
[INFO] [stderr]     Checking pin-project v1.1.2
[INFO] [stderr]     Checking flume v0.10.14
[INFO] [stderr]     Checking exr v1.7.0
[INFO] [stderr]     Checking clap v4.3.11
[INFO] [stderr]     Checking image v0.24.6
[INFO] [stderr]     Checking bincode v1.3.3
[INFO] [stderr]     Checking ggrs v0.9.4
[INFO] [stderr]     Checking fg-sdl2 v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `crate::asset_manager::AssetManager`
[INFO] [stdout]  --> src/app_context.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::asset_manager::AssetManager;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CharacterSpecificState` and `CharacterState`
[INFO] [stdout]   --> src/game/character/guy.rs:12:13
[INFO] [stdout]    |
[INFO] [stdout] 12 | use super::{CharacterSpecificState, CharacterState, IdleState, State};
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `fixed_point::FixedPoint`
[INFO] [stdout]  --> src/game/camera.rs:3:13
[INFO] [stdout]   |
[INFO] [stdout] 3 | use super::{fixed_point::FixedPoint, super::fvec2::FVec2};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::asset_manager::AssetManager`
[INFO] [stdout]  --> src/app_context.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::asset_manager::AssetManager;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Hash`, `IpAddr`, `hash_map::DefaultHasher`, and `marker::PhantomData`
[INFO] [stdout]   --> src/game.rs:10:19
[INFO] [stdout]    |
[INFO] [stdout] 10 |     collections::{hash_map::DefaultHasher, HashMap},
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     hash::{Hash, Hasher},
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 12 |     marker::PhantomData,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 13 |     net::{IpAddr, Ipv4Addr, SocketAddr, SocketAddrV4},
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary braces around function argument
[INFO] [stdout]     --> src/game.rs:1116:77
[INFO] [stdout]      |
[INFO] [stdout] 1116 | ...                   cell.save(frame, Some(self.state.clone()), Some({ 0 }))
[INFO] [stdout]      |                                                                       ^^ ^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_braces)]` on by default
[INFO] [stdout] help: remove these braces
[INFO] [stdout]      |
[INFO] [stdout] 1116 -                             cell.save(frame, Some(self.state.clone()), Some({ 0 }))
[INFO] [stdout] 1116 +                             cell.save(frame, Some(self.state.clone()), Some(0))
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CharacterSpecificState` and `CharacterState`
[INFO] [stdout]   --> src/game/character/guy.rs:12:13
[INFO] [stdout]    |
[INFO] [stdout] 12 | use super::{CharacterSpecificState, CharacterState, IdleState, State};
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, and `SocketAddr`
[INFO] [stdout]   --> src/main.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 |     net::{Ipv4Addr, SocketAddr, SocketAddrV4},
[INFO] [stdout]    |           ^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `asset_manager::AssetManager`
[INFO] [stdout]   --> src/main.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use asset_manager::AssetManager;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SessionBuilder`, `SessionState`, and `UdpNonBlockingSocket`
[INFO] [stdout]   --> src/main.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | use ggrs::{SessionBuilder, SessionState, UdpNonBlockingSocket};
[INFO] [stdout]    |            ^^^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `keyboard::Keycode`
[INFO] [stdout]   --> src/main.rs:24:26
[INFO] [stdout]    |
[INFO] [stdout] 24 | use sdl2::{event::Event, keyboard::Keycode, pixels::Color};
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `fixed_point::FixedPoint`
[INFO] [stdout]  --> src/game/camera.rs:3:13
[INFO] [stdout]   |
[INFO] [stdout] 3 | use super::{fixed_point::FixedPoint, super::fvec2::FVec2};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Hash`, `IpAddr`, `hash_map::DefaultHasher`, and `marker::PhantomData`
[INFO] [stdout]   --> src/game.rs:10:19
[INFO] [stdout]    |
[INFO] [stdout] 10 |     collections::{hash_map::DefaultHasher, HashMap},
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     hash::{Hash, Hasher},
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 12 |     marker::PhantomData,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 13 |     net::{IpAddr, Ipv4Addr, SocketAddr, SocketAddrV4},
[INFO] [stdout]    |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary braces around function argument
[INFO] [stdout]     --> src/game.rs:1116:77
[INFO] [stdout]      |
[INFO] [stdout] 1116 | ...                   cell.save(frame, Some(self.state.clone()), Some({ 0 }))
[INFO] [stdout]      |                                                                       ^^ ^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_braces)]` on by default
[INFO] [stdout] help: remove these braces
[INFO] [stdout]      |
[INFO] [stdout] 1116 -                             cell.save(frame, Some(self.state.clone()), Some({ 0 }))
[INFO] [stdout] 1116 +                             cell.save(frame, Some(self.state.clone()), Some(0))
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ipv4Addr`, `SocketAddrV4`, and `SocketAddr`
[INFO] [stdout]   --> src/main.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 |     net::{Ipv4Addr, SocketAddr, SocketAddrV4},
[INFO] [stdout]    |           ^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `asset_manager::AssetManager`
[INFO] [stdout]   --> src/main.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use asset_manager::AssetManager;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SessionBuilder`, `SessionState`, and `UdpNonBlockingSocket`
[INFO] [stdout]   --> src/main.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | use ggrs::{SessionBuilder, SessionState, UdpNonBlockingSocket};
[INFO] [stdout]    |            ^^^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `keyboard::Keycode`
[INFO] [stdout]   --> src/main.rs:24:26
[INFO] [stdout]    |
[INFO] [stdout] 24 | use sdl2::{event::Event, keyboard::Keycode, pixels::Color};
[INFO] [stdout]    |                          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: unconstrained opaque type
[INFO] [stdout]    --> src/game/input.rs:207:14
[INFO] [stdout]     |
[INFO] [stdout] 207 | type I<'a> = impl Iterator<Item = &'a InputEvent> + Clone;
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `I` must be used in combination with a concrete type within the same crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: unconstrained opaque type
[INFO] [stdout]    --> src/game/input.rs:207:14
[INFO] [stdout]     |
[INFO] [stdout] 207 | type I<'a> = impl Iterator<Item = &'a InputEvent> + Clone;
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `I` must be used in combination with a concrete type within the same crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/game/input.rs:200:19
[INFO] [stdout]     |
[INFO] [stdout] 200 |             iter: self.events.iter().rev(),
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^ expected opaque type, found `Rev<Iter<'_, InputEvent>>`
[INFO] [stdout] ...
[INFO] [stdout] 207 | type I<'a> = impl Iterator<Item = &'a InputEvent> + Clone;
[INFO] [stdout]     |              -------------------------------------------- the expected opaque type
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected opaque type `input::I<'_>`
[INFO] [stdout]                     found struct `Rev<std::slice::Iter<'_, InputEvent>>`
[INFO] [stdout] note: this item must have a `#[define_opaque(input::I)]` attribute to be able to define hidden types
[INFO] [stdout]    --> src/game/input.rs:198:12
[INFO] [stdout]     |
[INFO] [stdout] 198 |     pub fn iter(&self, allowed_diff: usize, current_frame: Frame) -> InputIter {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/game/input.rs:200:19
[INFO] [stdout]     |
[INFO] [stdout] 200 |             iter: self.events.iter().rev(),
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^ expected opaque type, found `Rev<Iter<'_, InputEvent>>`
[INFO] [stdout] ...
[INFO] [stdout] 207 | type I<'a> = impl Iterator<Item = &'a InputEvent> + Clone;
[INFO] [stdout]     |              -------------------------------------------- the expected opaque type
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected opaque type `input::I<'_>`
[INFO] [stdout]                     found struct `Rev<std::slice::Iter<'_, InputEvent>>`
[INFO] [stdout] note: this item must have a `#[define_opaque(input::I)]` attribute to be able to define hidden types
[INFO] [stdout]    --> src/game/input.rs:198:12
[INFO] [stdout]     |
[INFO] [stdout] 198 |     pub fn iter(&self, allowed_diff: usize, current_frame: Frame) -> InputIter {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Hasher`
[INFO] [stdout]   --> src/game.rs:11:18
[INFO] [stdout]    |
[INFO] [stdout] 11 |     hash::{Hash, Hasher},
[INFO] [stdout]    |                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Hasher`
[INFO] [stdout]   --> src/game.rs:11:18
[INFO] [stdout]    |
[INFO] [stdout] 11 |     hash::{Hash, Hasher},
[INFO] [stdout]    |                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/game/character/guy.rs:55:64
[INFO] [stdout]    |
[INFO] [stdout] 55 |             Normal::NeutralPunch => Some(Box::new(move |state, info| {
[INFO] [stdout]    |                                                                ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]    --> src/game/character.rs:244:36
[INFO] [stdout]     |
[INFO] [stdout] 244 |         Some(Box::new(move |state, info| {
[INFO] [stdout]     |                                    ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame`
[INFO] [stdout]    --> src/game/character.rs:264:9
[INFO] [stdout]     |
[INFO] [stdout] 264 |         frame: Frame,
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame`
[INFO] [stdout]    --> src/game/character.rs:291:9
[INFO] [stdout]     |
[INFO] [stdout] 291 |         frame: Frame,
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game/camera.rs:27:13
[INFO] [stdout]    |
[INFO] [stdout] 27 |         let mut q = q * self.scale;
[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: `info`
[INFO] [stdout]   --> src/game/character/guy.rs:55:64
[INFO] [stdout]    |
[INFO] [stdout] 55 |             Normal::NeutralPunch => Some(Box::new(move |state, info| {
[INFO] [stdout]    |                                                                ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]    --> src/game/character.rs:244:36
[INFO] [stdout]     |
[INFO] [stdout] 244 |         Some(Box::new(move |state, info| {
[INFO] [stdout]     |                                    ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame`
[INFO] [stdout]    --> src/game/character.rs:264:9
[INFO] [stdout]     |
[INFO] [stdout] 264 |         frame: Frame,
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame`
[INFO] [stdout]    --> src/game/character.rs:291:9
[INFO] [stdout]     |
[INFO] [stdout] 291 |         frame: Frame,
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_frame`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `attacker`
[INFO] [stdout]    --> src/game.rs:301:17
[INFO] [stdout]     |
[INFO] [stdout] 301 |             let attacker = self.player(hit.attacker);
[INFO] [stdout]     |                 ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_attacker`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_info`
[INFO] [stdout]    --> src/game.rs:284:26
[INFO] [stdout]     |
[INFO] [stdout] 284 |     fn hitreg(&mut self, game_info: &GameInfo) {
[INFO] [stdout]     |                          ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `h`
[INFO] [stdout]    --> src/game.rs:469:13
[INFO] [stdout]     |
[INFO] [stdout] 469 |         let h = height as i32;
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_h`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game/camera.rs:27:13
[INFO] [stdout]    |
[INFO] [stdout] 27 |         let mut q = q * self.scale;
[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: `game_info`
[INFO] [stdout]    --> src/game.rs:655:43
[INFO] [stdout]     |
[INFO] [stdout] 655 |     pub fn render(&self, camera: &Camera, game_info: &GameInfo, canvas: &mut Canvas<Window>) {
[INFO] [stdout]     |                                           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/game.rs:989:13
[INFO] [stdout]     |
[INFO] [stdout] 989 |         let mut session = ggrs::SessionBuilder::<GGRSConfig>::new()
[INFO] [stdout]     |             ----^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]     --> src/game.rs:1052:50
[INFO] [stdout]      |
[INFO] [stdout] 1052 |                 ggrs::GGRSEvent::Synchronizing { addr, total, count } => {
[INFO] [stdout]      |                                                  ^^^^ help: try ignoring the field: `addr: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `total`
[INFO] [stdout]     --> src/game.rs:1052:56
[INFO] [stdout]      |
[INFO] [stdout] 1052 |                 ggrs::GGRSEvent::Synchronizing { addr, total, count } => {
[INFO] [stdout]      |                                                        ^^^^^ help: try ignoring the field: `total: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `count`
[INFO] [stdout]     --> src/game.rs:1052:63
[INFO] [stdout]      |
[INFO] [stdout] 1052 |                 ggrs::GGRSEvent::Synchronizing { addr, total, count } => {
[INFO] [stdout]      |                                                               ^^^^^ help: try ignoring the field: `count: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]     --> src/game.rs:1055:49
[INFO] [stdout]      |
[INFO] [stdout] 1055 |                 ggrs::GGRSEvent::Synchronized { addr } => {
[INFO] [stdout]      |                                                 ^^^^ help: try ignoring the field: `addr: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]     --> src/game.rs:1059:49
[INFO] [stdout]      |
[INFO] [stdout] 1059 |                 ggrs::GGRSEvent::Disconnected { addr } => {
[INFO] [stdout]      |                                                 ^^^^ help: try ignoring the field: `addr: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]     --> src/game.rs:1063:21
[INFO] [stdout]      |
[INFO] [stdout] 1063 |                     addr,
[INFO] [stdout]      |                     ^^^^ help: try ignoring the field: `addr: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `disconnect_timeout`
[INFO] [stdout]     --> src/game.rs:1064:21
[INFO] [stdout]      |
[INFO] [stdout] 1064 |                     disconnect_timeout,
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^ help: try ignoring the field: `disconnect_timeout: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]     --> src/game.rs:1069:51
[INFO] [stdout]      |
[INFO] [stdout] 1069 |                 ggrs::GGRSEvent::NetworkResumed { addr } => {
[INFO] [stdout]      |                                                   ^^^^ help: try ignoring the field: `addr: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame`
[INFO] [stdout]     --> src/game.rs:1078:21
[INFO] [stdout]      |
[INFO] [stdout] 1078 |                     frame,
[INFO] [stdout]      |                     ^^^^^ help: try ignoring the field: `frame: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `local_checksum`
[INFO] [stdout]     --> src/game.rs:1079:21
[INFO] [stdout]      |
[INFO] [stdout] 1079 |                     local_checksum,
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^ help: try ignoring the field: `local_checksum: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `remote_checksum`
[INFO] [stdout]     --> src/game.rs:1080:21
[INFO] [stdout]      |
[INFO] [stdout] 1080 |                     remote_checksum,
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^ help: try ignoring the field: `remote_checksum: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]     --> src/game.rs:1081:21
[INFO] [stdout]      |
[INFO] [stdout] 1081 |                     addr,
[INFO] [stdout]      |                     ^^^^ help: try ignoring the field: `addr: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame`
[INFO] [stdout]     --> src/game.rs:1118:66
[INFO] [stdout]      |
[INFO] [stdout] 1118 |                         ggrs::GGRSRequest::LoadGameState { cell, frame } => {
[INFO] [stdout]      |                                                                  ^^^^^ help: try ignoring the field: `frame: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]     --> src/game.rs:1146:28
[INFO] [stdout]      |
[INFO] [stdout] 1146 |     fn on_enter(&mut self, ctx: &mut crate::app_context::AppContext) {
[INFO] [stdout]      |                            ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]     --> src/game.rs:1150:30
[INFO] [stdout]      |
[INFO] [stdout] 1150 |     fn on_suspend(&mut self, ctx: &mut crate::app_context::AppContext) {
[INFO] [stdout]      |                              ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]     --> src/game.rs:1154:29
[INFO] [stdout]      |
[INFO] [stdout] 1154 |     fn on_resume(&mut self, ctx: &mut crate::app_context::AppContext) {
[INFO] [stdout]      |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]     --> src/game.rs:1158:27
[INFO] [stdout]      |
[INFO] [stdout] 1158 |     fn on_exit(&mut self, ctx: &mut crate::app_context::AppContext) {
[INFO] [stdout]      |                           ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event`
[INFO] [stdout]     --> src/game.rs:1162:25
[INFO] [stdout]      |
[INFO] [stdout] 1162 |     fn event(&mut self, event: sdl2::event::Event, ctx: &mut crate::app_context::AppContext) {
[INFO] [stdout]      |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_event`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]     --> src/game.rs:1162:52
[INFO] [stdout]      |
[INFO] [stdout] 1162 |     fn event(&mut self, event: sdl2::event::Event, ctx: &mut crate::app_context::AppContext) {
[INFO] [stdout]      |                                                    ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]     --> src/game.rs:1166:24
[INFO] [stdout]      |
[INFO] [stdout] 1166 |     fn tick(&mut self, ctx: &mut crate::app_context::AppContext) -> StateTransition {
[INFO] [stdout]      |                        ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `canvas`
[INFO] [stdout]     --> src/game.rs:1170:26
[INFO] [stdout]      |
[INFO] [stdout] 1170 |     fn render(&mut self, canvas: &mut Canvas<Window>, ctx: &mut crate::app_context::AppContext) {
[INFO] [stdout]      |                          ^^^^^^ help: if this is intentional, prefix it with an underscore: `_canvas`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]     --> src/game.rs:1170:55
[INFO] [stdout]      |
[INFO] [stdout] 1170 |     fn render(&mut self, canvas: &mut Canvas<Window>, ctx: &mut crate::app_context::AppContext) {
[INFO] [stdout]      |                                                       ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `window`
[INFO] [stdout]  --> src/gui/label.rs:9:22
[INFO] [stdout]   |
[INFO] [stdout] 9 |     fn render(&self, window: super::RenderWindow) {
[INFO] [stdout]   |                      ^^^^^^ help: if this is intentional, prefix it with an underscore: `_window`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `app_context`
[INFO] [stdout]   --> src/main.rs:58:13
[INFO] [stdout]    |
[INFO] [stdout] 58 |     let mut app_context = AppContext {
[INFO] [stdout]    |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_app_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input`
[INFO] [stdout]   --> src/main.rs:64:38
[INFO] [stdout]    |
[INFO] [stdout] 64 |     let PlayerType::Local { mapping, input } = &mut game_info.player_2 else {
[INFO] [stdout]    |                                      ^^^^^ help: try ignoring the field: `input: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timestamp`
[INFO] [stdout]   --> src/main.rs:92:21
[INFO] [stdout]    |
[INFO] [stdout] 92 |                     timestamp,
[INFO] [stdout]    |                     ^^^^^^^^^ help: try ignoring the field: `timestamp: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `window_id`
[INFO] [stdout]   --> src/main.rs:93:21
[INFO] [stdout]    |
[INFO] [stdout] 93 |                     window_id,
[INFO] [stdout]    |                     ^^^^^^^^^ help: try ignoring the field: `window_id: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `keycode`
[INFO] [stdout]   --> src/main.rs:94:21
[INFO] [stdout]    |
[INFO] [stdout] 94 |                     keycode,
[INFO] [stdout]    |                     ^^^^^^^ help: try ignoring the field: `keycode: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `keymod`
[INFO] [stdout]   --> src/main.rs:96:21
[INFO] [stdout]    |
[INFO] [stdout] 96 |                     keymod,
[INFO] [stdout]    |                     ^^^^^^ help: try ignoring the field: `keymod: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `repeat`
[INFO] [stdout]   --> src/main.rs:97:21
[INFO] [stdout]    |
[INFO] [stdout] 97 |                     repeat,
[INFO] [stdout]    |                     ^^^^^^ help: try ignoring the field: `repeat: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timestamp`
[INFO] [stdout]    --> src/main.rs:102:21
[INFO] [stdout]     |
[INFO] [stdout] 102 |                     timestamp,
[INFO] [stdout]     |                     ^^^^^^^^^ help: try ignoring the field: `timestamp: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `window_id`
[INFO] [stdout]    --> src/main.rs:103:21
[INFO] [stdout]     |
[INFO] [stdout] 103 |                     window_id,
[INFO] [stdout]     |                     ^^^^^^^^^ help: try ignoring the field: `window_id: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `keycode`
[INFO] [stdout]    --> src/main.rs:104:21
[INFO] [stdout]     |
[INFO] [stdout] 104 |                     keycode,
[INFO] [stdout]     |                     ^^^^^^^ help: try ignoring the field: `keycode: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `keymod`
[INFO] [stdout]    --> src/main.rs:106:21
[INFO] [stdout]     |
[INFO] [stdout] 106 |                     keymod,
[INFO] [stdout]     |                     ^^^^^^ help: try ignoring the field: `keymod: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `repeat`
[INFO] [stdout]    --> src/main.rs:107:21
[INFO] [stdout]     |
[INFO] [stdout] 107 |                     repeat,
[INFO] [stdout]     |                     ^^^^^^ help: try ignoring the field: `repeat: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timestamp`
[INFO] [stdout]    --> src/main.rs:112:21
[INFO] [stdout]     |
[INFO] [stdout] 112 |                     timestamp,
[INFO] [stdout]     |                     ^^^^^^^^^ help: try ignoring the field: `timestamp: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `attacker`
[INFO] [stdout]    --> src/game.rs:301:17
[INFO] [stdout]     |
[INFO] [stdout] 301 |             let attacker = self.player(hit.attacker);
[INFO] [stdout]     |                 ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_attacker`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `which`
[INFO] [stdout]    --> src/main.rs:113:21
[INFO] [stdout]     |
[INFO] [stdout] 113 |                     which,
[INFO] [stdout]     |                     ^^^^^ help: try ignoring the field: `which: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timestamp`
[INFO] [stdout]    --> src/main.rs:119:21
[INFO] [stdout]     |
[INFO] [stdout] 119 |                     timestamp,
[INFO] [stdout]     |                     ^^^^^^^^^ help: try ignoring the field: `timestamp: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_info`
[INFO] [stdout]    --> src/game.rs:284:26
[INFO] [stdout]     |
[INFO] [stdout] 284 |     fn hitreg(&mut self, game_info: &GameInfo) {
[INFO] [stdout]     |                          ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `which`
[INFO] [stdout]    --> src/main.rs:120:21
[INFO] [stdout]     |
[INFO] [stdout] 120 |                     which,
[INFO] [stdout]     |                     ^^^^^ help: try ignoring the field: `which: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timestamp`
[INFO] [stdout]    --> src/main.rs:125:48
[INFO] [stdout]     |
[INFO] [stdout] 125 |                 Event::ControllerDeviceAdded { timestamp, which } => {
[INFO] [stdout]     |                                                ^^^^^^^^^ help: try ignoring the field: `timestamp: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timestamp`
[INFO] [stdout]    --> src/main.rs:129:50
[INFO] [stdout]     |
[INFO] [stdout] 129 |                 Event::ControllerDeviceRemoved { timestamp, which } => {
[INFO] [stdout]     |                                                  ^^^^^^^^^ help: try ignoring the field: `timestamp: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fps`
[INFO] [stdout]    --> src/main.rs:149:17
[INFO] [stdout]     |
[INFO] [stdout] 149 |             let fps = 1.0 / time.as_secs_f32();
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_fps`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time`
[INFO] [stdout]    --> src/main.rs:154:17
[INFO] [stdout]     |
[INFO] [stdout] 154 |             let time = Instant::now().duration_since(now);
[INFO] [stdout]     |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:58:9
[INFO] [stdout]    |
[INFO] [stdout] 58 |     let mut app_context = AppContext {
[INFO] [stdout]    |         ----^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `h`
[INFO] [stdout]    --> src/game.rs:469:13
[INFO] [stdout]     |
[INFO] [stdout] 469 |         let h = height as i32;
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_h`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_info`
[INFO] [stdout]    --> src/game.rs:655:43
[INFO] [stdout]     |
[INFO] [stdout] 655 |     pub fn render(&self, camera: &Camera, game_info: &GameInfo, canvas: &mut Canvas<Window>) {
[INFO] [stdout]     |                                           ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0308`.
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/game.rs:989:13
[INFO] [stdout]     |
[INFO] [stdout] 989 |         let mut session = ggrs::SessionBuilder::<GGRSConfig>::new()
[INFO] [stdout]     |             ----^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]     --> src/game.rs:1052:50
[INFO] [stdout]      |
[INFO] [stdout] 1052 |                 ggrs::GGRSEvent::Synchronizing { addr, total, count } => {
[INFO] [stdout]      |                                                  ^^^^ help: try ignoring the field: `addr: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `total`
[INFO] [stdout]     --> src/game.rs:1052:56
[INFO] [stdout]      |
[INFO] [stdout] 1052 |                 ggrs::GGRSEvent::Synchronizing { addr, total, count } => {
[INFO] [stdout]      |                                                        ^^^^^ help: try ignoring the field: `total: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `count`
[INFO] [stdout]     --> src/game.rs:1052:63
[INFO] [stdout]      |
[INFO] [stdout] 1052 |                 ggrs::GGRSEvent::Synchronizing { addr, total, count } => {
[INFO] [stdout]      |                                                               ^^^^^ help: try ignoring the field: `count: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]     --> src/game.rs:1055:49
[INFO] [stdout]      |
[INFO] [stdout] 1055 |                 ggrs::GGRSEvent::Synchronized { addr } => {
[INFO] [stdout]      |                                                 ^^^^ help: try ignoring the field: `addr: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]     --> src/game.rs:1059:49
[INFO] [stdout]      |
[INFO] [stdout] 1059 |                 ggrs::GGRSEvent::Disconnected { addr } => {
[INFO] [stdout]      |                                                 ^^^^ help: try ignoring the field: `addr: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]     --> src/game.rs:1063:21
[INFO] [stdout]      |
[INFO] [stdout] 1063 |                     addr,
[INFO] [stdout]      |                     ^^^^ help: try ignoring the field: `addr: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `disconnect_timeout`
[INFO] [stdout]     --> src/game.rs:1064:21
[INFO] [stdout]      |
[INFO] [stdout] 1064 |                     disconnect_timeout,
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^^ help: try ignoring the field: `disconnect_timeout: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]     --> src/game.rs:1069:51
[INFO] [stdout]      |
[INFO] [stdout] 1069 |                 ggrs::GGRSEvent::NetworkResumed { addr } => {
[INFO] [stdout]      |                                                   ^^^^ help: try ignoring the field: `addr: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame`
[INFO] [stdout]     --> src/game.rs:1078:21
[INFO] [stdout]      |
[INFO] [stdout] 1078 |                     frame,
[INFO] [stdout]      |                     ^^^^^ help: try ignoring the field: `frame: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `local_checksum`
[INFO] [stdout]     --> src/game.rs:1079:21
[INFO] [stdout]      |
[INFO] [stdout] 1079 |                     local_checksum,
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^ help: try ignoring the field: `local_checksum: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `remote_checksum`
[INFO] [stdout]     --> src/game.rs:1080:21
[INFO] [stdout]      |
[INFO] [stdout] 1080 |                     remote_checksum,
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^ help: try ignoring the field: `remote_checksum: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `addr`
[INFO] [stdout]     --> src/game.rs:1081:21
[INFO] [stdout]      |
[INFO] [stdout] 1081 |                     addr,
[INFO] [stdout]      |                     ^^^^ help: try ignoring the field: `addr: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `frame`
[INFO] [stdout]     --> src/game.rs:1118:66
[INFO] [stdout]      |
[INFO] [stdout] 1118 |                         ggrs::GGRSRequest::LoadGameState { cell, frame } => {
[INFO] [stdout]      |                                                                  ^^^^^ help: try ignoring the field: `frame: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]     --> src/game.rs:1146:28
[INFO] [stdout]      |
[INFO] [stdout] 1146 |     fn on_enter(&mut self, ctx: &mut crate::app_context::AppContext) {
[INFO] [stdout]      |                            ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `fg-sdl2` (bin "fg-sdl2") due to 2 previous errors; 64 warnings emitted
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]     --> src/game.rs:1150:30
[INFO] [stdout]      |
[INFO] [stdout] 1150 |     fn on_suspend(&mut self, ctx: &mut crate::app_context::AppContext) {
[INFO] [stdout]      |                              ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]     --> src/game.rs:1154:29
[INFO] [stdout]      |
[INFO] [stdout] 1154 |     fn on_resume(&mut self, ctx: &mut crate::app_context::AppContext) {
[INFO] [stdout]      |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]     --> src/game.rs:1158:27
[INFO] [stdout]      |
[INFO] [stdout] 1158 |     fn on_exit(&mut self, ctx: &mut crate::app_context::AppContext) {
[INFO] [stdout]      |                           ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `event`
[INFO] [stdout]     --> src/game.rs:1162:25
[INFO] [stdout]      |
[INFO] [stdout] 1162 |     fn event(&mut self, event: sdl2::event::Event, ctx: &mut crate::app_context::AppContext) {
[INFO] [stdout]      |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_event`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]     --> src/game.rs:1162:52
[INFO] [stdout]      |
[INFO] [stdout] 1162 |     fn event(&mut self, event: sdl2::event::Event, ctx: &mut crate::app_context::AppContext) {
[INFO] [stdout]      |                                                    ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]     --> src/game.rs:1166:24
[INFO] [stdout]      |
[INFO] [stdout] 1166 |     fn tick(&mut self, ctx: &mut crate::app_context::AppContext) -> StateTransition {
[INFO] [stdout]      |                        ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `canvas`
[INFO] [stdout]     --> src/game.rs:1170:26
[INFO] [stdout]      |
[INFO] [stdout] 1170 |     fn render(&mut self, canvas: &mut Canvas<Window>, ctx: &mut crate::app_context::AppContext) {
[INFO] [stdout]      |                          ^^^^^^ help: if this is intentional, prefix it with an underscore: `_canvas`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]     --> src/game.rs:1170:55
[INFO] [stdout]      |
[INFO] [stdout] 1170 |     fn render(&mut self, canvas: &mut Canvas<Window>, ctx: &mut crate::app_context::AppContext) {
[INFO] [stdout]      |                                                       ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `window`
[INFO] [stdout]  --> src/gui/label.rs:9:22
[INFO] [stdout]   |
[INFO] [stdout] 9 |     fn render(&self, window: super::RenderWindow) {
[INFO] [stdout]   |                      ^^^^^^ help: if this is intentional, prefix it with an underscore: `_window`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `app_context`
[INFO] [stdout]   --> src/main.rs:58:13
[INFO] [stdout]    |
[INFO] [stdout] 58 |     let mut app_context = AppContext {
[INFO] [stdout]    |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_app_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `input`
[INFO] [stdout]   --> src/main.rs:64:38
[INFO] [stdout]    |
[INFO] [stdout] 64 |     let PlayerType::Local { mapping, input } = &mut game_info.player_2 else {
[INFO] [stdout]    |                                      ^^^^^ help: try ignoring the field: `input: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timestamp`
[INFO] [stdout]   --> src/main.rs:92:21
[INFO] [stdout]    |
[INFO] [stdout] 92 |                     timestamp,
[INFO] [stdout]    |                     ^^^^^^^^^ help: try ignoring the field: `timestamp: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `window_id`
[INFO] [stdout]   --> src/main.rs:93:21
[INFO] [stdout]    |
[INFO] [stdout] 93 |                     window_id,
[INFO] [stdout]    |                     ^^^^^^^^^ help: try ignoring the field: `window_id: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `keycode`
[INFO] [stdout]   --> src/main.rs:94:21
[INFO] [stdout]    |
[INFO] [stdout] 94 |                     keycode,
[INFO] [stdout]    |                     ^^^^^^^ help: try ignoring the field: `keycode: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `keymod`
[INFO] [stdout]   --> src/main.rs:96:21
[INFO] [stdout]    |
[INFO] [stdout] 96 |                     keymod,
[INFO] [stdout]    |                     ^^^^^^ help: try ignoring the field: `keymod: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `repeat`
[INFO] [stdout]   --> src/main.rs:97:21
[INFO] [stdout]    |
[INFO] [stdout] 97 |                     repeat,
[INFO] [stdout]    |                     ^^^^^^ help: try ignoring the field: `repeat: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timestamp`
[INFO] [stdout]    --> src/main.rs:102:21
[INFO] [stdout]     |
[INFO] [stdout] 102 |                     timestamp,
[INFO] [stdout]     |                     ^^^^^^^^^ help: try ignoring the field: `timestamp: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `window_id`
[INFO] [stdout]    --> src/main.rs:103:21
[INFO] [stdout]     |
[INFO] [stdout] 103 |                     window_id,
[INFO] [stdout]     |                     ^^^^^^^^^ help: try ignoring the field: `window_id: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `keycode`
[INFO] [stdout]    --> src/main.rs:104:21
[INFO] [stdout]     |
[INFO] [stdout] 104 |                     keycode,
[INFO] [stdout]     |                     ^^^^^^^ help: try ignoring the field: `keycode: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `keymod`
[INFO] [stdout]    --> src/main.rs:106:21
[INFO] [stdout]     |
[INFO] [stdout] 106 |                     keymod,
[INFO] [stdout]     |                     ^^^^^^ help: try ignoring the field: `keymod: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `repeat`
[INFO] [stdout]    --> src/main.rs:107:21
[INFO] [stdout]     |
[INFO] [stdout] 107 |                     repeat,
[INFO] [stdout]     |                     ^^^^^^ help: try ignoring the field: `repeat: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timestamp`
[INFO] [stdout]    --> src/main.rs:112:21
[INFO] [stdout]     |
[INFO] [stdout] 112 |                     timestamp,
[INFO] [stdout]     |                     ^^^^^^^^^ help: try ignoring the field: `timestamp: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `which`
[INFO] [stdout]    --> src/main.rs:113:21
[INFO] [stdout]     |
[INFO] [stdout] 113 |                     which,
[INFO] [stdout]     |                     ^^^^^ help: try ignoring the field: `which: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timestamp`
[INFO] [stdout]    --> src/main.rs:119:21
[INFO] [stdout]     |
[INFO] [stdout] 119 |                     timestamp,
[INFO] [stdout]     |                     ^^^^^^^^^ help: try ignoring the field: `timestamp: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `which`
[INFO] [stdout]    --> src/main.rs:120:21
[INFO] [stdout]     |
[INFO] [stdout] 120 |                     which,
[INFO] [stdout]     |                     ^^^^^ help: try ignoring the field: `which: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timestamp`
[INFO] [stdout]    --> src/main.rs:125:48
[INFO] [stdout]     |
[INFO] [stdout] 125 |                 Event::ControllerDeviceAdded { timestamp, which } => {
[INFO] [stdout]     |                                                ^^^^^^^^^ help: try ignoring the field: `timestamp: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timestamp`
[INFO] [stdout]    --> src/main.rs:129:50
[INFO] [stdout]     |
[INFO] [stdout] 129 |                 Event::ControllerDeviceRemoved { timestamp, which } => {
[INFO] [stdout]     |                                                  ^^^^^^^^^ help: try ignoring the field: `timestamp: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fps`
[INFO] [stdout]    --> src/main.rs:149:17
[INFO] [stdout]     |
[INFO] [stdout] 149 |             let fps = 1.0 / time.as_secs_f32();
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_fps`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time`
[INFO] [stdout]    --> src/main.rs:154:17
[INFO] [stdout]     |
[INFO] [stdout] 154 |             let time = Instant::now().duration_since(now);
[INFO] [stdout]     |                 ^^^^ help: if this is intentional, prefix it with an underscore: `_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:58:9
[INFO] [stdout]    |
[INFO] [stdout] 58 |     let mut app_context = AppContext {
[INFO] [stdout]    |         ----^^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0308`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `fg-sdl2` (bin "fg-sdl2" test) due to 2 previous errors; 64 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "898686d1a9f06c67828f8c3014954e6d9241bee9f37685e7cca99fb9fcb4a2db", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "898686d1a9f06c67828f8c3014954e6d9241bee9f37685e7cca99fb9fcb4a2db", kill_on_drop: false }`
[INFO] [stdout] 898686d1a9f06c67828f8c3014954e6d9241bee9f37685e7cca99fb9fcb4a2db
