[INFO] cloning repository https://github.com/TruncateGame/Truncate
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/TruncateGame/Truncate" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FTruncateGame%2FTruncate", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FTruncateGame%2FTruncate'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 239a83470c8c472bcd84dae2d3e09f348c15cc7e
[INFO] checking TruncateGame/Truncate against 1.95.0-beta.7 for beta-1.95-4
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FTruncateGame%2FTruncate" "/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/TruncateGame/Truncate
[INFO] finished tweaking git repo https://github.com/TruncateGame/Truncate
[INFO] tweaked toml for git repo https://github.com/TruncateGame/Truncate written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/TruncateGame/Truncate on toolchain 1.95.0-beta.7
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0-beta.7" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/TruncateGame/Truncate 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" "+1.95.0-beta.7" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: profiles for the non root package will be ignored, specify profiles at the workspace root:
[INFO] [stderr] package:   /workspace/builds/worker-5-tc2/source/truncate_core/Cargo.toml
[INFO] [stderr] workspace: /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] [stderr] warning: profiles for the non root package will be ignored, specify profiles at the workspace root:
[INFO] [stderr] package:   /workspace/builds/worker-5-tc2/source/truncate_server/Cargo.toml
[INFO] [stderr] workspace: /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] [stderr] warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2021 which implies `resolver = "2"`
[INFO] [stderr]   |
[INFO] [stderr]   = note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
[INFO] [stderr]   = note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest
[INFO] [stderr]   = note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
[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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0-beta.7" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] ad5984b3d1e352271ecaed773e331cfbcdef3c5a769bba557fe6cfb7740a4a04
[INFO] running `Command { std: "docker" "start" "-a" "ad5984b3d1e352271ecaed773e331cfbcdef3c5a769bba557fe6cfb7740a4a04", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "ad5984b3d1e352271ecaed773e331cfbcdef3c5a769bba557fe6cfb7740a4a04", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ad5984b3d1e352271ecaed773e331cfbcdef3c5a769bba557fe6cfb7740a4a04", kill_on_drop: false }`
[INFO] [stdout] ad5984b3d1e352271ecaed773e331cfbcdef3c5a769bba557fe6cfb7740a4a04
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0-beta.7" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 59c6fc7a7234ec0cc1f674e1b6a150912c3f6f44835f8656b38841e25b62ee74
[INFO] running `Command { std: "docker" "start" "-a" "59c6fc7a7234ec0cc1f674e1b6a150912c3f6f44835f8656b38841e25b62ee74", kill_on_drop: false }`
[INFO] [stderr] warning: profiles for the non root package will be ignored, specify profiles at the workspace root:
[INFO] [stderr] package:   /opt/rustwide/workdir/truncate_core/Cargo.toml
[INFO] [stderr] workspace: /opt/rustwide/workdir/Cargo.toml
[INFO] [stderr] warning: profiles for the non root package will be ignored, specify profiles at the workspace root:
[INFO] [stderr] package:   /opt/rustwide/workdir/truncate_server/Cargo.toml
[INFO] [stderr] workspace: /opt/rustwide/workdir/Cargo.toml
[INFO] [stderr] warning: virtual workspace defaulting to `resolver = "1"` despite one or more workspace members being on edition 2021 which implies `resolver = "2"`
[INFO] [stderr]   |
[INFO] [stderr]   = note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
[INFO] [stderr]   = note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest
[INFO] [stderr]   = note: for more details see https://doc.rust-lang.org/cargo/reference/resolver.html#resolver-versions
[INFO] [stderr]    Compiling libc v0.2.169
[INFO] [stderr]    Compiling unicode-ident v1.0.8
[INFO] [stderr]    Compiling serde v1.0.204
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking once_cell v1.19.0
[INFO] [stderr]    Compiling typenum v1.16.0
[INFO] [stderr]    Compiling generic-array v0.14.6
[INFO] [stderr]    Compiling futures-core v0.3.27
[INFO] [stderr]    Compiling crossbeam-utils v0.8.15
[INFO] [stderr]    Compiling proc-macro2 v1.0.93
[INFO] [stderr]    Compiling parking_lot_core v0.9.7
[INFO] [stderr]     Checking tracing-core v0.1.33
[INFO] [stderr]    Compiling libm v0.2.6
[INFO] [stderr]    Compiling futures-channel v0.3.27
[INFO] [stderr]    Compiling futures-task v0.3.27
[INFO] [stderr]    Compiling hashbrown v0.12.3
[INFO] [stderr]    Compiling rustix v0.38.43
[INFO] [stderr]    Compiling futures-util v0.3.27
[INFO] [stderr]    Compiling quote v1.0.35
[INFO] [stderr]     Checking bitflags v2.7.0
[INFO] [stderr]     Checking gimli v0.27.3
[INFO] [stderr]     Checking object v0.30.4
[INFO] [stderr]    Compiling ahash v0.8.6
[INFO] [stderr]    Compiling syn v2.0.96
[INFO] [stderr]    Compiling indexmap v1.9.2
[INFO] [stderr]    Compiling jobserver v0.1.32
[INFO] [stderr]     Checking getrandom v0.2.15
[INFO] [stderr]     Checking fixedbitset v0.4.2
[INFO] [stderr]     Checking futures-sink v0.3.27
[INFO] [stderr]    Compiling cc v1.2.9
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking rustc-demangle v0.1.23
[INFO] [stderr]     Checking futures-io v0.3.29
[INFO] [stderr]     Checking petgraph v0.6.3
[INFO] [stderr]     Checking thread-id v4.1.0
[INFO] [stderr]     Checking socket2 v0.4.9
[INFO] [stderr]     Checking num-traits v0.2.15
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking crypto-common v0.1.6
[INFO] [stderr]     Checking cpufeatures v0.2.5
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]    Compiling tokio v1.26.0
[INFO] [stderr]     Checking linux-raw-sys v0.4.15
[INFO] [stderr]     Checking addr2line v0.19.0
[INFO] [stderr]    Compiling log v0.4.22
[INFO] [stderr]    Compiling backtrace v0.3.67
[INFO] [stderr]     Checking concurrent-queue v2.4.0
[INFO] [stderr]    Compiling serde_json v1.0.94
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]    Compiling wayland-sys v0.31.1
[INFO] [stderr]     Checking zerocopy v0.7.28
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]    Compiling memoffset v0.8.0
[INFO] [stderr]    Compiling wayland-backend v0.3.3
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.14
[INFO] [stderr]    Compiling time-macros v0.2.18
[INFO] [stderr]    Compiling quick-xml v0.31.0
[INFO] [stderr]    Compiling winnow v0.3.6
[INFO] [stderr]    Compiling toml_datetime v0.6.1
[INFO] [stderr]     Checking crossbeam-deque v0.8.3
[INFO] [stderr]     Checking num_cpus v1.15.0
[INFO] [stderr]     Checking signal-hook-registry v1.4.1
[INFO] [stderr]     Checking mio v0.8.6
[INFO] [stderr]    Compiling wayland-scanner v0.31.1
[INFO] [stderr]     Checking unicode-bidi v0.3.12
[INFO] [stderr]     Checking futures-lite v1.13.0
[INFO] [stderr]     Checking rayon-core v1.12.0
[INFO] [stderr]    Compiling zvariant_utils v1.0.1
[INFO] [stderr]     Checking async-lock v2.7.0
[INFO] [stderr]    Compiling ring v0.17.3
[INFO] [stderr]     Checking sha1 v0.10.5
[INFO] [stderr]    Compiling memoffset v0.7.1
[INFO] [stderr]     Checking getrandom v0.1.16
[INFO] [stderr]     Checking idna v0.3.0
[INFO] [stderr]     Checking spin v0.9.8
[INFO] [stderr]    Compiling polling v2.6.0
[INFO] [stderr]    Compiling scopeguard v1.1.0
[INFO] [stderr]    Compiling serde_derive v1.0.204
[INFO] [stderr]    Compiling tracing-attributes v0.1.28
[INFO] [stderr]    Compiling thiserror-impl v1.0.56
[INFO] [stderr]    Compiling zeroize_derive v1.4.2
[INFO] [stderr]    Compiling toml_edit v0.19.7
[INFO] [stderr]    Compiling enumflags2_derive v0.7.8
[INFO] [stderr]     Checking thiserror v1.0.56
[INFO] [stderr]     Checking zeroize v1.7.0
[INFO] [stderr]    Compiling futures-macro v0.3.27
[INFO] [stderr]    Compiling tokio-macros v1.8.2
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]    Compiling bytemuck_derive v1.4.0
[INFO] [stderr]     Checking url v2.3.1
[INFO] [stderr]    Compiling lock_api v0.4.9
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]     Checking num-integer v0.1.45
[INFO] [stderr]     Checking bytemuck v1.13.1
[INFO] [stderr]     Checking async-channel v1.9.0
[INFO] [stderr]    Compiling aho-corasick v0.7.20
[INFO] [stderr]    Compiling async-fs v1.6.0
[INFO] [stderr]    Compiling async-io v1.12.0
[INFO] [stderr]     Checking ttf-parser v0.18.1
[INFO] [stderr]    Compiling async-trait v0.1.67
[INFO] [stderr]    Compiling regex-syntax v0.6.28
[INFO] [stderr]    Compiling proc-macro-crate v1.3.1
[INFO] [stderr]     Checking blocking v1.3.0
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking polling v3.3.1
[INFO] [stderr]     Checking nix v0.26.2
[INFO] [stderr]    Compiling zvariant_derive v3.15.0
[INFO] [stderr]     Checking owned_ttf_parser v0.18.1
[INFO] [stderr]    Compiling regex v1.7.1
[INFO] [stderr]    Compiling adler v1.0.2
[INFO] [stderr]    Compiling rustversion v1.0.12
[INFO] [stderr]    Compiling anyhow v1.0.70
[INFO] [stderr]     Checking ab_glyph v0.2.20
[INFO] [stderr]    Compiling gl_generator v0.14.0
[INFO] [stderr]     Checking xcursor v0.3.4
[INFO] [stderr]    Compiling miniz_oxide v0.6.2
[INFO] [stderr]     Checking xdg-home v1.0.0
[INFO] [stderr]     Checking calloop v0.12.4
[INFO] [stderr]     Checking rand_chacha v0.2.2
[INFO] [stderr]    Compiling derivative v2.2.0
[INFO] [stderr]     Checking async-executor v1.5.0
[INFO] [stderr]    Compiling serde_repr v0.1.12
[INFO] [stderr]    Compiling async-recursion v1.0.4
[INFO] [stderr]     Checking async-broadcast v0.5.1
[INFO] [stderr]     Checking ordered-stream v0.2.0
[INFO] [stderr]     Checking smallvec v1.10.0
[INFO] [stderr]     Checking either v1.8.1
[INFO] [stderr]     Checking parking_lot v0.12.1
[INFO] [stderr]     Checking rayon v1.8.0
[INFO] [stderr]     Checking enumflags2 v0.7.8
[INFO] [stderr]     Checking deranged v0.3.11
[INFO] [stderr]     Checking zvariant v3.15.0
[INFO] [stderr]    Compiling zbus_macros v3.14.1
[INFO] [stderr]     Checking wayland-client v0.31.2
[INFO] [stderr]    Compiling x11-dl v2.21.0
[INFO] [stderr]    Compiling smithay-client-toolkit v0.18.1
[INFO] [stderr]     Checking time v0.3.36
[INFO] [stderr]     Checking chksum-hash-core v0.0.0
[INFO] [stderr]     Checking zbus_names v2.6.0
[INFO] [stderr]     Checking wayland-protocols v0.31.2
[INFO] [stderr]     Checking wayland-cursor v0.31.1
[INFO] [stderr]     Checking calloop-wayland-source v0.2.0
[INFO] [stderr]     Checking wayland-csd-frame v0.3.0
[INFO] [stderr]     Checking chksum-hash-sha2-256 v0.0.0
[INFO] [stderr]     Checking rand v0.7.3
[INFO] [stderr]     Checking rand_xorshift v0.2.0
[INFO] [stderr]     Checking memmap2 v0.9.4
[INFO] [stderr]     Checking digest v0.9.0
[INFO] [stderr]    Compiling rustls v0.23.21
[INFO] [stderr]     Checking strict-num v0.1.0
[INFO] [stderr]     Checking oorandom v11.1.3
[INFO] [stderr]    Compiling crossbeam-queue v0.3.8
[INFO] [stderr]     Checking tiny-skia-path v0.11.4
[INFO] [stderr]     Checking chrono v0.4.31
[INFO] [stderr]     Checking zbus v3.14.1
[INFO] [stderr]     Checking lazy_static v1.4.0
[INFO] [stderr]     Checking noise v0.8.2
[INFO] [stderr]    Compiling strum_macros v0.24.3
[INFO] [stderr]     Checking chksum-hash-sha2 v0.0.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.11
[INFO] [stderr]    Compiling openssl-sys v0.9.81
[INFO] [stderr]    Compiling rustls-pki-types v1.10.1
[INFO] [stderr]     Checking accesskit v0.12.1
[INFO] [stderr]     Checking xxhash-rust v0.8.7
[INFO] [stderr]     Checking strum v0.24.1
[INFO] [stderr]     Checking x11rb-protocol v0.13.0
[INFO] [stderr]     Checking wayland-protocols-wlr v0.2.0
[INFO] [stderr]     Checking tiny-skia v0.11.4
[INFO] [stderr]    Compiling winit v0.29.15
[INFO] [stderr]     Checking raw-window-handle v0.5.2
[INFO] [stderr]     Checking const-oid v0.6.2
[INFO] [stderr]    Compiling color-hex v0.2.0
[INFO] [stderr]     Checking ecolor v0.26.2
[INFO] [stderr]     Checking der v0.4.5
[INFO] [stderr]     Checking truncate_core v0.1.0 (/opt/rustwide/workdir/truncate_core)
[INFO] [stdout] warning: unused import: `crate::rules`
[INFO] [stdout]  --> truncate_core/src/bag.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::rules;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FilterMap`
[INFO] [stdout]  --> truncate_core/src/board.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::iter::{FilterMap, Flatten};
[INFO] [stdout]   |                 ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `player`
[INFO] [stdout]   --> truncate_core/src/board.rs:15:13
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::{player, rules};
[INFO] [stdout]    |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Sub`
[INFO] [stdout]  --> truncate_core/src/game.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::ops::Sub;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mul`
[INFO] [stdout]  --> truncate_core/src/generation.rs:3:21
[INFO] [stdout]   |
[INFO] [stdout] 3 |     ops::{Add, Div, Mul},
[INFO] [stdout]   |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BoardSeed`
[INFO] [stdout]  --> truncate_core/src/rules.rs:8:69
[INFO] [stdout]   |
[INFO] [stdout] 8 |         ArtifactType, BoardElements, BoardNoiseParams, BoardParams, BoardSeed, Symmetry, WaterLayer,
[INFO] [stdout]   |                                                                     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking wayland-protocols-plasma v0.2.0
[INFO] [stderr]     Checking xkbcommon-dl v0.4.2
[INFO] [stderr]    Compiling glutin_glx_sys v0.5.0
[INFO] [stderr]    Compiling glutin_egl_sys v0.6.0
[INFO] [stderr]     Checking sctk-adwaita v0.8.1
[INFO] [stderr]     Checking emath v0.26.2
[INFO] [stderr]    Compiling pin-project-internal v1.0.12
[INFO] [stdout] warning: unused variable: `square`
[INFO] [stdout]     --> truncate_core/src/board.rs:1349:33
[INFO] [stdout]      |
[INFO] [stdout] 1349 |                     for (coord, square) in self.neighbouring_squares(coord) {
[INFO] [stdout]      |                                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_square`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `validity`
[INFO] [stdout]     --> truncate_core/src/board.rs:1354:29
[INFO] [stdout]      |
[INFO] [stdout] 1354 |                     player, validity, ..
[INFO] [stdout]      |                             ^^^^^^^^ help: try ignoring the field: `validity: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_allowance`
[INFO] [stdout]    --> truncate_core/src/game.rs:374:38
[INFO] [stdout]     |
[INFO] [stdout] 374 |             rules::Timing::PerTurn { time_allowance } => unimplemented!(),
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^ help: try ignoring the field: `time_allowance: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling bytes v1.4.0
[INFO] [stderr]     Checking base64ct v1.6.0
[INFO] [stderr]     Checking atspi-common v0.3.0
[INFO] [stderr]    Compiling itoa v1.0.6
[INFO] [stderr]    Compiling percent-encoding v2.2.0
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> truncate_core/src/board.rs:224:18
[INFO] [stdout]     |
[INFO] [stdout] 224 |     pub fn towns(&self) -> Iter<Coordinate> {
[INFO] [stdout]     |                  ^^^^^     ^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 224 |     pub fn towns(&self) -> Iter<'_, Coordinate> {
[INFO] [stdout]     |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> truncate_core/src/board.rs:228:22
[INFO] [stdout]     |
[INFO] [stdout] 228 |     pub fn artifacts(&self) -> Iter<Coordinate> {
[INFO] [stdout]     |                      ^^^^^     ^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 228 |     pub fn artifacts(&self) -> Iter<'_, Coordinate> {
[INFO] [stdout]     |                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking smol_str v0.2.1
[INFO] [stderr]     Checking raw-window-handle v0.6.0
[INFO] [stderr]     Checking pin-project v1.0.12
[INFO] [stderr]    Compiling hashbrown v0.15.2
[INFO] [stderr]    Compiling form_urlencoded v1.1.0
[INFO] [stderr]     Checking pem-rfc7468 v0.2.3
[INFO] [stderr]     Checking epaint v0.26.2
[INFO] [stderr]    Compiling rustls-webpki v0.102.8
[INFO] [stderr]     Checking flate2 v1.0.25
[INFO] [stderr]     Checking spki v0.4.1
[INFO] [stderr]    Compiling hashbrown v0.14.3
[INFO] [stderr]     Checking accesskit_consumer v0.16.1
[INFO] [stderr]    Compiling glutin v0.31.3
[INFO] [stderr]     Checking ff v0.10.1
[INFO] [stderr]     Checking nanorand v0.7.0
[INFO] [stderr]     Checking dirs-sys v0.3.7
[INFO] [stderr]    Compiling slab v0.4.8
[INFO] [stderr]    Compiling ryu v1.0.13
[INFO] [stderr]     Checking async-once-cell v0.5.3
[INFO] [stderr]    Compiling parking v2.0.0
[INFO] [stderr]     Checking simd-adler32 v0.3.5
[INFO] [stderr]    Compiling openssl v0.10.46
[INFO] [stderr]     Checking zune-inflate v0.2.53
[INFO] [stderr]    Compiling sha2 v0.10.6
[INFO] [stderr]     Checking tungstenite v0.18.0
[INFO] [stderr]    Compiling event-listener v5.4.0
[INFO] [stderr]     Checking flume v0.10.14
[INFO] [stderr]     Checking dirs v4.0.0
[INFO] [stderr]     Checking atspi-proxies v0.3.0
[INFO] [stderr]     Checking group v0.10.0
[INFO] [stderr]    Compiling indexmap v2.1.0
[INFO] [stderr]    Compiling tokio-stream v0.1.12
[INFO] [stderr]     Checking egui v0.26.2
[INFO] [stderr]     Checking pkcs8 v0.7.6
[INFO] [stderr]    Compiling hashlink v0.10.0
[INFO] [stderr]     Checking atspi-connection v0.3.0
[INFO] [stderr]     Checking atspi v0.19.0
[INFO] [stderr]     Checking accesskit_unix v0.6.1
[INFO] [stderr]    Compiling thiserror v2.0.11
[INFO] [stderr]    Compiling futures-intrusive v0.5.0
[INFO] [stderr]    Compiling webpki-roots v0.26.7
[INFO] [stderr]    Compiling rustls-pemfile v2.2.0
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]     Checking jpeg-decoder v0.3.0
[INFO] [stderr]    Compiling uuid v1.7.0
[INFO] [stderr]     Checking crypto-bigint v0.2.5
[INFO] [stderr]    Compiling openssl-macros v0.1.0
[INFO] [stderr]    Compiling glutin-winit v0.4.2
[INFO] [stderr]     Checking crypto-mac v0.11.0
[INFO] [stderr]    Compiling autocfg v0.1.8
[INFO] [stderr]    Compiling num-bigint v0.4.3
[INFO] [stderr]    Compiling num-iter v0.1.43
[INFO] [stderr]    Compiling finl_unicode v1.2.0
[INFO] [stderr]     Checking unsafe-libyaml v0.2.8
[INFO] [stderr]    Compiling stringprep v0.1.4
[INFO] [stderr]     Checking exr v1.6.3
[INFO] [stderr]    Compiling num-bigint-dig v0.7.0
[INFO] [stderr]     Checking hmac v0.11.0
[INFO] [stderr]    Compiling native-tls v0.2.11
[INFO] [stderr]     Checking serde_yaml v0.9.21
[INFO] [stderr]     Checking elliptic-curve v0.10.4
[INFO] [stderr]     Checking tiff v0.8.1
[INFO] [stderr]     Checking x11rb v0.13.0
[INFO] [stderr]    Compiling hkdf v0.12.4
[INFO] [stderr]    Compiling sqlx-core v0.8.3
[INFO] [stderr]     Checking webbrowser v0.8.8
[INFO] [stderr]     Checking num-rational v0.4.1
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]     Checking tokio-tungstenite v0.18.0
[INFO] [stderr]     Checking png v0.17.7
[INFO] [stderr]     Checking arboard v3.3.2
[INFO] [stderr]     Checking smithay-clipboard v0.7.1
[INFO] [stderr]     Checking tokio-util v0.7.7
[INFO] [stderr]    Compiling md-5 v0.10.5
[INFO] [stderr]     Checking signature v1.3.2
[INFO] [stderr]     Checking qoi v0.4.1
[INFO] [stderr]     Checking block-buffer v0.9.0
[INFO] [stderr]    Compiling whoami v1.4.1
[INFO] [stderr]    Compiling byteorder v1.4.3
[INFO] [stderr]    Compiling home v0.5.9
[INFO] [stderr]    Compiling litrs v0.4.1
[INFO] [stderr]     Checking web-time v0.2.3
[INFO] [stderr]     Checking crc v3.0.1
[INFO] [stderr]     Checking image v0.24.6
[INFO] [stderr]    Compiling libsqlite3-sys v0.30.1
[INFO] [stderr]     Checking h2 v0.3.16
[INFO] [stderr]     Checking egui_glow v0.26.2
[INFO] [stderr]     Checking want v0.3.0
[INFO] [stderr]     Checking sha2 v0.9.9
[INFO] [stderr]    Compiling document-features v0.2.8
[INFO] [stderr]     Checking ecdsa v0.12.4
[INFO] [stderr]    Compiling sqlx-postgres v0.8.3
[INFO] [stderr]     Checking accesskit_winit v0.16.1
[INFO] [stderr]     Checking egui-winit v0.26.2
[INFO] [stderr]    Compiling tempfile v3.15.0
[INFO] [stderr]     Checking http-body v0.4.5
[INFO] [stderr]     Checking futures-executor v0.3.27
[INFO] [stderr]     Checking plotters-backend v0.3.4
[INFO] [stderr]     Checking futures v0.3.27
[INFO] [stderr]     Checking eframe v0.26.2
[INFO] [stderr]     Checking simple_asn1 v0.5.4
[INFO] [stderr]     Checking plotters-svg v0.3.3
[INFO] [stderr]     Checking tokio-native-tls v0.3.1
[INFO] [stderr]     Checking pem v0.8.3
[INFO] [stderr]     Checking itertools v0.10.5
[INFO] [stderr]     Checking hashbrown v0.13.2
[INFO] [stderr]     Checking hyper v0.14.25
[INFO] [stderr]     Checking csv-core v0.1.10
[INFO] [stderr]    Compiling woothee v0.13.0
[INFO] [stderr]     Checking half v1.8.2
[INFO] [stderr]     Checking interpolation v0.3.0
[INFO] [stderr]     Checking yaml-rust v0.4.5
[INFO] [stderr]     Checking serde_cbor v0.11.2
[INFO] [stderr]     Checking rsa v0.4.0
[INFO] [stderr]     Checking csv v1.2.2
[INFO] [stderr]     Checking plotters v0.3.4
[INFO] [stderr]     Checking criterion-plot v0.4.5
[INFO] [stderr]     Checking clap v2.34.0
[INFO] [stderr]     Checking k256 v0.9.5
[INFO] [stderr]     Checking p256 v0.9.0
[INFO] [stderr]     Checking hashlink v0.9.1
[INFO] [stderr]     Checking console v0.15.7
[INFO] [stderr]     Checking hmac-sha512 v0.1.9
[INFO] [stderr]     Checking hmac-sha256 v0.1.7
[INFO] [stderr]     Checking tinytemplate v1.2.1
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking ed25519-compact v0.1.11
[INFO] [stderr]     Checking coarsetime v0.1.23
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking base64 v0.21.0
[INFO] [stderr]     Checking similar v2.2.1
[INFO] [stderr]     Checking fallible-iterator v0.3.0
[INFO] [stderr]     Checking ct-codecs v1.1.1
[INFO] [stderr]    Compiling sqlx-macros-core v0.8.3
[INFO] [stderr]     Checking ipnet v2.7.1
[INFO] [stderr]     Checking fallible-streaming-iterator v0.1.9
[INFO] [stderr]     Checking insta v1.29.0
[INFO] [stderr]     Checking criterion v0.3.6
[INFO] [stderr]     Checking jwt-simple v0.10.2
[INFO] [stderr]     Checking hyper-tls v0.5.0
[INFO] [stderr]     Checking reqwest v0.11.14
[INFO] [stderr]     Checking truncate_client v0.1.0 (/opt/rustwide/workdir/truncate_client)
[INFO] [stderr]     Checking dashmap v5.4.0
[INFO] [stdout] warning: unused import: `Tutorial`
[INFO] [stdout]   --> truncate_client/src/app_inner.rs:25:48
[INFO] [stdout]    |
[INFO] [stdout] 25 |         includes::{changelogs, ChangePriority, Tutorial},
[INFO] [stdout]    |                                                ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `daily::get_puzzle_day`
[INFO] [stdout]   --> truncate_client/src/handle_launch_code.rs:17:19
[INFO] [stdout]    |
[INFO] [stdout] 17 |     utils::{self, daily::get_puzzle_day, includes::rule_card, macros::current_time},
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]  --> truncate_client/src/lil_bits/board.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::path::PathBuf;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Lighten`
[INFO] [stdout]   --> truncate_client/src/lil_bits/board_editor.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 |         Lighten, Theme,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Darken`
[INFO] [stdout]  --> truncate_client/src/lil_bits/changes_splash.rs:6:38
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::utils::{text::TextHelper, Darken, Theme};
[INFO] [stdout]   |                                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hex_color`
[INFO] [stdout]  --> truncate_client/src/lil_bits/dictionary.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     hex_color, vec2, Color32, Stroke,
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `instant::Duration`
[INFO] [stdout]  --> truncate_client/src/lil_bits/hand.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use instant::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::HandSquareUI`
[INFO] [stdout]   --> truncate_client/src/lil_bits/hand.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use super::HandSquareUI;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Darken`
[INFO] [stdout]  --> truncate_client/src/lil_bits/splash.rs:6:38
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::utils::{text::TextHelper, Darken, Theme};
[INFO] [stdout]   |                                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `lil_bits::DictionaryUI`
[INFO] [stdout]   --> truncate_client/src/regions/active_game/actions_menu.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     lil_bits::DictionaryUI,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DictionaryUI`
[INFO] [stdout]   --> truncate_client/src/regions/active_game/control_strip.rs:11:16
[INFO] [stdout]    |
[INFO] [stdout] 11 |     lil_bits::{DictionaryUI, HandUI},
[INFO] [stdout]    |                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Vec2`
[INFO] [stdout]  --> truncate_client/src/regions/active_game/dictionary.rs:1:35
[INFO] [stdout]   |
[INFO] [stdout] 1 | use epaint::{emath::Align2, vec2, Vec2};
[INFO] [stdout]   |                                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CursorIcon` and `Sense`
[INFO] [stdout]  --> truncate_client/src/regions/active_game/dictionary.rs:6:18
[INFO] [stdout]   |
[INFO] [stdout] 6 |     egui::{self, CursorIcon, Layout, Order, Sense},
[INFO] [stdout]   |                  ^^^^^^^^^^                 ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `render_tex_quad` and `tiles`
[INFO] [stdout]   --> truncate_client/src/regions/active_game/dictionary.rs:12:18
[INFO] [stdout]    |
[INFO] [stdout] 12 |     utils::tex::{render_tex_quad, tiles},
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BoardElements` and `self`
[INFO] [stdout]  --> truncate_client/src/regions/generator.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 |         self, generate_board, ArtifactType, BoardElements, BoardGenerationResult, BoardNoiseParams,
[INFO] [stdout]   |         ^^^^                                ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `fmt::Alignment`
[INFO] [stdout]  --> truncate_client/src/regions/rules.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{fmt::Alignment, ops::Sub};
[INFO] [stdout]   |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Layout`
[INFO] [stdout]  --> truncate_client/src/regions/rules.rs:3:34
[INFO] [stdout]   |
[INFO] [stdout] 3 | use eframe::egui::{self, Align2, Layout, Sense};
[INFO] [stdout]   |                                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BoardChangeAction`, `BoardChangeDetail`, `BoardChange`, `Change`, `Game`, and `moves::Move`
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:8:12
[INFO] [stdout]    |
[INFO] [stdout]  8 |     game::{Game, GAME_COLORS},
[INFO] [stdout]    |            ^^^^
[INFO] [stdout]  9 |     moves::Move,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 10 |     reporting::{BoardChange, BoardChangeAction, BoardChangeDetail, Change},
[INFO] [stdout]    |                 ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Backchannel`, `Diaphanize`, `GLYPHER`, `GameplayDepot`, `MappedBoard`, `TexQuad`, `TimingDepot`, `game_evals::get_main_dict`, and `self`
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:14:17
[INFO] [stdout]    |
[INFO] [stdout] 14 |     app_outer::{Backchannel, EventDispatcher, GLYPHER},
[INFO] [stdout]    |                 ^^^^^^^^^^^                   ^^^^^^^
[INFO] [stdout] 15 |     utils::{
[INFO] [stdout] 16 |         depot::{AestheticDepot, GameplayDepot, TimingDepot},
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 17 |         game_evals::get_main_dict,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 18 |         includes::RuleCard,
[INFO] [stdout] 19 |         mapper::{ImageMusher, MappedBoard, MappedTileVariant},
[INFO] [stdout]    |                               ^^^^^^^^^^^
[INFO] [stdout] 20 |         tex::{
[INFO] [stdout] 21 |             self, render_texs_clockwise, BGTexType, PieceLayer, Tex, TexLayers, TexQuad,
[INFO] [stdout]    |             ^^^^                                                                ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |         Diaphanize, Lighten, Theme,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> truncate_client/src/regions/rules.rs:260:38
[INFO] [stdout]     |
[INFO] [stdout] 260 |                 let example_height = (cur_example.textures.len() as f32 * sprite_size);
[INFO] [stdout]     |                                      ^                                               ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 260 -                 let example_height = (cur_example.textures.len() as f32 * sprite_size);
[INFO] [stdout] 260 +                 let example_height = cur_example.textures.len() as f32 * sprite_size ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashMap`
[INFO] [stdout]  --> truncate_client/src/regions/tutorial.rs:1:24
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]   |                        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde::Deserialize`
[INFO] [stdout]  --> truncate_client/src/regions/tutorial.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde::Deserialize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused macro definition: `tr_log`
[INFO] [stdout]  --> truncate_client/src/utils/macros.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | macro_rules! tr_log {
[INFO] [stdout]   |              ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_macros)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking dict_builder v0.1.0 (/opt/rustwide/workdir/dict_builder)
[INFO] [stderr]     Checking truncate_dueller v0.1.0 (/opt/rustwide/workdir/truncate_dueller)
[INFO] [stdout] warning: unused import: `Tutorial`
[INFO] [stdout]   --> truncate_client/src/app_inner.rs:25:48
[INFO] [stdout]    |
[INFO] [stdout] 25 |         includes::{changelogs, ChangePriority, Tutorial},
[INFO] [stdout]    |                                                ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `daily::get_puzzle_day`
[INFO] [stdout]   --> truncate_client/src/handle_launch_code.rs:17:19
[INFO] [stdout]    |
[INFO] [stdout] 17 |     utils::{self, daily::get_puzzle_day, includes::rule_card, macros::current_time},
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]  --> truncate_client/src/lil_bits/board.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::path::PathBuf;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Lighten`
[INFO] [stdout]   --> truncate_client/src/lil_bits/board_editor.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 |         Lighten, Theme,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Darken`
[INFO] [stdout]  --> truncate_client/src/lil_bits/changes_splash.rs:6:38
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::utils::{text::TextHelper, Darken, Theme};
[INFO] [stdout]   |                                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hex_color`
[INFO] [stdout]  --> truncate_client/src/lil_bits/dictionary.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     hex_color, vec2, Color32, Stroke,
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `instant::Duration`
[INFO] [stdout]  --> truncate_client/src/lil_bits/hand.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use instant::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::HandSquareUI`
[INFO] [stdout]   --> truncate_client/src/lil_bits/hand.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use super::HandSquareUI;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Darken`
[INFO] [stdout]  --> truncate_client/src/lil_bits/splash.rs:6:38
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::utils::{text::TextHelper, Darken, Theme};
[INFO] [stdout]   |                                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `lil_bits::DictionaryUI`
[INFO] [stdout]   --> truncate_client/src/regions/active_game/actions_menu.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     lil_bits::DictionaryUI,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DictionaryUI`
[INFO] [stdout]   --> truncate_client/src/regions/active_game/control_strip.rs:11:16
[INFO] [stdout]    |
[INFO] [stdout] 11 |     lil_bits::{DictionaryUI, HandUI},
[INFO] [stdout]    |                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Vec2`
[INFO] [stdout]  --> truncate_client/src/regions/active_game/dictionary.rs:1:35
[INFO] [stdout]   |
[INFO] [stdout] 1 | use epaint::{emath::Align2, vec2, Vec2};
[INFO] [stdout]   |                                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CursorIcon` and `Sense`
[INFO] [stdout]  --> truncate_client/src/regions/active_game/dictionary.rs:6:18
[INFO] [stdout]   |
[INFO] [stdout] 6 |     egui::{self, CursorIcon, Layout, Order, Sense},
[INFO] [stdout]   |                  ^^^^^^^^^^                 ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `render_tex_quad` and `tiles`
[INFO] [stdout]   --> truncate_client/src/regions/active_game/dictionary.rs:12:18
[INFO] [stdout]    |
[INFO] [stdout] 12 |     utils::tex::{render_tex_quad, tiles},
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BoardElements` and `self`
[INFO] [stdout]  --> truncate_client/src/regions/generator.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 |         self, generate_board, ArtifactType, BoardElements, BoardGenerationResult, BoardNoiseParams,
[INFO] [stdout]   |         ^^^^                                ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `fmt::Alignment`
[INFO] [stdout]  --> truncate_client/src/regions/rules.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{fmt::Alignment, ops::Sub};
[INFO] [stdout]   |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Layout`
[INFO] [stdout]  --> truncate_client/src/regions/rules.rs:3:34
[INFO] [stdout]   |
[INFO] [stdout] 3 | use eframe::egui::{self, Align2, Layout, Sense};
[INFO] [stdout]   |                                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BoardChangeAction`, `BoardChangeDetail`, `BoardChange`, `Change`, `Game`, and `moves::Move`
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:8:12
[INFO] [stdout]    |
[INFO] [stdout]  8 |     game::{Game, GAME_COLORS},
[INFO] [stdout]    |            ^^^^
[INFO] [stdout]  9 |     moves::Move,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 10 |     reporting::{BoardChange, BoardChangeAction, BoardChangeDetail, Change},
[INFO] [stdout]    |                 ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Backchannel`, `Diaphanize`, `GLYPHER`, `GameplayDepot`, `MappedBoard`, `TexQuad`, `TimingDepot`, and `game_evals::get_main_dict`
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:14:17
[INFO] [stdout]    |
[INFO] [stdout] 14 |     app_outer::{Backchannel, EventDispatcher, GLYPHER},
[INFO] [stdout]    |                 ^^^^^^^^^^^                   ^^^^^^^
[INFO] [stdout] 15 |     utils::{
[INFO] [stdout] 16 |         depot::{AestheticDepot, GameplayDepot, TimingDepot},
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 17 |         game_evals::get_main_dict,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 18 |         includes::RuleCard,
[INFO] [stdout] 19 |         mapper::{ImageMusher, MappedBoard, MappedTileVariant},
[INFO] [stdout]    |                               ^^^^^^^^^^^
[INFO] [stdout] 20 |         tex::{
[INFO] [stdout] 21 |             self, render_texs_clockwise, BGTexType, PieceLayer, Tex, TexLayers, TexQuad,
[INFO] [stdout]    |                                                                                 ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |         Diaphanize, Lighten, Theme,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> truncate_client/src/regions/rules.rs:260:38
[INFO] [stdout]     |
[INFO] [stdout] 260 |                 let example_height = (cur_example.textures.len() as f32 * sprite_size);
[INFO] [stdout]     |                                      ^                                               ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 260 -                 let example_height = (cur_example.textures.len() as f32 * sprite_size);
[INFO] [stdout] 260 +                 let example_height = cur_example.textures.len() as f32 * sprite_size ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashMap`
[INFO] [stdout]  --> truncate_client/src/regions/tutorial.rs:1:24
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]   |                        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde::Deserialize`
[INFO] [stdout]  --> truncate_client/src/regions/tutorial.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde::Deserialize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused macro definition: `tr_log`
[INFO] [stdout]  --> truncate_client/src/utils/macros.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | macro_rules! tr_log {
[INFO] [stdout]   |              ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_macros)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ImageMusher`
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 19 |         mapper::{ImageMusher, MappedBoard, MappedTileVariant},
[INFO] [stdout]    |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `msg`
[INFO] [stdout]   --> truncate_client/src/app_outer.rs:86:28
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub fn send_msg(&self, msg: BackchannelMsg) -> Option<String> {
[INFO] [stdout]    |                            ^^^ help: if this is intentional, prefix it with an underscore: `_msg`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:166:13
[INFO] [stdout]     |
[INFO] [stdout] 166 |         let mut game_status = app_inner::GameStatus::None("".into(), None);
[INFO] [stdout]     |             ----^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:167:13
[INFO] [stdout]     |
[INFO] [stdout] 167 |         let mut player_name = "___AUTO___".to_string();
[INFO] [stdout]     |             ----^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:168:13
[INFO] [stdout]     |
[INFO] [stdout] 168 |         let mut player_token: Option<String> = 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]    --> truncate_client/src/app_outer.rs:170:13
[INFO] [stdout]     |
[INFO] [stdout] 170 |         let mut screen_width = 0;
[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]    --> truncate_client/src/app_outer.rs:171:13
[INFO] [stdout]     |
[INFO] [stdout] 171 |         let mut screen_height = 0;
[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]    --> truncate_client/src/app_outer.rs:172:13
[INFO] [stdout]     |
[INFO] [stdout] 172 |         let mut user_agent = String::new();
[INFO] [stdout]     |             ----^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:173:13
[INFO] [stdout]     |
[INFO] [stdout] 173 |         let mut referrer = String::new();
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `glypher`
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:363:39
[INFO] [stdout]     |
[INFO] [stdout] 363 | fn load_textures(ctx: &egui::Context, glypher: &Glypher, launched_at_day: u32) -> TextureHandle {
[INFO] [stdout]     |                                       ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_glypher`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]   --> truncate_client/src/handle_messages.rs:36:72
[INFO] [stdout]    |
[INFO] [stdout] 36 |             GameMessage::JoinedLobby(player_index, id, players, board, token) => {
[INFO] [stdout]    |                                                                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `theme` is assigned to, but never used
[INFO] [stdout]    --> truncate_client/src/lil_bits/battle.rs:234:13
[INFO] [stdout]     |
[INFO] [stdout] 234 |         let mut theme = aesthetics.theme.rescale(0.5);
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_theme` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `theme` is never read
[INFO] [stdout]    --> truncate_client/src/lil_bits/battle.rs:235:9
[INFO] [stdout]     |
[INFO] [stdout] 235 |         theme.tile_margin = 0.0;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hand`
[INFO] [stdout]   --> truncate_client/src/lil_bits/board.rs:43:9
[INFO] [stdout]    |
[INFO] [stdout] 43 |         hand: &Hand,
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_hand`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `button_size`
[INFO] [stdout]   --> truncate_client/src/regions/active_game/dictionary.rs:45:17
[INFO] [stdout]    |
[INFO] [stdout] 45 |             let button_size = 48.0;
[INFO] [stdout]    |                 ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_button_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> truncate_client/src/regions/active_game/mod.rs:95:13
[INFO] [stdout]    |
[INFO] [stdout] 95 |         let mut depot = TruncateDepot {
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:95:9
[INFO] [stdout]    |
[INFO] [stdout] 95 |         ctx: &egui::Context,
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `char`
[INFO] [stdout]    --> truncate_client/src/regions/rules.rs:307:55
[INFO] [stdout]     |
[INFO] [stdout] 307 | ...                   PieceLayer::Character(char, color, is_flipped, y_offset) => {
[INFO] [stdout]     |                                             ^^^^ help: if this is intentional, prefix it with an underscore: `_char`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `color`
[INFO] [stdout]    --> truncate_client/src/regions/rules.rs:307:61
[INFO] [stdout]     |
[INFO] [stdout] 307 | ...                   PieceLayer::Character(char, color, is_flipped, y_offset) => {
[INFO] [stdout]     |                                                   ^^^^^ help: if this is intentional, prefix it with an underscore: `_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `is_flipped`
[INFO] [stdout]    --> truncate_client/src/regions/rules.rs:307:68
[INFO] [stdout]     |
[INFO] [stdout] 307 | ...                   PieceLayer::Character(char, color, is_flipped, y_offset) => {
[INFO] [stdout]     |                                                          ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_flipped`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y_offset`
[INFO] [stdout]    --> truncate_client/src/regions/rules.rs:307:80
[INFO] [stdout]     |
[INFO] [stdout] 307 | ...                   PieceLayer::Character(char, color, is_flipped, y_offset) => {
[INFO] [stdout]     |                                                                      ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_y_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> truncate_client/src/utils/mapper/mod.rs:841:13
[INFO] [stdout]     |
[INFO] [stdout] 841 |         let mut render_pieces = |cache: &Vec<PieceLayer>,
[INFO] [stdout]     |             ----^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::rules`
[INFO] [stdout]  --> truncate_core/src/bag.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::rules;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `FilterMap`
[INFO] [stdout]  --> truncate_core/src/board.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::iter::{FilterMap, Flatten};
[INFO] [stdout]   |                 ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `player`
[INFO] [stdout]   --> truncate_core/src/board.rs:15:13
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::{player, rules};
[INFO] [stdout]    |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops::Sub`
[INFO] [stdout]  --> truncate_core/src/game.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::ops::Sub;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mul`
[INFO] [stdout]  --> truncate_core/src/generation.rs:3:21
[INFO] [stdout]   |
[INFO] [stdout] 3 |     ops::{Add, Div, Mul},
[INFO] [stdout]   |                     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BoardSeed`
[INFO] [stdout]  --> truncate_core/src/rules.rs:8:69
[INFO] [stdout]   |
[INFO] [stdout] 8 |         ArtifactType, BoardElements, BoardNoiseParams, BoardParams, BoardSeed, Symmetry, WaterLayer,
[INFO] [stdout]   |                                                                     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `neighbors`
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:433:37
[INFO] [stdout]     |
[INFO] [stdout] 433 |     pub fn artifact(color: Color32, neighbors: Vec<BGTexType>, wind_at_coord: u8) -> TexLayers {
[INFO] [stdout]     |                                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neighbors`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `wind_at_coord`
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:433:64
[INFO] [stdout]     |
[INFO] [stdout] 433 |     pub fn artifact(color: Color32, neighbors: Vec<BGTexType>, wind_at_coord: u8) -> TexLayers {
[INFO] [stdout]     |                                                                ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_wind_at_coord`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `wind_at_coord`
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:505:57
[INFO] [stdout]     |
[INFO] [stdout] 505 |     pub fn town(color: Color32, seed: usize, tick: u64, wind_at_coord: u8) -> TexLayers {
[INFO] [stdout]     |                                                         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_wind_at_coord`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling sqlx-macros v0.8.3
[INFO] [stdout] warning: enum `GameStatus` is never used
[INFO] [stdout]   --> truncate_client/src/app_inner.rs:33:10
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum GameStatus {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AppInnerStorage` is never constructed
[INFO] [stdout]   --> truncate_client/src/app_inner.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct AppInnerStorage {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render` is never used
[INFO] [stdout]   --> truncate_client/src/app_inner.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn render(outer: &mut OuterApplication, ui: &mut egui::Ui, current_time: Duration) {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `R` is never used
[INFO] [stdout]  --> truncate_client/src/app_outer.rs:6:6
[INFO] [stdout]   |
[INFO] [stdout] 6 | type R = Receiver<GameMessage>;
[INFO] [stdout]   |      ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `S` is never used
[INFO] [stdout]  --> truncate_client/src/app_outer.rs:7:6
[INFO] [stdout]   |
[INFO] [stdout] 7 | type S = Sender<PlayerMessage>;
[INFO] [stdout]   |      ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ART_CHANGE_DAY` is never used
[INFO] [stdout]   --> truncate_client/src/app_outer.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const ART_CHANGE_DAY: u32 = 293;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Backchannel` is never constructed
[INFO] [stdout]   --> truncate_client/src/app_outer.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct Backchannel {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BackchannelMsg` is never used
[INFO] [stdout]   --> truncate_client/src/app_outer.rs:38:10
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub enum BackchannelMsg {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ShareType` is never used
[INFO] [stdout]   --> truncate_client/src/app_outer.rs:61:10
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub enum ShareType {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `is_open`, and `send_msg` are never used
[INFO] [stdout]   --> truncate_client/src/app_outer.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 67 | impl Backchannel {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 68 |     pub fn new(#[cfg(target_arch = "wasm32")] backchannel: js_sys::Function) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn is_open(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn send_msg(&self, msg: BackchannelMsg) -> Option<String> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TEXTURE_MEASUREMENT` is never used
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:102:12
[INFO] [stdout]     |
[INFO] [stdout] 102 | pub static TEXTURE_MEASUREMENT: OnceLock<TextureMeasurement> = OnceLock::new();
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TEXTURE_IMAGE` is never used
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub static TEXTURE_IMAGE: OnceLock<egui::ColorImage> = OnceLock::new();
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `GLYPHER` is never used
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:104:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub static GLYPHER: OnceLock<Glypher> = OnceLock::new();
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OuterApplication` is never constructed
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct OuterApplication {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:127:12
[INFO] [stdout]     |
[INFO] [stdout] 126 | impl OuterApplication {
[INFO] [stdout]     | --------------------- associated function in this implementation
[INFO] [stdout] 127 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EventDispatcher` is never constructed
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:314:12
[INFO] [stdout]     |
[INFO] [stdout] 314 | pub struct EventDispatcher {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `event` is never used
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:321:12
[INFO] [stdout]     |
[INFO] [stdout] 319 | impl EventDispatcher {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] 320 |     /// Tracks an event, deduplicating all sends for the lifetime of this EventDispatcher
[INFO] [stdout] 321 |     pub fn event(&mut self, name: impl AsRef<str>) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TextureMeasurement` is never constructed
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:348:12
[INFO] [stdout]     |
[INFO] [stdout] 348 | pub struct TextureMeasurement {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_textures` is never used
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:363:4
[INFO] [stdout]     |
[INFO] [stdout] 363 | fn load_textures(ctx: &egui::Context, glypher: &Glypher, launched_at_day: u32) -> TextureHandle {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `setup_repaint_truncate_animations` is never used
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:420:4
[INFO] [stdout]     |
[INFO] [stdout] 420 | fn setup_repaint_truncate_animations(egui_ctx: egui::Context) -> std::thread::JoinHandle<()> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FrameHistory` is never constructed
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:450:16
[INFO] [stdout]     |
[INFO] [stdout] 450 |     pub struct FrameHistory {
[INFO] [stdout]     |                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `on_new_frame` and `ui` are never used
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:466:16
[INFO] [stdout]     |
[INFO] [stdout] 464 |     impl FrameHistory {
[INFO] [stdout]     |     ----------------- methods in this implementation
[INFO] [stdout] 465 |         // Called first
[INFO] [stdout] 466 |         pub fn on_new_frame(&mut self, now: f64, previous_frame_time: Option<f32>) {
[INFO] [stdout]     |                ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 474 |         pub fn ui(&mut self, ui: &mut egui::Ui) {
[INFO] [stdout]     |                ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_launch_code` is never used
[INFO] [stdout]   --> truncate_client/src/handle_launch_code.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn handle_launch_code(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_server_msg` is never used
[INFO] [stdout]   --> truncate_client/src/handle_messages.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn handle_server_msg(outer: &mut OuterApplication, ui: &mut egui::Ui) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BattleUI` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/battle.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct BattleUI<'a> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/battle.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl<'a> BattleUI<'a> {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 23 |     pub fn new(battle: &'a BattleReport, show_headline: bool) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BattleUIState` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/battle.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | struct BattleUIState {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_galleys`, `paint_galleys`, `render`, and `render_innards` are never used
[INFO] [stdout]    --> truncate_client/src/lil_bits/battle.rs:40:8
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl<'a> BattleUI<'a> {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout]  40 |     fn get_galleys(
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     fn paint_galleys(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn render(self, ui: &mut egui::Ui, depot: &mut TruncateDepot) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 225 |     fn render_innards(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BoardUI` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/board.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct BoardUI<'a> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `interactive` are never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/board.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl<'a> BoardUI<'a> {
[INFO] [stdout]    | -------------------- associated items in this implementation
[INFO] [stdout] 26 |     pub fn new(board: &'a Board) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn interactive(mut self, interactive: bool) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `render` is never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/board.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl<'a> BoardUI<'a> {
[INFO] [stdout]    | -------------------- method in this implementation
[INFO] [stdout] 40 |     // TODO: Refactor board
[INFO] [stdout] 41 |     pub fn render(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `EditorDrag` is never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/board_editor.rs:24:6
[INFO] [stdout]    |
[INFO] [stdout] 24 | enum EditorDrag {
[INFO] [stdout]    |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EditorUI` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/board_editor.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct EditorUI<'a> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/board_editor.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl<'a> EditorUI<'a> {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 41 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `render` is never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/board_editor.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl<'a> EditorUI<'a> {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] 57 |     pub fn render(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EditorSquareUI` is never constructed
[INFO] [stdout]  --> truncate_client/src/lil_bits/board_editor_square.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct EditorSquareUI {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `square`, `action`, and `render` are never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/board_editor_square.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl EditorSquareUI {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 15 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn square(mut self, square: Square) -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn action(mut self, action: BoardEditingMode) -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn render(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SplashButton` is never constructed
[INFO] [stdout]  --> truncate_client/src/lil_bits/changes_splash.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | struct SplashButton {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ChangelogSplashUI` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/changes_splash.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct ChangelogSplashUI {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SplashResponse` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/changes_splash.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct SplashResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `animated`, and `with_button` are never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/changes_splash.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl ChangelogSplashUI {
[INFO] [stdout]    | ---------------------- associated items in this implementation
[INFO] [stdout] 28 |     pub fn new(message: Vec<String>, opened_at: Duration) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn animated(mut self, animated: bool) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn with_button(mut self, id: &'static str, text: String, color: Color32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `render` is never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/changes_splash.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | impl ChangelogSplashUI {
[INFO] [stdout]    | ---------------------- method in this implementation
[INFO] [stdout] 50 |     pub fn render(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DictionaryUI` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/dictionary.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct DictionaryUI {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `load_definitions`, and `render` are never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/dictionary.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl DictionaryUI {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 33 |     pub fn new(initial_focus: bool) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn load_definitions(&mut self, definitions: Vec<(String, Option<Vec<WordMeaning>>)>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn render(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HandUI` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/hand.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct HandUI<'a> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `active`, and `interactive` are never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/hand.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl<'a> HandUI<'a> {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 21 |     pub fn new(hand: &'a mut Hand) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn active(mut self, active: bool) -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn interactive(mut self, interactive: bool) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `render` is never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/hand.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl<'a> HandUI<'a> {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] 41 |     pub fn render(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `render` are never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/hand_square.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl HandSquareUI {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 14 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn render(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResultModalDaily` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/result_modal/mod.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct ResultModalDaily {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResultModalUnique` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/result_modal/mod.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct ResultModalUnique {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResultModalResigning` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/result_modal/mod.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct ResultModalResigning {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResultModalLoading` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/result_modal/mod.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct ResultModalLoading {}
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ResultModalVariant` is never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/result_modal/mod.rs:56:10
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub enum ResultModalVariant {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResultModalUI` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/result_modal/mod.rs:64:12
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub struct ResultModalUI {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new_daily`, `new_unique`, `new_resigning`, and `new_loading` are never used
[INFO] [stdout]    --> truncate_client/src/lil_bits/result_modal/mod.rs:69:12
[INFO] [stdout]     |
[INFO] [stdout]  68 | impl ResultModalUI {
[INFO] [stdout]     | ------------------ associated functions in this implementation
[INFO] [stdout]  69 |     pub fn new_daily(
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn new_unique(
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn new_resigning(ui: &mut egui::Ui, msg: String) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn new_loading(ui: &mut egui::Ui) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Anim` is never used
[INFO] [stdout]    --> truncate_client/src/lil_bits/result_modal/mod.rs:160:6
[INFO] [stdout]     |
[INFO] [stdout] 160 | enum Anim {
[INFO] [stdout]     |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `seed_animations` and `anim` are never used
[INFO] [stdout]    --> truncate_client/src/lil_bits/result_modal/mod.rs:174:8
[INFO] [stdout]     |
[INFO] [stdout] 173 | impl ResultModalUI {
[INFO] [stdout]     | ------------------ associated functions in this implementation
[INFO] [stdout] 174 |     fn seed_animations(ui: &mut egui::Ui) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     fn anim(ui: &mut egui::Ui, val: Anim, to: f32, duration: f32) -> f32 {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ResultModalAction` is never used
[INFO] [stdout]    --> truncate_client/src/lil_bits/result_modal/mod.rs:193:10
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub enum ResultModalAction {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `render_close` and `render` are never used
[INFO] [stdout]    --> truncate_client/src/lil_bits/result_modal/mod.rs:203:8
[INFO] [stdout]     |
[INFO] [stdout] 202 | impl ResultModalUI {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] 203 |     fn render_close(
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     pub fn render(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DailyActions` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/result_modal/daily_actions.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct DailyActions {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `reset_buttons`, `render_shares`, and `render` are never used
[INFO] [stdout]    --> truncate_client/src/lil_bits/result_modal/daily_actions.rs:29:12
[INFO] [stdout]     |
[INFO] [stdout]  28 | impl DailyActions {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout]  29 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     fn reset_buttons(&mut self, depot: &TruncateDepot) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub fn render_shares(
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     pub fn render(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DayHighlight` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/result_modal/graph.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | struct DayHighlight {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DailySplashGraph` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/result_modal/graph.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct DailySplashGraph {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `render` are never used
[INFO] [stdout]    --> truncate_client/src/lil_bits/result_modal/graph.rs:38:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl DailySplashGraph {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout]  38 |     pub fn new(ui: &mut egui::Ui, stats: &DailyStats, current_time: Duration) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn render(&self, ui: &mut egui::Ui, graph_rect: Rect) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ShareMessageMock` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/result_modal/msg_mock.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct ShareMessageMock {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_daily`, `new_unique`, and `render` are never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/result_modal/msg_mock.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl ShareMessageMock {
[INFO] [stdout]    | --------------------- associated items in this implementation
[INFO] [stdout] 27 |     pub fn new_daily(
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn new_unique(game: &Game, depot: &TruncateDepot) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn render(&mut self, ui: &mut egui::Ui, _theme: &Theme, _map_texture: &TextureHandle) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `daily_share_message` and `unique_share_message` are never used
[INFO] [stdout]    --> truncate_client/src/lil_bits/result_modal/msg_mock.rs:144:12
[INFO] [stdout]     |
[INFO] [stdout] 143 | impl ShareMessageMock {
[INFO] [stdout]     | --------------------- associated functions in this implementation
[INFO] [stdout] 144 |     pub fn daily_share_message(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     pub fn unique_share_message(game: &Game, depot: &TruncateDepot) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SplashButton` is never constructed
[INFO] [stdout]  --> truncate_client/src/lil_bits/splash.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | struct SplashButton {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SplashUI` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/splash.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct SplashUI {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SplashResponse` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/splash.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct SplashResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `animated`, `byline`, and `with_button` are never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/splash.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl SplashUI {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 28 |     pub fn new(message: Vec<String>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn animated(mut self, animated: bool) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn byline(mut self, text: Vec<String>) -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn with_button(
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `render` is never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/splash.rs:65:12
[INFO] [stdout]    |
[INFO] [stdout] 64 | impl SplashUI {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 65 |     pub fn render(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TimerUI` is never constructed
[INFO] [stdout]  --> truncate_client/src/lil_bits/timer.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct TimerUI<'a> {
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `friend`, `active`, and `right_align` are never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/timer.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl<'a> TimerUI<'a> {
[INFO] [stdout]    | -------------------- associated items in this implementation
[INFO] [stdout] 20 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn friend(mut self, friend: bool) -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn active(mut self, active: bool) -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn right_align(mut self) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `get_time_color`, `human_time`, `calculate_time`, `calculate_byline`, `render_inner`, and `render` are never used
[INFO] [stdout]    --> truncate_client/src/lil_bits/timer.rs:59:8
[INFO] [stdout]     |
[INFO] [stdout]  58 | impl<'a> TimerUI<'a> {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout]  59 |     fn get_time_color(&self) -> Color32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     fn human_time(seconds: i64, absolute: bool) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     fn calculate_time(&mut self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     fn calculate_byline(&mut self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn render_inner(&mut self, ui: &mut egui::Ui) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 317 |     pub fn render(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `HeaderType` is never used
[INFO] [stdout]   --> truncate_client/src/regions/active_game/mod.rs:39:10
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub enum HeaderType {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `GameLocation` is never used
[INFO] [stdout]   --> truncate_client/src/regions/active_game/mod.rs:50:10
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub enum GameLocation {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ActiveGame` is never constructed
[INFO] [stdout]   --> truncate_client/src/regions/active_game/mod.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct ActiveGame {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> truncate_client/src/regions/active_game/mod.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | impl ActiveGame {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 74 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `render`, `apply_new_timing`, and `apply_new_state` are never used
[INFO] [stdout]    --> truncate_client/src/regions/active_game/mod.rs:166:12
[INFO] [stdout]     |
[INFO] [stdout] 165 | impl ActiveGame {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 166 |     pub fn render(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn apply_new_timing(&mut self, state_message: GameStateMessage) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 284 |     pub fn apply_new_state(&mut self, state_message: GameStateMessage) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `render_actions_menu` is never used
[INFO] [stdout]   --> truncate_client/src/regions/active_game/actions_menu.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl ActiveGame {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 18 |     pub fn render_actions_menu(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `render_control_strip` is never used
[INFO] [stdout]   --> truncate_client/src/regions/active_game/control_strip.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl ActiveGame {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 21 |     pub fn render_control_strip(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `render_dictionary` is never used
[INFO] [stdout]   --> truncate_client/src/regions/active_game/dictionary.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl ActiveGame {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 18 |     pub fn render_dictionary(&mut self, ui: &mut egui::Ui) -> Option<PlayerMessage> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `render_header_strip` is never used
[INFO] [stdout]   --> truncate_client/src/regions/active_game/header_strip.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl ActiveGame {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 21 |     pub fn render_header_strip(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `render_sidebar` is never used
[INFO] [stdout]   --> truncate_client/src/regions/active_game/sidebar.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl ActiveGame {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 18 |     pub fn render_sidebar(&mut self, ui: &mut egui::Ui) -> Option<PlayerMessage> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GeneratorState` is never constructed
[INFO] [stdout]   --> truncate_client/src/regions/generator.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct GeneratorState {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `render` are never used
[INFO] [stdout]   --> truncate_client/src/regions/generator.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl GeneratorState {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 27 |     pub fn new(ctx: &egui::Context, map_texture: TextureHandle, theme: Theme, day: u32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn render(&mut self, ui: &mut egui::Ui, _theme: &Theme, current_time: Duration) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BoardEditingMode` is never used
[INFO] [stdout]   --> truncate_client/src/regions/lobby.rs:25:10
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub enum BoardEditingMode {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Lobby` is never constructed
[INFO] [stdout]   --> truncate_client/src/regions/lobby.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct Lobby {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update_board`, `render_lobby`, and `render` are never used
[INFO] [stdout]    --> truncate_client/src/regions/lobby.rs:47:12
[INFO] [stdout]     |
[INFO] [stdout]  46 | impl Lobby {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout]  47 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn update_board(&mut self, board: Board, ui: &mut egui::Ui) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub fn render_lobby(&mut self, ui: &mut egui::Ui, theme: &Theme) -> Option<PlayerMessage> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub fn render(&mut self, ui: &mut egui::Ui, theme: &Theme) -> Option<PlayerMessage> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_native_menu_if_required` is never used
[INFO] [stdout]   --> truncate_client/src/regions/native_menu.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub fn render_native_menu_if_required(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PlaybackSpeed` is never used
[INFO] [stdout]   --> truncate_client/src/regions/replayer.rs:24:6
[INFO] [stdout]    |
[INFO] [stdout] 24 | enum PlaybackSpeed {
[INFO] [stdout]    |      ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `ticks` is never used
[INFO] [stdout]   --> truncate_client/src/regions/replayer.rs:31:8
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl PlaybackSpeed {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 31 |     fn ticks(&self) -> u64 {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayerState` is never constructed
[INFO] [stdout]   --> truncate_client/src/regions/replayer.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct ReplayerState {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `play_next_turn`, and `render` are never used
[INFO] [stdout]    --> truncate_client/src/regions/replayer.rs:58:12
[INFO] [stdout]     |
[INFO] [stdout]  57 | impl ReplayerState {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  58 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn play_next_turn(&mut self, current_time: Duration, qs_tick: u64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn render(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RULE_PLAYER_COLORS` is never used
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:31:11
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub const RULE_PLAYER_COLORS: [Color32; 2] = [
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RuleCardAction` is never used
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:36:10
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub enum RuleCardAction {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParsedRuleCard` is never constructed
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct ParsedRuleCard {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParsedRuleCardSection` is never constructed
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct ParsedRuleCardSection {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParsedRuleCardExample` is never constructed
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct ParsedRuleCardExample {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_rule_card` is never used
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:61:4
[INFO] [stdout]    |
[INFO] [stdout] 61 | fn parse_rule_card(rules: RuleCard, theme: &Theme) -> ParsedRuleCard {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RulesState` is never constructed
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:83:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub struct RulesState {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `render` are never used
[INFO] [stdout]    --> truncate_client/src/regions/rules.rs:94:12
[INFO] [stdout]     |
[INFO] [stdout]  93 | impl RulesState {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  94 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub fn render(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_rule_example` is never used
[INFO] [stdout]    --> truncate_client/src/regions/rules.rs:435:4
[INFO] [stdout]     |
[INFO] [stdout] 435 | fn parse_rule_example(example: String, theme: &Theme) -> ParsedRuleCardExample {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SinglePlayerState` is never constructed
[INFO] [stdout]   --> truncate_client/src/regions/single_player.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct SinglePlayerState {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> truncate_client/src/regions/single_player.rs:55:12
[INFO] [stdout]     |
[INFO] [stdout]  54 | impl SinglePlayerState {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout]  55 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     fn sub_event(&mut self, event: String) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn reset(
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     pub fn reset_to(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn hydrate_meanings(&mut self, definitions: Vec<(String, Option<Vec<WordMeaning>>)>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     pub fn handle_move(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 385 |     pub fn render(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pos_to_coord` is never used
[INFO] [stdout]   --> truncate_client/src/regions/tutorial.rs:33:4
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn pos_to_coord(pos: &str) -> Option<Coordinate> {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `action_to_move` is never used
[INFO] [stdout]   --> truncate_client/src/regions/tutorial.rs:42:4
[INFO] [stdout]    |
[INFO] [stdout] 42 | fn action_to_move(player: usize, action: &str) -> Move {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ChangeStage` is never used
[INFO] [stdout]   --> truncate_client/src/regions/tutorial.rs:77:6
[INFO] [stdout]    |
[INFO] [stdout] 77 | enum ChangeStage {
[INFO] [stdout]    |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TutorialState` is never constructed
[INFO] [stdout]   --> truncate_client/src/regions/tutorial.rs:83:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub struct TutorialState {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TutorialStage` is never constructed
[INFO] [stdout]   --> truncate_client/src/regions/tutorial.rs:93:8
[INFO] [stdout]    |
[INFO] [stdout] 93 | struct TutorialStage {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_step`, `highlight_interactions`, `render_game`, `get_dialog_position`, `increment_step`, and `handle_move` are never used
[INFO] [stdout]    --> truncate_client/src/regions/tutorial.rs:102:8
[INFO] [stdout]     |
[INFO] [stdout] 101 | impl TutorialStage {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] 102 |     fn get_step(&self) -> Option<&ScenarioStep> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     fn highlight_interactions(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     fn render_game(&mut self, ui: &mut egui::Ui, current_time: Duration) -> Option<PlayerMessage> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     fn get_dialog_position(&self) -> Option<Rect> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     fn increment_step(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     fn handle_move(&mut self, next_move: Move) -> Result<(), ()> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> truncate_client/src/regions/tutorial.rs:199:12
[INFO] [stdout]     |
[INFO] [stdout] 198 | impl TutorialState {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 199 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn load_definitions(&mut self, definitions: Vec<(String, Option<Vec<WordMeaning>>)>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     fn get_nth_scenario(tutorial: &Tutorial, index: usize) -> Option<(&String, &Scenario)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 239 |     fn get_stage(
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 345 |     fn can_increment_stage(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 349 |     fn increment_stage(&mut self, ctx: &egui::Context, map_texture: TextureHandle, theme: &Theme) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 355 |     fn can_decrement_stage(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 359 |     fn decrement_stage(&mut self, ctx: &egui::Context, map_texture: TextureHandle, theme: &Theme) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 365 |     fn sub_event(&mut self, event: String) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 370 |     pub fn render(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NUM_KEYS` is never used
[INFO] [stdout]   --> truncate_client/src/utils/control_devices/keyboard.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const NUM_KEYS: [Key; 9] = [
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_input` is never used
[INFO] [stdout]   --> truncate_client/src/utils/control_devices/keyboard.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn handle_input(
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SEED_NOTES` is never used
[INFO] [stdout]   --> truncate_client/src/utils/daily.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 | const SEED_NOTES: &[u8] = include_bytes!("../../../truncate_dueller/seed_notes.yml");
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DAILY_PUZZLE_DAY_ZERO` is never used
[INFO] [stdout]   --> truncate_client/src/utils/daily.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub const DAILY_PUZZLE_DAY_ZERO: usize = 19751;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SeedNote` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/daily.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct SeedNote {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NotesFile` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/daily.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct NotesFile {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_puzzle_day` is never used
[INFO] [stdout]   --> truncate_client/src/utils/daily.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub fn get_puzzle_day(current_time: Duration) -> u32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `HumanStarts` is never used
[INFO] [stdout]   --> truncate_client/src/utils/daily.rs:52:10
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub type HumanStarts = bool;
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_raw_daily_puzzle` is never used
[INFO] [stdout]   --> truncate_client/src/utils/daily.rs:53:8
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub fn get_raw_daily_puzzle(day: u32) -> (BoardSeed, Option<(HumanStarts, SeedNote)>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_playable_daily_puzzle` is never used
[INFO] [stdout]   --> truncate_client/src/utils/daily.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub fn get_playable_daily_puzzle(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HoveredRegion` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/depot.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct HoveredRegion {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InteractionDepot` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/depot.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct InteractionDepot {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RegionDepot` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/depot.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct RegionDepot {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UIStateDepot` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/depot.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct UIStateDepot {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BoardDepot` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/depot.rs:69:12
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub struct BoardDepot {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TimingDepot` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/depot.rs:88:12
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub struct TimingDepot {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GameplayDepot` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/depot.rs:96:12
[INFO] [stdout]    |
[INFO] [stdout] 96 | pub struct GameplayDepot {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AestheticDepot` is never constructed
[INFO] [stdout]    --> truncate_client/src/utils/depot.rs:109:12
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub struct AestheticDepot {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AudioDepot` is never constructed
[INFO] [stdout]    --> truncate_client/src/utils/depot.rs:119:12
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub struct AudioDepot {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TruncateDepot` is never constructed
[INFO] [stdout]    --> truncate_client/src/utils/depot.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct TruncateDepot {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TRUNCATE_DICT` is never used
[INFO] [stdout]   --> truncate_client/src/utils/game_evals.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub static TRUNCATE_DICT: &str = include_str!("../../../dict_builder/final_wordlist.txt");
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TOTAL_DICT` is never used
[INFO] [stdout]   --> truncate_client/src/utils/game_evals.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | static TOTAL_DICT: Mutex<Option<WordDict>> = Mutex::new(None);
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `SMALL_VOCAB_DICT_SAFE` is never used
[INFO] [stdout]   --> truncate_client/src/utils/game_evals.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | static SMALL_VOCAB_DICT_SAFE: Mutex<Option<WordDict>> = Mutex::new(None);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `MEDIUM_VOCAB_DICT_SAFE` is never used
[INFO] [stdout]   --> truncate_client/src/utils/game_evals.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | static MEDIUM_VOCAB_DICT_SAFE: Mutex<Option<WordDict>> = Mutex::new(None);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `LARGE_VOCAB_DICT_UNSAFE` is never used
[INFO] [stdout]   --> truncate_client/src/utils/game_evals.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | static LARGE_VOCAB_DICT_UNSAFE: Mutex<Option<WordDict>> = Mutex::new(None);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_dicts` is never used
[INFO] [stdout]   --> truncate_client/src/utils/game_evals.rs:17:4
[INFO] [stdout]    |
[INFO] [stdout] 17 | fn ensure_dicts() {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_main_dict` is never used
[INFO] [stdout]   --> truncate_client/src/utils/game_evals.rs:98:8
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub fn get_main_dict() -> MutexGuard<'static, Option<WordDict>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `client_best_move` is never used
[INFO] [stdout]    --> truncate_client/src/utils/game_evals.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub fn client_best_move(game: &Game, npc_params: &NPCParams) -> PlayerMessage {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `remember` is never used
[INFO] [stdout]    --> truncate_client/src/utils/game_evals.rs:140:8
[INFO] [stdout]     |
[INFO] [stdout] 140 | pub fn remember(word: &String) {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `forget` is never used
[INFO] [stdout]    --> truncate_client/src/utils/game_evals.rs:170:8
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub fn forget() {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InnerGlypher` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/glyph_utils.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | struct InnerGlypher {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `cached_paint` are never used
[INFO] [stdout]   --> truncate_client/src/utils/glyph_utils.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl InnerGlypher {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 16 |     fn new() -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     fn cached_paint(&mut self, glyph_id: char, scale: usize) -> ColorImage {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `paint` is never used
[INFO] [stdout]   --> truncate_client/src/utils/glyph_utils.rs:34:4
[INFO] [stdout]    |
[INFO] [stdout] 34 | fn paint(font: &FontRef<'static>, glyph_id: char, scale: usize) -> ColorImage {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Glypher` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/glyph_utils.rs:65:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub struct Glypher {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `paint` are never used
[INFO] [stdout]   --> truncate_client/src/utils/glyph_utils.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 69 | impl Glypher {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 70 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn paint(&self, glyph_id: char, scale: usize) -> ColorImage {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BaseTileGlyphs` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/glyph_utils.rs:81:12
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct BaseTileGlyphs {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Tutorial` is never constructed
[INFO] [stdout]  --> truncate_client/src/utils/includes.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Tutorial {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Category` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/includes.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct Category {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Scenario` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/includes.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct Scenario {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ScenarioStep` is never used
[INFO] [stdout]   --> truncate_client/src/utils/includes.rs:30:10
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub enum ScenarioStep {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ChangePriority` is never used
[INFO] [stdout]   --> truncate_client/src/utils/includes.rs:50:10
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub enum ChangePriority {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tutorial` is never used
[INFO] [stdout]   --> truncate_client/src/utils/includes.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub fn tutorial(for_day: u32) -> Tutorial {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `changelogs` is never used
[INFO] [stdout]   --> truncate_client/src/utils/includes.rs:69:8
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub fn changelogs() -> HashMap<&'static str, Tutorial> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RuleCard` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/includes.rs:90:12
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub struct RuleCard {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RuleCardSection` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/includes.rs:95:12
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub struct RuleCardSection {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rule_card` is never used
[INFO] [stdout]    --> truncate_client/src/utils/includes.rs:101:8
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub fn rule_card() -> RuleCard {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `WantsRepaint` is never used
[INFO] [stdout]   --> truncate_client/src/utils/mapper/mod.rs:30:6
[INFO] [stdout]    |
[INFO] [stdout] 30 | type WantsRepaint = bool;
[INFO] [stdout]    |      ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResolvedTextureLayers` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/mapper/mod.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | struct ResolvedTextureLayers {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> truncate_client/src/utils/mapper/mod.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl ResolvedTextureLayers {
[INFO] [stdout]    | -------------------------- associated function in this implementation
[INFO] [stdout] 44 |     fn new(
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MapState` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/mapper/mod.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | struct MapState {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MappedBoard` is never constructed
[INFO] [stdout]    --> truncate_client/src/utils/mapper/mod.rs:110:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub struct MappedBoard {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> truncate_client/src/utils/mapper/mod.rs:130:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | impl MappedBoard {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 130 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn buffer(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn render_to_rect(&self, rect: Rect, ui_state: Option<&UIStateDepot>, ui: &mut egui::Ui) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn render_coord_to_rect(&self, mut coord: Coordinate, rect: Rect, ui: &mut egui::Ui) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     fn wind_vane(&mut self, tick: u64) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     fn paint_square_offscreen(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 922 |     pub fn remap_texture(
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MappedTileVariant` is never used
[INFO] [stdout]     --> truncate_client/src/utils/mapper/mod.rs:1103:10
[INFO] [stdout]      |
[INFO] [stdout] 1103 | pub enum MappedTileVariant {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MappedTile` is never constructed
[INFO] [stdout]     --> truncate_client/src/utils/mapper/mod.rs:1111:12
[INFO] [stdout]      |
[INFO] [stdout] 1111 | pub struct MappedTile {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MappedTiles` is never constructed
[INFO] [stdout]     --> truncate_client/src/utils/mapper/mod.rs:1120:12
[INFO] [stdout]      |
[INFO] [stdout] 1120 | pub struct MappedTiles {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `reset_texture`, `remap_texture`, and `render_tile_to_rect` are never used
[INFO] [stdout]     --> truncate_client/src/utils/mapper/mod.rs:1129:12
[INFO] [stdout]      |
[INFO] [stdout] 1128 | impl MappedTiles {
[INFO] [stdout]      | ---------------- associated items in this implementation
[INFO] [stdout] 1129 |     pub fn new(egui_ctx: &egui::Context, capacity: usize) -> Self {
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1140 |     fn reset_texture(capacity: usize, egui_ctx: &egui::Context) -> TextureHandle {
[INFO] [stdout]      |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1155 |     pub fn remap_texture(
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1258 |     pub fn render_tile_to_rect(&self, slot: usize, rect: Rect, ui: &mut egui::Ui) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `quickrand` is never used
[INFO] [stdout]     --> truncate_client/src/utils/mapper/mod.rs:1271:8
[INFO] [stdout]      |
[INFO] [stdout] 1271 | pub fn quickrand(mut n: usize) -> usize {
[INFO] [stdout]      |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ImageMusher` is never used
[INFO] [stdout]  --> truncate_client/src/utils/mapper/image_manipulation.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub trait ImageMusher {
[INFO] [stdout]   |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `alpha_blend` is never used
[INFO] [stdout]    --> truncate_client/src/utils/mapper/image_manipulation.rs:118:8
[INFO] [stdout]     |
[INFO] [stdout] 118 | pub fn alpha_blend(base: Color32, overlay: Color32, overlay_opacity: Option<f32>) -> Color32 {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `current_tint` is never used
[INFO] [stdout]   --> truncate_client/src/utils/tex/mod.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl Tex {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] 23 |     pub fn current_tint(&self) -> Option<Color32> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `IsFlipped` is never used
[INFO] [stdout]   --> truncate_client/src/utils/tex/mod.rs:29:10
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub type IsFlipped = bool;
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `YOffset` is never used
[INFO] [stdout]   --> truncate_client/src/utils/tex/mod.rs:30:10
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub type YOffset = isize;
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PieceLayer` is never used
[INFO] [stdout]   --> truncate_client/src/utils/tex/mod.rs:33:10
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum PieceLayer {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TexLayers` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/tex/mod.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct TexLayers {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:50:8
[INFO] [stdout]     |
[INFO] [stdout]  49 | impl TexLayers {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout]  50 |     fn with_terrain(mut self, quad: TexQuad) -> Self {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  55 |     fn with_structures(mut self, quad: TexQuad) -> Self {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     fn with_mist(mut self, quad: TexQuad) -> Self {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  65 |     fn with_fog(mut self, quad: TexQuad) -> Self {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     fn with_piece_texture(mut self, quad: TexQuad, color: Option<Color32>) -> Self {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     fn with_piece_character(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn into_piece_validity(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn merge_above_self(mut self, other: TexLayers) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn merge_below_self(self, mut other: TexLayers) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BGTexType` is never used
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:115:10
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub enum BGTexType {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FGTexType` is never used
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:133:10
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub enum FGTexType {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TileDecoration` is never used
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:159:10
[INFO] [stdout]     |
[INFO] [stdout] 159 | pub enum TileDecoration {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Tint` is never used
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:181:11
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub trait Tint {
[INFO] [stdout]     |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:222:12
[INFO] [stdout]     |
[INFO] [stdout] 221 | impl Tex {
[INFO] [stdout]     | -------- associated functions in this implementation
[INFO] [stdout] 222 |     pub fn game_tile(
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 244 |     pub fn board_game_tile(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 350 |     pub fn town_button(color: Option<Color32>, highlight: Option<Color32>) -> Vec<TexQuad> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 365 |     pub fn artifact_button(color: Option<Color32>, highlight: Option<Color32>) -> Vec<TexQuad> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 380 |     pub fn land_button(highlight: Option<Color32>) -> Vec<TexQuad> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 391 |     pub fn text_button(ratio: f32) -> Vec<Tex> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 403 |     pub fn text_dialog(x_tiles: usize, y_tiles: usize) -> Vec<Vec<Tex>> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 433 |     pub fn artifact(color: Color32, neighbors: Vec<BGTexType>, wind_at_coord: u8) -> TexLayers {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 505 |     pub fn town(color: Color32, seed: usize, tick: u64, wind_at_coord: u8) -> TexLayers {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 615 |     pub fn water(
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 665 |     pub fn terrain(
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 800 |     pub fn landscaping(from: &Square, action: &BoardEditingMode) -> Option<TexQuad> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `render`, `get_source_position`, and `slice_as_image` are never used
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:816:12
[INFO] [stdout]     |
[INFO] [stdout] 815 | impl Tex {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] 816 |     pub fn render(self, map_texture: TextureId, rect: Rect, ui: &mut egui::Ui) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 844 |     pub fn get_source_position(&self) -> (Pos2, Vec2) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 867 |     pub fn slice_as_image(&self, base_sheet: &ColorImage) -> ColorImage {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_tex_quad` is never used
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:880:8
[INFO] [stdout]     |
[INFO] [stdout] 880 | pub fn render_tex_quad(texs: TexQuad, rect: Rect, map_texture: &TextureHandle, ui: &mut egui::Ui) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_tex_quads` is never used
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:892:8
[INFO] [stdout]     |
[INFO] [stdout] 892 | pub fn render_tex_quads(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_texs_clockwise` is never used
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:903:8
[INFO] [stdout]     |
[INFO] [stdout] 903 | pub fn render_texs_clockwise(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_tex_rows` is never used
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:936:8
[INFO] [stdout]     |
[INFO] [stdout] 936 | pub fn render_tex_rows(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `paint_dialog_background` is never used
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:965:8
[INFO] [stdout]     |
[INFO] [stdout] 965 | pub fn paint_dialog_background(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_letter_quad` is never used
[INFO] [stdout]  --> truncate_client/src/utils/tex/letters.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn get_letter_quad(letter: char, orientation: Direction) -> TexQuad {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DIALOG_TIME_PER_CHAR` is never used
[INFO] [stdout]  --> truncate_client/src/utils/text.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const DIALOG_TIME_PER_CHAR: f32 = 0.05;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TextStyle` is never used
[INFO] [stdout]   --> truncate_client/src/utils/text.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum TextStyle {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TextHelper` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/text.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct TextHelper<'a> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> truncate_client/src/utils/text.rs:25:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | impl<'a> TextHelper<'a> {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout]  25 |     pub fn heavy(
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  33 |     pub fn heavy_centered(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  42 |     fn heavy_inner(
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn light(
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn light_centered(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     fn light_inner(
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn size(&self) -> Vec2 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn mesh_size(&self) -> Vec2 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn get_partial_char_slice(&self, time_passed: f32, ui: &mut egui::Ui) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn get_partial_word_slice(&self, time_passed: f32, ui: &mut egui::Ui) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     fn inner_partial_slice(&self, at: usize, ui: &mut egui::Ui) -> Option<Self> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn paint_at(self, pos: Pos2, color: Color32, ui: &mut egui::Ui) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn paint_within(self, bounds: Rect, alignment: Align2, color: Color32, ui: &mut egui::Ui) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn paint(self, color: Color32, ui: &mut egui::Ui, centered: bool) -> egui::Response {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     pub fn full_button(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 238 |     pub fn centered_button(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 248 |     pub fn button(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     pub fn dialog(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 293 |     pub fn get_button_height(&self, _ui: &egui::Ui) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 304 |     fn paint_tile_background(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Theme` is never constructed
[INFO] [stdout]  --> truncate_client/src/utils/theming.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct Theme {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `day`, `old_day`, `fog`, and `night` are never used
[INFO] [stdout]    --> truncate_client/src/utils/theming.rs:35:12
[INFO] [stdout]     |
[INFO] [stdout]  34 | impl Theme {
[INFO] [stdout]     | ---------- associated functions in this implementation
[INFO] [stdout]  35 |     pub fn day() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn old_day() -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  93 |     pub fn fog() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn night() -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `calc_rescale` and `rescale` are never used
[INFO] [stdout]    --> truncate_client/src/utils/theming.rs:153:12
[INFO] [stdout]     |
[INFO] [stdout] 152 | impl Theme {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] 153 |     pub fn calc_rescale(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 183 |     pub fn rescale(&self, scale: f32) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Diaphanize` is never used
[INFO] [stdout]    --> truncate_client/src/utils/theming.rs:194:11
[INFO] [stdout]     |
[INFO] [stdout] 194 | pub trait Diaphanize {
[INFO] [stdout]     |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Darken` is never used
[INFO] [stdout]    --> truncate_client/src/utils/theming.rs:206:11
[INFO] [stdout]     |
[INFO] [stdout] 206 | pub trait Darken {
[INFO] [stdout]     |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Lighten` is never used
[INFO] [stdout]    --> truncate_client/src/utils/theming.rs:218:11
[INFO] [stdout]     |
[INFO] [stdout] 218 | pub trait Lighten {
[INFO] [stdout]     |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_qs_tick` is never used
[INFO] [stdout]  --> truncate_client/src/utils/timing.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn get_qs_tick(current_time: Duration) -> u64 {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `back_to_menu` is never used
[INFO] [stdout]  --> truncate_client/src/utils/urls.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn back_to_menu() {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ImageMusher`
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 19 |         mapper::{ImageMusher, MappedBoard, MappedTileVariant},
[INFO] [stdout]    |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `msg`
[INFO] [stdout]   --> truncate_client/src/app_outer.rs:86:28
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub fn send_msg(&self, msg: BackchannelMsg) -> Option<String> {
[INFO] [stdout]    |                            ^^^ help: if this is intentional, prefix it with an underscore: `_msg`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:166:13
[INFO] [stdout]     |
[INFO] [stdout] 166 |         let mut game_status = app_inner::GameStatus::None("".into(), None);
[INFO] [stdout]     |             ----^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:167:13
[INFO] [stdout]     |
[INFO] [stdout] 167 |         let mut player_name = "___AUTO___".to_string();
[INFO] [stdout]     |             ----^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:168:13
[INFO] [stdout]     |
[INFO] [stdout] 168 |         let mut player_token: Option<String> = 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]    --> truncate_client/src/app_outer.rs:170:13
[INFO] [stdout]     |
[INFO] [stdout] 170 |         let mut screen_width = 0;
[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]    --> truncate_client/src/app_outer.rs:171:13
[INFO] [stdout]     |
[INFO] [stdout] 171 |         let mut screen_height = 0;
[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]    --> truncate_client/src/app_outer.rs:172:13
[INFO] [stdout]     |
[INFO] [stdout] 172 |         let mut user_agent = String::new();
[INFO] [stdout]     |             ----^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:173:13
[INFO] [stdout]     |
[INFO] [stdout] 173 |         let mut referrer = String::new();
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `glypher`
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:363:39
[INFO] [stdout]     |
[INFO] [stdout] 363 | fn load_textures(ctx: &egui::Context, glypher: &Glypher, launched_at_day: u32) -> TextureHandle {
[INFO] [stdout]     |                                       ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_glypher`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]   --> truncate_client/src/handle_messages.rs:36:72
[INFO] [stdout]    |
[INFO] [stdout] 36 |             GameMessage::JoinedLobby(player_index, id, players, board, token) => {
[INFO] [stdout]    |                                                                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `theme` is assigned to, but never used
[INFO] [stdout]    --> truncate_client/src/lil_bits/battle.rs:234:13
[INFO] [stdout]     |
[INFO] [stdout] 234 |         let mut theme = aesthetics.theme.rescale(0.5);
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_theme` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `theme` is never read
[INFO] [stdout]    --> truncate_client/src/lil_bits/battle.rs:235:9
[INFO] [stdout]     |
[INFO] [stdout] 235 |         theme.tile_margin = 0.0;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hand`
[INFO] [stdout]   --> truncate_client/src/lil_bits/board.rs:43:9
[INFO] [stdout]    |
[INFO] [stdout] 43 |         hand: &Hand,
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_hand`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Tutorial`
[INFO] [stdout]   --> truncate_client/src/app_inner.rs:25:48
[INFO] [stdout]    |
[INFO] [stdout] 25 |         includes::{changelogs, ChangePriority, Tutorial},
[INFO] [stdout]    |                                                ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `daily::get_puzzle_day`
[INFO] [stdout]   --> truncate_client/src/handle_launch_code.rs:17:19
[INFO] [stdout]    |
[INFO] [stdout] 17 |     utils::{self, daily::get_puzzle_day, includes::rule_card, macros::current_time},
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]  --> truncate_client/src/lil_bits/board.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::path::PathBuf;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Lighten`
[INFO] [stdout]   --> truncate_client/src/lil_bits/board_editor.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 |         Lighten, Theme,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Darken`
[INFO] [stdout]  --> truncate_client/src/lil_bits/changes_splash.rs:6:38
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::utils::{text::TextHelper, Darken, Theme};
[INFO] [stdout]   |                                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hex_color`
[INFO] [stdout]  --> truncate_client/src/lil_bits/dictionary.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     hex_color, vec2, Color32, Stroke,
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `instant::Duration`
[INFO] [stdout]  --> truncate_client/src/lil_bits/hand.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use instant::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::HandSquareUI`
[INFO] [stdout]   --> truncate_client/src/lil_bits/hand.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use super::HandSquareUI;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Darken`
[INFO] [stdout]  --> truncate_client/src/lil_bits/splash.rs:6:38
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::utils::{text::TextHelper, Darken, Theme};
[INFO] [stdout]   |                                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `lil_bits::DictionaryUI`
[INFO] [stdout]   --> truncate_client/src/regions/active_game/actions_menu.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     lil_bits::DictionaryUI,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DictionaryUI`
[INFO] [stdout]   --> truncate_client/src/regions/active_game/control_strip.rs:11:16
[INFO] [stdout]    |
[INFO] [stdout] 11 |     lil_bits::{DictionaryUI, HandUI},
[INFO] [stdout]    |                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Vec2`
[INFO] [stdout]  --> truncate_client/src/regions/active_game/dictionary.rs:1:35
[INFO] [stdout]   |
[INFO] [stdout] 1 | use epaint::{emath::Align2, vec2, Vec2};
[INFO] [stdout]   |                                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CursorIcon` and `Sense`
[INFO] [stdout]  --> truncate_client/src/regions/active_game/dictionary.rs:6:18
[INFO] [stdout]   |
[INFO] [stdout] 6 |     egui::{self, CursorIcon, Layout, Order, Sense},
[INFO] [stdout]   |                  ^^^^^^^^^^                 ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `render_tex_quad` and `tiles`
[INFO] [stdout]   --> truncate_client/src/regions/active_game/dictionary.rs:12:18
[INFO] [stdout]    |
[INFO] [stdout] 12 |     utils::tex::{render_tex_quad, tiles},
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BoardElements` and `self`
[INFO] [stdout]  --> truncate_client/src/regions/generator.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 |         self, generate_board, ArtifactType, BoardElements, BoardGenerationResult, BoardNoiseParams,
[INFO] [stdout]   |         ^^^^                                ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `fmt::Alignment`
[INFO] [stdout]  --> truncate_client/src/regions/rules.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{fmt::Alignment, ops::Sub};
[INFO] [stdout]   |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Layout`
[INFO] [stdout]  --> truncate_client/src/regions/rules.rs:3:34
[INFO] [stdout]   |
[INFO] [stdout] 3 | use eframe::egui::{self, Align2, Layout, Sense};
[INFO] [stdout]   |                                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BoardChangeAction`, `BoardChangeDetail`, `BoardChange`, `Change`, `Game`, and `moves::Move`
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:8:12
[INFO] [stdout]    |
[INFO] [stdout]  8 |     game::{Game, GAME_COLORS},
[INFO] [stdout]    |            ^^^^
[INFO] [stdout]  9 |     moves::Move,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 10 |     reporting::{BoardChange, BoardChangeAction, BoardChangeDetail, Change},
[INFO] [stdout]    |                 ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Backchannel`, `Diaphanize`, `GLYPHER`, `GameplayDepot`, `MappedBoard`, `TexQuad`, `TimingDepot`, `game_evals::get_main_dict`, and `self`
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:14:17
[INFO] [stdout]    |
[INFO] [stdout] 14 |     app_outer::{Backchannel, EventDispatcher, GLYPHER},
[INFO] [stdout]    |                 ^^^^^^^^^^^                   ^^^^^^^
[INFO] [stdout] 15 |     utils::{
[INFO] [stdout] 16 |         depot::{AestheticDepot, GameplayDepot, TimingDepot},
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 17 |         game_evals::get_main_dict,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 18 |         includes::RuleCard,
[INFO] [stdout] 19 |         mapper::{ImageMusher, MappedBoard, MappedTileVariant},
[INFO] [stdout]    |                               ^^^^^^^^^^^
[INFO] [stdout] 20 |         tex::{
[INFO] [stdout] 21 |             self, render_texs_clockwise, BGTexType, PieceLayer, Tex, TexLayers, TexQuad,
[INFO] [stdout]    |             ^^^^                                                                ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |         Diaphanize, Lighten, Theme,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> truncate_client/src/regions/rules.rs:260:38
[INFO] [stdout]     |
[INFO] [stdout] 260 |                 let example_height = (cur_example.textures.len() as f32 * sprite_size);
[INFO] [stdout]     |                                      ^                                               ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 260 -                 let example_height = (cur_example.textures.len() as f32 * sprite_size);
[INFO] [stdout] 260 +                 let example_height = cur_example.textures.len() as f32 * sprite_size ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashMap`
[INFO] [stdout]  --> truncate_client/src/regions/tutorial.rs:1:24
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]   |                        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde::Deserialize`
[INFO] [stdout]  --> truncate_client/src/regions/tutorial.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde::Deserialize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused macro definition: `tr_log`
[INFO] [stdout]  --> truncate_client/src/utils/macros.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | macro_rules! tr_log {
[INFO] [stdout]   |              ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_macros)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Tutorial`
[INFO] [stdout]   --> truncate_client/src/app_inner.rs:25:48
[INFO] [stdout]    |
[INFO] [stdout] 25 |         includes::{changelogs, ChangePriority, Tutorial},
[INFO] [stdout]    |                                                ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `daily::get_puzzle_day`
[INFO] [stdout]   --> truncate_client/src/handle_launch_code.rs:17:19
[INFO] [stdout]    |
[INFO] [stdout] 17 |     utils::{self, daily::get_puzzle_day, includes::rule_card, macros::current_time},
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::PathBuf`
[INFO] [stdout]  --> truncate_client/src/lil_bits/board.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::path::PathBuf;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Lighten`
[INFO] [stdout]   --> truncate_client/src/lil_bits/board_editor.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 |         Lighten, Theme,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Darken`
[INFO] [stdout]  --> truncate_client/src/lil_bits/changes_splash.rs:6:38
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::utils::{text::TextHelper, Darken, Theme};
[INFO] [stdout]   |                                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hex_color`
[INFO] [stdout]  --> truncate_client/src/lil_bits/dictionary.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 |     hex_color, vec2, Color32, Stroke,
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `instant::Duration`
[INFO] [stdout]  --> truncate_client/src/lil_bits/hand.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use instant::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::HandSquareUI`
[INFO] [stdout]   --> truncate_client/src/lil_bits/hand.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use super::HandSquareUI;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Darken`
[INFO] [stdout]  --> truncate_client/src/lil_bits/splash.rs:6:38
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::utils::{text::TextHelper, Darken, Theme};
[INFO] [stdout]   |                                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `lil_bits::DictionaryUI`
[INFO] [stdout]   --> truncate_client/src/regions/active_game/actions_menu.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 |     lil_bits::DictionaryUI,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DictionaryUI`
[INFO] [stdout]   --> truncate_client/src/regions/active_game/control_strip.rs:11:16
[INFO] [stdout]    |
[INFO] [stdout] 11 |     lil_bits::{DictionaryUI, HandUI},
[INFO] [stdout]    |                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Vec2`
[INFO] [stdout]  --> truncate_client/src/regions/active_game/dictionary.rs:1:35
[INFO] [stdout]   |
[INFO] [stdout] 1 | use epaint::{emath::Align2, vec2, Vec2};
[INFO] [stdout]   |                                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `CursorIcon` and `Sense`
[INFO] [stdout]  --> truncate_client/src/regions/active_game/dictionary.rs:6:18
[INFO] [stdout]   |
[INFO] [stdout] 6 |     egui::{self, CursorIcon, Layout, Order, Sense},
[INFO] [stdout]   |                  ^^^^^^^^^^                 ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `render_tex_quad` and `tiles`
[INFO] [stdout]   --> truncate_client/src/regions/active_game/dictionary.rs:12:18
[INFO] [stdout]    |
[INFO] [stdout] 12 |     utils::tex::{render_tex_quad, tiles},
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BoardElements` and `self`
[INFO] [stdout]  --> truncate_client/src/regions/generator.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 |         self, generate_board, ArtifactType, BoardElements, BoardGenerationResult, BoardNoiseParams,
[INFO] [stdout]   |         ^^^^                                ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `fmt::Alignment`
[INFO] [stdout]  --> truncate_client/src/regions/rules.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{fmt::Alignment, ops::Sub};
[INFO] [stdout]   |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Layout`
[INFO] [stdout]  --> truncate_client/src/regions/rules.rs:3:34
[INFO] [stdout]   |
[INFO] [stdout] 3 | use eframe::egui::{self, Align2, Layout, Sense};
[INFO] [stdout]   |                                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BoardChangeAction`, `BoardChangeDetail`, `BoardChange`, `Change`, `Game`, and `moves::Move`
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:8:12
[INFO] [stdout]    |
[INFO] [stdout]  8 |     game::{Game, GAME_COLORS},
[INFO] [stdout]    |            ^^^^
[INFO] [stdout]  9 |     moves::Move,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 10 |     reporting::{BoardChange, BoardChangeAction, BoardChangeDetail, Change},
[INFO] [stdout]    |                 ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Backchannel`, `Diaphanize`, `GLYPHER`, `GameplayDepot`, `MappedBoard`, `TexQuad`, `TimingDepot`, and `game_evals::get_main_dict`
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:14:17
[INFO] [stdout]    |
[INFO] [stdout] 14 |     app_outer::{Backchannel, EventDispatcher, GLYPHER},
[INFO] [stdout]    |                 ^^^^^^^^^^^                   ^^^^^^^
[INFO] [stdout] 15 |     utils::{
[INFO] [stdout] 16 |         depot::{AestheticDepot, GameplayDepot, TimingDepot},
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 17 |         game_evals::get_main_dict,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 18 |         includes::RuleCard,
[INFO] [stdout] 19 |         mapper::{ImageMusher, MappedBoard, MappedTileVariant},
[INFO] [stdout]    |                               ^^^^^^^^^^^
[INFO] [stdout] 20 |         tex::{
[INFO] [stdout] 21 |             self, render_texs_clockwise, BGTexType, PieceLayer, Tex, TexLayers, TexQuad,
[INFO] [stdout]    |                                                                                 ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |         Diaphanize, Lighten, Theme,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> truncate_client/src/regions/rules.rs:260:38
[INFO] [stdout]     |
[INFO] [stdout] 260 |                 let example_height = (cur_example.textures.len() as f32 * sprite_size);
[INFO] [stdout]     |                                      ^                                               ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 260 -                 let example_height = (cur_example.textures.len() as f32 * sprite_size);
[INFO] [stdout] 260 +                 let example_height = cur_example.textures.len() as f32 * sprite_size ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HashMap`
[INFO] [stdout]  --> truncate_client/src/regions/tutorial.rs:1:24
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::{HashMap, HashSet};
[INFO] [stdout]   |                        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde::Deserialize`
[INFO] [stdout]  --> truncate_client/src/regions/tutorial.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde::Deserialize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused macro definition: `tr_log`
[INFO] [stdout]  --> truncate_client/src/utils/macros.rs:1:14
[INFO] [stdout]   |
[INFO] [stdout] 1 | macro_rules! tr_log {
[INFO] [stdout]   |              ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_macros)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `button_size`
[INFO] [stdout]   --> truncate_client/src/regions/active_game/dictionary.rs:45:17
[INFO] [stdout]    |
[INFO] [stdout] 45 |             let button_size = 48.0;
[INFO] [stdout]    |                 ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_button_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> truncate_client/src/regions/active_game/mod.rs:95:13
[INFO] [stdout]    |
[INFO] [stdout] 95 |         let mut depot = TruncateDepot {
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:95:9
[INFO] [stdout]    |
[INFO] [stdout] 95 |         ctx: &egui::Context,
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `char`
[INFO] [stdout]    --> truncate_client/src/regions/rules.rs:307:55
[INFO] [stdout]     |
[INFO] [stdout] 307 | ...                   PieceLayer::Character(char, color, is_flipped, y_offset) => {
[INFO] [stdout]     |                                             ^^^^ help: if this is intentional, prefix it with an underscore: `_char`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `color`
[INFO] [stdout]    --> truncate_client/src/regions/rules.rs:307:61
[INFO] [stdout]     |
[INFO] [stdout] 307 | ...                   PieceLayer::Character(char, color, is_flipped, y_offset) => {
[INFO] [stdout]     |                                                   ^^^^^ help: if this is intentional, prefix it with an underscore: `_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `is_flipped`
[INFO] [stdout]    --> truncate_client/src/regions/rules.rs:307:68
[INFO] [stdout]     |
[INFO] [stdout] 307 | ...                   PieceLayer::Character(char, color, is_flipped, y_offset) => {
[INFO] [stdout]     |                                                          ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_flipped`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y_offset`
[INFO] [stdout]    --> truncate_client/src/regions/rules.rs:307:80
[INFO] [stdout]     |
[INFO] [stdout] 307 | ...                   PieceLayer::Character(char, color, is_flipped, y_offset) => {
[INFO] [stdout]     |                                                                      ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_y_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> truncate_client/src/utils/mapper/mod.rs:841:13
[INFO] [stdout]     |
[INFO] [stdout] 841 |         let mut render_pieces = |cache: &Vec<PieceLayer>,
[INFO] [stdout]     |             ----^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `neighbors`
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:433:37
[INFO] [stdout]     |
[INFO] [stdout] 433 |     pub fn artifact(color: Color32, neighbors: Vec<BGTexType>, wind_at_coord: u8) -> TexLayers {
[INFO] [stdout]     |                                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neighbors`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `wind_at_coord`
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:433:64
[INFO] [stdout]     |
[INFO] [stdout] 433 |     pub fn artifact(color: Color32, neighbors: Vec<BGTexType>, wind_at_coord: u8) -> TexLayers {
[INFO] [stdout]     |                                                                ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_wind_at_coord`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `wind_at_coord`
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:505:57
[INFO] [stdout]     |
[INFO] [stdout] 505 |     pub fn town(color: Color32, seed: usize, tick: u64, wind_at_coord: u8) -> TexLayers {
[INFO] [stdout]     |                                                         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_wind_at_coord`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking sqlx v0.8.3
[INFO] [stdout] warning: enum `GameStatus` is never used
[INFO] [stdout]   --> truncate_client/src/app_inner.rs:33:10
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum GameStatus {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AppInnerStorage` is never constructed
[INFO] [stdout]   --> truncate_client/src/app_inner.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct AppInnerStorage {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render` is never used
[INFO] [stdout]   --> truncate_client/src/app_inner.rs:56:8
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub fn render(outer: &mut OuterApplication, ui: &mut egui::Ui, current_time: Duration) {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `R` is never used
[INFO] [stdout]  --> truncate_client/src/app_outer.rs:6:6
[INFO] [stdout]   |
[INFO] [stdout] 6 | type R = Receiver<GameMessage>;
[INFO] [stdout]   |      ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `S` is never used
[INFO] [stdout]  --> truncate_client/src/app_outer.rs:7:6
[INFO] [stdout]   |
[INFO] [stdout] 7 | type S = Sender<PlayerMessage>;
[INFO] [stdout]   |      ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ART_CHANGE_DAY` is never used
[INFO] [stdout]   --> truncate_client/src/app_outer.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const ART_CHANGE_DAY: u32 = 293;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Backchannel` is never constructed
[INFO] [stdout]   --> truncate_client/src/app_outer.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct Backchannel {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BackchannelMsg` is never used
[INFO] [stdout]   --> truncate_client/src/app_outer.rs:38:10
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub enum BackchannelMsg {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ShareType` is never used
[INFO] [stdout]   --> truncate_client/src/app_outer.rs:61:10
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub enum ShareType {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `is_open`, and `send_msg` are never used
[INFO] [stdout]   --> truncate_client/src/app_outer.rs:68:12
[INFO] [stdout]    |
[INFO] [stdout] 67 | impl Backchannel {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 68 |     pub fn new(#[cfg(target_arch = "wasm32")] backchannel: js_sys::Function) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn is_open(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86 |     pub fn send_msg(&self, msg: BackchannelMsg) -> Option<String> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TEXTURE_MEASUREMENT` is never used
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:102:12
[INFO] [stdout]     |
[INFO] [stdout] 102 | pub static TEXTURE_MEASUREMENT: OnceLock<TextureMeasurement> = OnceLock::new();
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TEXTURE_IMAGE` is never used
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout] 103 | pub static TEXTURE_IMAGE: OnceLock<egui::ColorImage> = OnceLock::new();
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `GLYPHER` is never used
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:104:12
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub static GLYPHER: OnceLock<Glypher> = OnceLock::new();
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OuterApplication` is never constructed
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct OuterApplication {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:127:12
[INFO] [stdout]     |
[INFO] [stdout] 126 | impl OuterApplication {
[INFO] [stdout]     | --------------------- associated function in this implementation
[INFO] [stdout] 127 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EventDispatcher` is never constructed
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:314:12
[INFO] [stdout]     |
[INFO] [stdout] 314 | pub struct EventDispatcher {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `event` is never used
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:321:12
[INFO] [stdout]     |
[INFO] [stdout] 319 | impl EventDispatcher {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] 320 |     /// Tracks an event, deduplicating all sends for the lifetime of this EventDispatcher
[INFO] [stdout] 321 |     pub fn event(&mut self, name: impl AsRef<str>) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TextureMeasurement` is never constructed
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:348:12
[INFO] [stdout]     |
[INFO] [stdout] 348 | pub struct TextureMeasurement {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_textures` is never used
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:363:4
[INFO] [stdout]     |
[INFO] [stdout] 363 | fn load_textures(ctx: &egui::Context, glypher: &Glypher, launched_at_day: u32) -> TextureHandle {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `setup_repaint_truncate_animations` is never used
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:420:4
[INFO] [stdout]     |
[INFO] [stdout] 420 | fn setup_repaint_truncate_animations(egui_ctx: egui::Context) -> std::thread::JoinHandle<()> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FrameHistory` is never constructed
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:450:16
[INFO] [stdout]     |
[INFO] [stdout] 450 |     pub struct FrameHistory {
[INFO] [stdout]     |                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `on_new_frame` and `ui` are never used
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:466:16
[INFO] [stdout]     |
[INFO] [stdout] 464 |     impl FrameHistory {
[INFO] [stdout]     |     ----------------- methods in this implementation
[INFO] [stdout] 465 |         // Called first
[INFO] [stdout] 466 |         pub fn on_new_frame(&mut self, now: f64, previous_frame_time: Option<f32>) {
[INFO] [stdout]     |                ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 474 |         pub fn ui(&mut self, ui: &mut egui::Ui) {
[INFO] [stdout]     |                ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_launch_code` is never used
[INFO] [stdout]   --> truncate_client/src/handle_launch_code.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub fn handle_launch_code(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_server_msg` is never used
[INFO] [stdout]   --> truncate_client/src/handle_messages.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn handle_server_msg(outer: &mut OuterApplication, ui: &mut egui::Ui) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BattleUI` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/battle.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct BattleUI<'a> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/battle.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl<'a> BattleUI<'a> {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 23 |     pub fn new(battle: &'a BattleReport, show_headline: bool) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BattleUIState` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/battle.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | struct BattleUIState {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_galleys`, `paint_galleys`, `render`, and `render_innards` are never used
[INFO] [stdout]    --> truncate_client/src/lil_bits/battle.rs:40:8
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl<'a> BattleUI<'a> {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout]  40 |     fn get_galleys(
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     fn paint_galleys(
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn render(self, ui: &mut egui::Ui, depot: &mut TruncateDepot) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 225 |     fn render_innards(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BoardUI` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/board.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct BoardUI<'a> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `interactive` are never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/board.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl<'a> BoardUI<'a> {
[INFO] [stdout]    | -------------------- associated items in this implementation
[INFO] [stdout] 26 |     pub fn new(board: &'a Board) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn interactive(mut self, interactive: bool) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `render` is never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/board.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl<'a> BoardUI<'a> {
[INFO] [stdout]    | -------------------- method in this implementation
[INFO] [stdout] 40 |     // TODO: Refactor board
[INFO] [stdout] 41 |     pub fn render(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `EditorDrag` is never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/board_editor.rs:24:6
[INFO] [stdout]    |
[INFO] [stdout] 24 | enum EditorDrag {
[INFO] [stdout]    |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EditorUI` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/board_editor.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct EditorUI<'a> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/board_editor.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl<'a> EditorUI<'a> {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 41 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `render` is never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/board_editor.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl<'a> EditorUI<'a> {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] 57 |     pub fn render(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EditorSquareUI` is never constructed
[INFO] [stdout]  --> truncate_client/src/lil_bits/board_editor_square.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct EditorSquareUI {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `square`, `action`, and `render` are never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/board_editor_square.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl EditorSquareUI {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 15 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn square(mut self, square: Square) -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn action(mut self, action: BoardEditingMode) -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn render(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SplashButton` is never constructed
[INFO] [stdout]  --> truncate_client/src/lil_bits/changes_splash.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | struct SplashButton {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ChangelogSplashUI` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/changes_splash.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct ChangelogSplashUI {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SplashResponse` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/changes_splash.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct SplashResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `animated`, and `with_button` are never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/changes_splash.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl ChangelogSplashUI {
[INFO] [stdout]    | ---------------------- associated items in this implementation
[INFO] [stdout] 28 |     pub fn new(message: Vec<String>, opened_at: Duration) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn animated(mut self, animated: bool) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn with_button(mut self, id: &'static str, text: String, color: Color32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `render` is never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/changes_splash.rs:50:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | impl ChangelogSplashUI {
[INFO] [stdout]    | ---------------------- method in this implementation
[INFO] [stdout] 50 |     pub fn render(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DictionaryUI` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/dictionary.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct DictionaryUI {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `load_definitions`, and `render` are never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/dictionary.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl DictionaryUI {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 33 |     pub fn new(initial_focus: bool) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn load_definitions(&mut self, definitions: Vec<(String, Option<Vec<WordMeaning>>)>) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn render(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HandUI` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/hand.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct HandUI<'a> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `active`, and `interactive` are never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/hand.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl<'a> HandUI<'a> {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 21 |     pub fn new(hand: &'a mut Hand) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn active(mut self, active: bool) -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn interactive(mut self, interactive: bool) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `render` is never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/hand.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl<'a> HandUI<'a> {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] 41 |     pub fn render(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `render` are never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/hand_square.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl HandSquareUI {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 14 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn render(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResultModalDaily` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/result_modal/mod.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct ResultModalDaily {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResultModalUnique` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/result_modal/mod.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct ResultModalUnique {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResultModalResigning` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/result_modal/mod.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct ResultModalResigning {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResultModalLoading` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/result_modal/mod.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct ResultModalLoading {}
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ResultModalVariant` is never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/result_modal/mod.rs:56:10
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub enum ResultModalVariant {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResultModalUI` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/result_modal/mod.rs:64:12
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub struct ResultModalUI {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new_daily`, `new_unique`, `new_resigning`, and `new_loading` are never used
[INFO] [stdout]    --> truncate_client/src/lil_bits/result_modal/mod.rs:69:12
[INFO] [stdout]     |
[INFO] [stdout]  68 | impl ResultModalUI {
[INFO] [stdout]     | ------------------ associated functions in this implementation
[INFO] [stdout]  69 |     pub fn new_daily(
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn new_unique(
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn new_resigning(ui: &mut egui::Ui, msg: String) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn new_loading(ui: &mut egui::Ui) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Anim` is never used
[INFO] [stdout]    --> truncate_client/src/lil_bits/result_modal/mod.rs:160:6
[INFO] [stdout]     |
[INFO] [stdout] 160 | enum Anim {
[INFO] [stdout]     |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `seed_animations` and `anim` are never used
[INFO] [stdout]    --> truncate_client/src/lil_bits/result_modal/mod.rs:174:8
[INFO] [stdout]     |
[INFO] [stdout] 173 | impl ResultModalUI {
[INFO] [stdout]     | ------------------ associated functions in this implementation
[INFO] [stdout] 174 |     fn seed_animations(ui: &mut egui::Ui) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     fn anim(ui: &mut egui::Ui, val: Anim, to: f32, duration: f32) -> f32 {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ResultModalAction` is never used
[INFO] [stdout]    --> truncate_client/src/lil_bits/result_modal/mod.rs:193:10
[INFO] [stdout]     |
[INFO] [stdout] 193 | pub enum ResultModalAction {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `render_close` and `render` are never used
[INFO] [stdout]    --> truncate_client/src/lil_bits/result_modal/mod.rs:203:8
[INFO] [stdout]     |
[INFO] [stdout] 202 | impl ResultModalUI {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] 203 |     fn render_close(
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     pub fn render(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DailyActions` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/result_modal/daily_actions.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct DailyActions {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `reset_buttons`, `render_shares`, and `render` are never used
[INFO] [stdout]    --> truncate_client/src/lil_bits/result_modal/daily_actions.rs:29:12
[INFO] [stdout]     |
[INFO] [stdout]  28 | impl DailyActions {
[INFO] [stdout]     | ----------------- associated items in this implementation
[INFO] [stdout]  29 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     fn reset_buttons(&mut self, depot: &TruncateDepot) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub fn render_shares(
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     pub fn render(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DayHighlight` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/result_modal/graph.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | struct DayHighlight {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DailySplashGraph` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/result_modal/graph.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct DailySplashGraph {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `render` are never used
[INFO] [stdout]    --> truncate_client/src/lil_bits/result_modal/graph.rs:38:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl DailySplashGraph {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout]  38 |     pub fn new(ui: &mut egui::Ui, stats: &DailyStats, current_time: Duration) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub fn render(&self, ui: &mut egui::Ui, graph_rect: Rect) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ShareMessageMock` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/result_modal/msg_mock.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct ShareMessageMock {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_daily`, `new_unique`, and `render` are never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/result_modal/msg_mock.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl ShareMessageMock {
[INFO] [stdout]    | --------------------- associated items in this implementation
[INFO] [stdout] 27 |     pub fn new_daily(
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn new_unique(game: &Game, depot: &TruncateDepot) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn render(&mut self, ui: &mut egui::Ui, _theme: &Theme, _map_texture: &TextureHandle) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `daily_share_message` and `unique_share_message` are never used
[INFO] [stdout]    --> truncate_client/src/lil_bits/result_modal/msg_mock.rs:144:12
[INFO] [stdout]     |
[INFO] [stdout] 143 | impl ShareMessageMock {
[INFO] [stdout]     | --------------------- associated functions in this implementation
[INFO] [stdout] 144 |     pub fn daily_share_message(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 195 |     pub fn unique_share_message(game: &Game, depot: &TruncateDepot) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SplashButton` is never constructed
[INFO] [stdout]  --> truncate_client/src/lil_bits/splash.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | struct SplashButton {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SplashUI` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/splash.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct SplashUI {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SplashResponse` is never constructed
[INFO] [stdout]   --> truncate_client/src/lil_bits/splash.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct SplashResponse {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `animated`, `byline`, and `with_button` are never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/splash.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl SplashUI {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 28 |     pub fn new(message: Vec<String>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn animated(mut self, animated: bool) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn byline(mut self, text: Vec<String>) -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn with_button(
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `render` is never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/splash.rs:65:12
[INFO] [stdout]    |
[INFO] [stdout] 64 | impl SplashUI {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 65 |     pub fn render(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TimerUI` is never constructed
[INFO] [stdout]  --> truncate_client/src/lil_bits/timer.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct TimerUI<'a> {
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `friend`, `active`, and `right_align` are never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/timer.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl<'a> TimerUI<'a> {
[INFO] [stdout]    | -------------------- associated items in this implementation
[INFO] [stdout] 20 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn friend(mut self, friend: bool) -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn active(mut self, active: bool) -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn right_align(mut self) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `get_time_color`, `human_time`, `calculate_time`, `calculate_byline`, `render_inner`, and `render` are never used
[INFO] [stdout]    --> truncate_client/src/lil_bits/timer.rs:59:8
[INFO] [stdout]     |
[INFO] [stdout]  58 | impl<'a> TimerUI<'a> {
[INFO] [stdout]     | -------------------- associated items in this implementation
[INFO] [stdout]  59 |     fn get_time_color(&self) -> Color32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     fn human_time(seconds: i64, absolute: bool) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     fn calculate_time(&mut self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     fn calculate_byline(&mut self) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn render_inner(&mut self, ui: &mut egui::Ui) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 317 |     pub fn render(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `HeaderType` is never used
[INFO] [stdout]   --> truncate_client/src/regions/active_game/mod.rs:39:10
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub enum HeaderType {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `GameLocation` is never used
[INFO] [stdout]   --> truncate_client/src/regions/active_game/mod.rs:50:10
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub enum GameLocation {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ActiveGame` is never constructed
[INFO] [stdout]   --> truncate_client/src/regions/active_game/mod.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct ActiveGame {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> truncate_client/src/regions/active_game/mod.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | impl ActiveGame {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 74 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `render`, `apply_new_timing`, and `apply_new_state` are never used
[INFO] [stdout]    --> truncate_client/src/regions/active_game/mod.rs:166:12
[INFO] [stdout]     |
[INFO] [stdout] 165 | impl ActiveGame {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 166 |     pub fn render(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 264 |     pub fn apply_new_timing(&mut self, state_message: GameStateMessage) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 284 |     pub fn apply_new_state(&mut self, state_message: GameStateMessage) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `render_actions_menu` is never used
[INFO] [stdout]   --> truncate_client/src/regions/active_game/actions_menu.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl ActiveGame {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 18 |     pub fn render_actions_menu(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `render_control_strip` is never used
[INFO] [stdout]   --> truncate_client/src/regions/active_game/control_strip.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl ActiveGame {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 21 |     pub fn render_control_strip(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `render_dictionary` is never used
[INFO] [stdout]   --> truncate_client/src/regions/active_game/dictionary.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl ActiveGame {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 18 |     pub fn render_dictionary(&mut self, ui: &mut egui::Ui) -> Option<PlayerMessage> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `render_header_strip` is never used
[INFO] [stdout]   --> truncate_client/src/regions/active_game/header_strip.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl ActiveGame {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 21 |     pub fn render_header_strip(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `render_sidebar` is never used
[INFO] [stdout]   --> truncate_client/src/regions/active_game/sidebar.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl ActiveGame {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] 18 |     pub fn render_sidebar(&mut self, ui: &mut egui::Ui) -> Option<PlayerMessage> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GeneratorState` is never constructed
[INFO] [stdout]   --> truncate_client/src/regions/generator.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct GeneratorState {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `render` are never used
[INFO] [stdout]   --> truncate_client/src/regions/generator.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl GeneratorState {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] 27 |     pub fn new(ctx: &egui::Context, map_texture: TextureHandle, theme: Theme, day: u32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn render(&mut self, ui: &mut egui::Ui, _theme: &Theme, current_time: Duration) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BoardEditingMode` is never used
[INFO] [stdout]   --> truncate_client/src/regions/lobby.rs:25:10
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub enum BoardEditingMode {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Lobby` is never constructed
[INFO] [stdout]   --> truncate_client/src/regions/lobby.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct Lobby {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `update_board`, `render_lobby`, and `render` are never used
[INFO] [stdout]    --> truncate_client/src/regions/lobby.rs:47:12
[INFO] [stdout]     |
[INFO] [stdout]  46 | impl Lobby {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout]  47 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn update_board(&mut self, board: Board, ui: &mut egui::Ui) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub fn render_lobby(&mut self, ui: &mut egui::Ui, theme: &Theme) -> Option<PlayerMessage> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub fn render(&mut self, ui: &mut egui::Ui, theme: &Theme) -> Option<PlayerMessage> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_native_menu_if_required` is never used
[INFO] [stdout]   --> truncate_client/src/regions/native_menu.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub fn render_native_menu_if_required(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PlaybackSpeed` is never used
[INFO] [stdout]   --> truncate_client/src/regions/replayer.rs:24:6
[INFO] [stdout]    |
[INFO] [stdout] 24 | enum PlaybackSpeed {
[INFO] [stdout]    |      ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `ticks` is never used
[INFO] [stdout]   --> truncate_client/src/regions/replayer.rs:31:8
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl PlaybackSpeed {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 31 |     fn ticks(&self) -> u64 {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ReplayerState` is never constructed
[INFO] [stdout]   --> truncate_client/src/regions/replayer.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct ReplayerState {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `play_next_turn`, and `render` are never used
[INFO] [stdout]    --> truncate_client/src/regions/replayer.rs:58:12
[INFO] [stdout]     |
[INFO] [stdout]  57 | impl ReplayerState {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout]  58 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn play_next_turn(&mut self, current_time: Duration, qs_tick: u64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn render(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RuleCardAction` is never used
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:36:10
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub enum RuleCardAction {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParsedRuleCard` is never constructed
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct ParsedRuleCard {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ParsedRuleCardSection` is never constructed
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub struct ParsedRuleCardSection {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_rule_card` is never used
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:61:4
[INFO] [stdout]    |
[INFO] [stdout] 61 | fn parse_rule_card(rules: RuleCard, theme: &Theme) -> ParsedRuleCard {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RulesState` is never constructed
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:83:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub struct RulesState {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `render` are never used
[INFO] [stdout]    --> truncate_client/src/regions/rules.rs:94:12
[INFO] [stdout]     |
[INFO] [stdout]  93 | impl RulesState {
[INFO] [stdout]     | --------------- associated items in this implementation
[INFO] [stdout]  94 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub fn render(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SinglePlayerState` is never constructed
[INFO] [stdout]   --> truncate_client/src/regions/single_player.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct SinglePlayerState {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> truncate_client/src/regions/single_player.rs:55:12
[INFO] [stdout]     |
[INFO] [stdout]  54 | impl SinglePlayerState {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout]  55 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     fn sub_event(&mut self, event: String) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn reset(
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     pub fn reset_to(
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 252 |     pub fn hydrate_meanings(&mut self, definitions: Vec<(String, Option<Vec<WordMeaning>>)>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     pub fn handle_move(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 385 |     pub fn render(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pos_to_coord` is never used
[INFO] [stdout]   --> truncate_client/src/regions/tutorial.rs:33:4
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn pos_to_coord(pos: &str) -> Option<Coordinate> {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `action_to_move` is never used
[INFO] [stdout]   --> truncate_client/src/regions/tutorial.rs:42:4
[INFO] [stdout]    |
[INFO] [stdout] 42 | fn action_to_move(player: usize, action: &str) -> Move {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ChangeStage` is never used
[INFO] [stdout]   --> truncate_client/src/regions/tutorial.rs:77:6
[INFO] [stdout]    |
[INFO] [stdout] 77 | enum ChangeStage {
[INFO] [stdout]    |      ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TutorialState` is never constructed
[INFO] [stdout]   --> truncate_client/src/regions/tutorial.rs:83:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub struct TutorialState {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TutorialStage` is never constructed
[INFO] [stdout]   --> truncate_client/src/regions/tutorial.rs:93:8
[INFO] [stdout]    |
[INFO] [stdout] 93 | struct TutorialStage {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_step`, `highlight_interactions`, `render_game`, `get_dialog_position`, `increment_step`, and `handle_move` are never used
[INFO] [stdout]    --> truncate_client/src/regions/tutorial.rs:102:8
[INFO] [stdout]     |
[INFO] [stdout] 101 | impl TutorialStage {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] 102 |     fn get_step(&self) -> Option<&ScenarioStep> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     fn highlight_interactions(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     fn render_game(&mut self, ui: &mut egui::Ui, current_time: Duration) -> Option<PlayerMessage> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     fn get_dialog_position(&self) -> Option<Rect> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     fn increment_step(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     fn handle_move(&mut self, next_move: Move) -> Result<(), ()> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> truncate_client/src/regions/tutorial.rs:199:12
[INFO] [stdout]     |
[INFO] [stdout] 198 | impl TutorialState {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 199 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn load_definitions(&mut self, definitions: Vec<(String, Option<Vec<WordMeaning>>)>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     fn get_nth_scenario(tutorial: &Tutorial, index: usize) -> Option<(&String, &Scenario)> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 239 |     fn get_stage(
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 345 |     fn can_increment_stage(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 349 |     fn increment_stage(&mut self, ctx: &egui::Context, map_texture: TextureHandle, theme: &Theme) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 355 |     fn can_decrement_stage(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 359 |     fn decrement_stage(&mut self, ctx: &egui::Context, map_texture: TextureHandle, theme: &Theme) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 365 |     fn sub_event(&mut self, event: String) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 370 |     pub fn render(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `NUM_KEYS` is never used
[INFO] [stdout]   --> truncate_client/src/utils/control_devices/keyboard.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const NUM_KEYS: [Key; 9] = [
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_input` is never used
[INFO] [stdout]   --> truncate_client/src/utils/control_devices/keyboard.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn handle_input(
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SEED_NOTES` is never used
[INFO] [stdout]   --> truncate_client/src/utils/daily.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 | const SEED_NOTES: &[u8] = include_bytes!("../../../truncate_dueller/seed_notes.yml");
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DAILY_PUZZLE_DAY_ZERO` is never used
[INFO] [stdout]   --> truncate_client/src/utils/daily.rs:23:11
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub const DAILY_PUZZLE_DAY_ZERO: usize = 19751;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SeedNote` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/daily.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct SeedNote {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NotesFile` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/daily.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct NotesFile {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_puzzle_day` is never used
[INFO] [stdout]   --> truncate_client/src/utils/daily.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub fn get_puzzle_day(current_time: Duration) -> u32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `HumanStarts` is never used
[INFO] [stdout]   --> truncate_client/src/utils/daily.rs:52:10
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub type HumanStarts = bool;
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_raw_daily_puzzle` is never used
[INFO] [stdout]   --> truncate_client/src/utils/daily.rs:53:8
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub fn get_raw_daily_puzzle(day: u32) -> (BoardSeed, Option<(HumanStarts, SeedNote)>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_playable_daily_puzzle` is never used
[INFO] [stdout]   --> truncate_client/src/utils/daily.rs:75:8
[INFO] [stdout]    |
[INFO] [stdout] 75 | pub fn get_playable_daily_puzzle(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HoveredRegion` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/depot.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct HoveredRegion {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InteractionDepot` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/depot.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct InteractionDepot {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RegionDepot` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/depot.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub struct RegionDepot {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UIStateDepot` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/depot.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct UIStateDepot {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BoardDepot` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/depot.rs:69:12
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub struct BoardDepot {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TimingDepot` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/depot.rs:88:12
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub struct TimingDepot {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GameplayDepot` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/depot.rs:96:12
[INFO] [stdout]    |
[INFO] [stdout] 96 | pub struct GameplayDepot {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AestheticDepot` is never constructed
[INFO] [stdout]    --> truncate_client/src/utils/depot.rs:109:12
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub struct AestheticDepot {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AudioDepot` is never constructed
[INFO] [stdout]    --> truncate_client/src/utils/depot.rs:119:12
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub struct AudioDepot {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TruncateDepot` is never constructed
[INFO] [stdout]    --> truncate_client/src/utils/depot.rs:124:12
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub struct TruncateDepot {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TRUNCATE_DICT` is never used
[INFO] [stdout]   --> truncate_client/src/utils/game_evals.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub static TRUNCATE_DICT: &str = include_str!("../../../dict_builder/final_wordlist.txt");
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TOTAL_DICT` is never used
[INFO] [stdout]   --> truncate_client/src/utils/game_evals.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | static TOTAL_DICT: Mutex<Option<WordDict>> = Mutex::new(None);
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `SMALL_VOCAB_DICT_SAFE` is never used
[INFO] [stdout]   --> truncate_client/src/utils/game_evals.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | static SMALL_VOCAB_DICT_SAFE: Mutex<Option<WordDict>> = Mutex::new(None);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `MEDIUM_VOCAB_DICT_SAFE` is never used
[INFO] [stdout]   --> truncate_client/src/utils/game_evals.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | static MEDIUM_VOCAB_DICT_SAFE: Mutex<Option<WordDict>> = Mutex::new(None);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `LARGE_VOCAB_DICT_UNSAFE` is never used
[INFO] [stdout]   --> truncate_client/src/utils/game_evals.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | static LARGE_VOCAB_DICT_UNSAFE: Mutex<Option<WordDict>> = Mutex::new(None);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ensure_dicts` is never used
[INFO] [stdout]   --> truncate_client/src/utils/game_evals.rs:17:4
[INFO] [stdout]    |
[INFO] [stdout] 17 | fn ensure_dicts() {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_main_dict` is never used
[INFO] [stdout]   --> truncate_client/src/utils/game_evals.rs:98:8
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub fn get_main_dict() -> MutexGuard<'static, Option<WordDict>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `client_best_move` is never used
[INFO] [stdout]    --> truncate_client/src/utils/game_evals.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub fn client_best_move(game: &Game, npc_params: &NPCParams) -> PlayerMessage {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `remember` is never used
[INFO] [stdout]    --> truncate_client/src/utils/game_evals.rs:140:8
[INFO] [stdout]     |
[INFO] [stdout] 140 | pub fn remember(word: &String) {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `forget` is never used
[INFO] [stdout]    --> truncate_client/src/utils/game_evals.rs:170:8
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub fn forget() {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InnerGlypher` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/glyph_utils.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | struct InnerGlypher {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `cached_paint` are never used
[INFO] [stdout]   --> truncate_client/src/utils/glyph_utils.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl InnerGlypher {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 16 |     fn new() -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     fn cached_paint(&mut self, glyph_id: char, scale: usize) -> ColorImage {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `paint` is never used
[INFO] [stdout]   --> truncate_client/src/utils/glyph_utils.rs:34:4
[INFO] [stdout]    |
[INFO] [stdout] 34 | fn paint(font: &FontRef<'static>, glyph_id: char, scale: usize) -> ColorImage {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Glypher` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/glyph_utils.rs:65:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub struct Glypher {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `paint` are never used
[INFO] [stdout]   --> truncate_client/src/utils/glyph_utils.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 69 | impl Glypher {
[INFO] [stdout]    | ------------ associated items in this implementation
[INFO] [stdout] 70 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn paint(&self, glyph_id: char, scale: usize) -> ColorImage {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BaseTileGlyphs` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/glyph_utils.rs:81:12
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct BaseTileGlyphs {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Tutorial` is never constructed
[INFO] [stdout]  --> truncate_client/src/utils/includes.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Tutorial {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Category` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/includes.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct Category {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Scenario` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/includes.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct Scenario {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ScenarioStep` is never used
[INFO] [stdout]   --> truncate_client/src/utils/includes.rs:30:10
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub enum ScenarioStep {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ChangePriority` is never used
[INFO] [stdout]   --> truncate_client/src/utils/includes.rs:50:10
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub enum ChangePriority {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tutorial` is never used
[INFO] [stdout]   --> truncate_client/src/utils/includes.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub fn tutorial(for_day: u32) -> Tutorial {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `changelogs` is never used
[INFO] [stdout]   --> truncate_client/src/utils/includes.rs:69:8
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub fn changelogs() -> HashMap<&'static str, Tutorial> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RuleCard` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/includes.rs:90:12
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub struct RuleCard {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RuleCardSection` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/includes.rs:95:12
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub struct RuleCardSection {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rule_card` is never used
[INFO] [stdout]    --> truncate_client/src/utils/includes.rs:101:8
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub fn rule_card() -> RuleCard {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `WantsRepaint` is never used
[INFO] [stdout]   --> truncate_client/src/utils/mapper/mod.rs:30:6
[INFO] [stdout]    |
[INFO] [stdout] 30 | type WantsRepaint = bool;
[INFO] [stdout]    |      ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ResolvedTextureLayers` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/mapper/mod.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | struct ResolvedTextureLayers {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> truncate_client/src/utils/mapper/mod.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl ResolvedTextureLayers {
[INFO] [stdout]    | -------------------------- associated function in this implementation
[INFO] [stdout] 44 |     fn new(
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MapState` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/mapper/mod.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | struct MapState {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MappedBoard` is never constructed
[INFO] [stdout]    --> truncate_client/src/utils/mapper/mod.rs:110:12
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub struct MappedBoard {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> truncate_client/src/utils/mapper/mod.rs:130:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | impl MappedBoard {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 130 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn buffer(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn render_to_rect(&self, rect: Rect, ui_state: Option<&UIStateDepot>, ui: &mut egui::Ui) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn render_coord_to_rect(&self, mut coord: Coordinate, rect: Rect, ui: &mut egui::Ui) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     fn wind_vane(&mut self, tick: u64) {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     fn paint_square_offscreen(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 922 |     pub fn remap_texture(
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Dying` and `Gone` are never constructed
[INFO] [stdout]     --> truncate_client/src/utils/mapper/mod.rs:1105:5
[INFO] [stdout]      |
[INFO] [stdout] 1103 | pub enum MappedTileVariant {
[INFO] [stdout]      |          ----------------- variants in this enum
[INFO] [stdout] 1104 |     Healthy,
[INFO] [stdout] 1105 |     Dying,
[INFO] [stdout]      |     ^^^^^
[INFO] [stdout] 1106 |     Dead,
[INFO] [stdout] 1107 |     Gone,
[INFO] [stdout]      |     ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `MappedTileVariant` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MappedTile` is never constructed
[INFO] [stdout]     --> truncate_client/src/utils/mapper/mod.rs:1111:12
[INFO] [stdout]      |
[INFO] [stdout] 1111 | pub struct MappedTile {
[INFO] [stdout]      |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MappedTiles` is never constructed
[INFO] [stdout]     --> truncate_client/src/utils/mapper/mod.rs:1120:12
[INFO] [stdout]      |
[INFO] [stdout] 1120 | pub struct MappedTiles {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `reset_texture`, `remap_texture`, and `render_tile_to_rect` are never used
[INFO] [stdout]     --> truncate_client/src/utils/mapper/mod.rs:1129:12
[INFO] [stdout]      |
[INFO] [stdout] 1128 | impl MappedTiles {
[INFO] [stdout]      | ---------------- associated items in this implementation
[INFO] [stdout] 1129 |     pub fn new(egui_ctx: &egui::Context, capacity: usize) -> Self {
[INFO] [stdout]      |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 1140 |     fn reset_texture(capacity: usize, egui_ctx: &egui::Context) -> TextureHandle {
[INFO] [stdout]      |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1155 |     pub fn remap_texture(
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1258 |     pub fn render_tile_to_rect(&self, slot: usize, rect: Rect, ui: &mut egui::Ui) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `ImageMusher` is never used
[INFO] [stdout]  --> truncate_client/src/utils/mapper/image_manipulation.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub trait ImageMusher {
[INFO] [stdout]   |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `alpha_blend` is never used
[INFO] [stdout]    --> truncate_client/src/utils/mapper/image_manipulation.rs:118:8
[INFO] [stdout]     |
[INFO] [stdout] 118 | pub fn alpha_blend(base: Color32, overlay: Color32, overlay_opacity: Option<f32>) -> Color32 {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `current_tint` is never used
[INFO] [stdout]   --> truncate_client/src/utils/tex/mod.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl Tex {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] 23 |     pub fn current_tint(&self) -> Option<Color32> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Character` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/tex/mod.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum PieceLayer {
[INFO] [stdout]    |          ---------- variant in this enum
[INFO] [stdout] 34 |     Texture(TexQuad, Option<Color32>),
[INFO] [stdout] 35 |     Character(char, Color32, IsFlipped, YOffset),
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PieceLayer` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `with_terrain`, `with_mist`, `with_fog`, `into_piece_validity`, `merge_above_self`, and `merge_below_self` are never used
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:50:8
[INFO] [stdout]     |
[INFO] [stdout]  49 | impl TexLayers {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout]  50 |     fn with_terrain(mut self, quad: TexQuad) -> Self {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     fn with_mist(mut self, quad: TexQuad) -> Self {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  65 |     fn with_fog(mut self, quad: TexQuad) -> Self {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn into_piece_validity(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn merge_above_self(mut self, other: TexLayers) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn merge_below_self(self, mut other: TexLayers) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FGTexType` is never used
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:133:10
[INFO] [stdout]     |
[INFO] [stdout] 133 | pub enum FGTexType {
[INFO] [stdout]     |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Grass` is never constructed
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:160:5
[INFO] [stdout]     |
[INFO] [stdout] 159 | pub enum TileDecoration {
[INFO] [stdout]     |          -------------- variant in this enum
[INFO] [stdout] 160 |     Grass,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:350:12
[INFO] [stdout]     |
[INFO] [stdout] 221 | impl Tex {
[INFO] [stdout]     | -------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 350 |     pub fn town_button(color: Option<Color32>, highlight: Option<Color32>) -> Vec<TexQuad> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 365 |     pub fn artifact_button(color: Option<Color32>, highlight: Option<Color32>) -> Vec<TexQuad> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 380 |     pub fn land_button(highlight: Option<Color32>) -> Vec<TexQuad> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 391 |     pub fn text_button(ratio: f32) -> Vec<Tex> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 403 |     pub fn text_dialog(x_tiles: usize, y_tiles: usize) -> Vec<Vec<Tex>> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 615 |     pub fn water(
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 665 |     pub fn terrain(
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 800 |     pub fn landscaping(from: &Square, action: &BoardEditingMode) -> Option<TexQuad> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `render`, `get_source_position`, and `slice_as_image` are never used
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:816:12
[INFO] [stdout]     |
[INFO] [stdout] 815 | impl Tex {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] 816 |     pub fn render(self, map_texture: TextureId, rect: Rect, ui: &mut egui::Ui) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 844 |     pub fn get_source_position(&self) -> (Pos2, Vec2) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 867 |     pub fn slice_as_image(&self, base_sheet: &ColorImage) -> ColorImage {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_tex_quad` is never used
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:880:8
[INFO] [stdout]     |
[INFO] [stdout] 880 | pub fn render_tex_quad(texs: TexQuad, rect: Rect, map_texture: &TextureHandle, ui: &mut egui::Ui) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_tex_quads` is never used
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:892:8
[INFO] [stdout]     |
[INFO] [stdout] 892 | pub fn render_tex_quads(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_texs_clockwise` is never used
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:903:8
[INFO] [stdout]     |
[INFO] [stdout] 903 | pub fn render_texs_clockwise(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_tex_rows` is never used
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:936:8
[INFO] [stdout]     |
[INFO] [stdout] 936 | pub fn render_tex_rows(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `paint_dialog_background` is never used
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:965:8
[INFO] [stdout]     |
[INFO] [stdout] 965 | pub fn paint_dialog_background(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DIALOG_TIME_PER_CHAR` is never used
[INFO] [stdout]  --> truncate_client/src/utils/text.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const DIALOG_TIME_PER_CHAR: f32 = 0.05;
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TextStyle` is never used
[INFO] [stdout]   --> truncate_client/src/utils/text.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum TextStyle {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TextHelper` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/text.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct TextHelper<'a> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> truncate_client/src/utils/text.rs:25:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | impl<'a> TextHelper<'a> {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout]  25 |     pub fn heavy(
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  33 |     pub fn heavy_centered(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  42 |     fn heavy_inner(
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn light(
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn light_centered(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     fn light_inner(
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn size(&self) -> Vec2 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn mesh_size(&self) -> Vec2 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn get_partial_char_slice(&self, time_passed: f32, ui: &mut egui::Ui) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn get_partial_word_slice(&self, time_passed: f32, ui: &mut egui::Ui) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     fn inner_partial_slice(&self, at: usize, ui: &mut egui::Ui) -> Option<Self> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn paint_at(self, pos: Pos2, color: Color32, ui: &mut egui::Ui) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn paint_within(self, bounds: Rect, alignment: Align2, color: Color32, ui: &mut egui::Ui) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn paint(self, color: Color32, ui: &mut egui::Ui, centered: bool) -> egui::Response {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     pub fn full_button(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 238 |     pub fn centered_button(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 248 |     pub fn button(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     pub fn dialog(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 293 |     pub fn get_button_height(&self, _ui: &egui::Ui) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 304 |     fn paint_tile_background(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> truncate_client/src/utils/theming.rs:8:9
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct Theme {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout]  8 |     pub use_old_art: bool, // TODO: Remove after art change has flushed through
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]  9 |     pub daytime: bool,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 10 |     pub water: Color32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 11 |     pub grass: Color32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 12 |     pub text: Color32,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 13 |     pub faded: Color32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 14 |     pub button_primary: Color32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 15 |     pub button_emphasis: Color32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 16 |     pub button_secondary: Color32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 17 |     pub button_scary: Color32,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 18 |     pub ring_selected: Color32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 19 |     pub ring_selected_hovered: Color32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 20 |     pub ring_hovered: Color32,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub word_valid: Color32,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 24 |     pub word_invalid: Color32,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 25 |     pub gold_medal: Color32,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 26 |     pub grid_size: f32,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 27 |     pub letter_size: f32,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 28 |     pub tile_margin: f32,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 29 |     pub rounding: f32,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 30 |     pub animation_time: f32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 31 |     pub mobile_breakpoint: f32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Theme` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `old_day`, `fog`, and `night` are never used
[INFO] [stdout]    --> truncate_client/src/utils/theming.rs:64:12
[INFO] [stdout]     |
[INFO] [stdout]  34 | impl Theme {
[INFO] [stdout]     | ---------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn old_day() -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  93 |     pub fn fog() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn night() -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `calc_rescale` and `rescale` are never used
[INFO] [stdout]    --> truncate_client/src/utils/theming.rs:153:12
[INFO] [stdout]     |
[INFO] [stdout] 152 | impl Theme {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] 153 |     pub fn calc_rescale(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 183 |     pub fn rescale(&self, scale: f32) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Diaphanize` is never used
[INFO] [stdout]    --> truncate_client/src/utils/theming.rs:194:11
[INFO] [stdout]     |
[INFO] [stdout] 194 | pub trait Diaphanize {
[INFO] [stdout]     |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Darken` is never used
[INFO] [stdout]    --> truncate_client/src/utils/theming.rs:206:11
[INFO] [stdout]     |
[INFO] [stdout] 206 | pub trait Darken {
[INFO] [stdout]     |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `slighten` and `pastel` are never used
[INFO] [stdout]    --> truncate_client/src/utils/theming.rs:219:8
[INFO] [stdout]     |
[INFO] [stdout] 218 | pub trait Lighten {
[INFO] [stdout]     |           ------- methods in this trait
[INFO] [stdout] 219 |     fn slighten(&self) -> Self;
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 220 |     fn lighten(&self) -> Self;
[INFO] [stdout] 221 |     fn pastel(&self) -> Self;
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_qs_tick` is never used
[INFO] [stdout]  --> truncate_client/src/utils/timing.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn get_qs_tick(current_time: Duration) -> u64 {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `back_to_menu` is never used
[INFO] [stdout]  --> truncate_client/src/utils/urls.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn back_to_menu() {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `square`
[INFO] [stdout]     --> truncate_core/src/board.rs:1349:33
[INFO] [stdout]      |
[INFO] [stdout] 1349 |                     for (coord, square) in self.neighbouring_squares(coord) {
[INFO] [stdout]      |                                 ^^^^^^ help: if this is intentional, prefix it with an underscore: `_square`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `validity`
[INFO] [stdout]     --> truncate_core/src/board.rs:1354:29
[INFO] [stdout]      |
[INFO] [stdout] 1354 |                     player, validity, ..
[INFO] [stdout]      |                             ^^^^^^^^ help: try ignoring the field: `validity: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ImageMusher`
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 19 |         mapper::{ImageMusher, MappedBoard, MappedTileVariant},
[INFO] [stdout]    |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `msg`
[INFO] [stdout]   --> truncate_client/src/app_outer.rs:86:28
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub fn send_msg(&self, msg: BackchannelMsg) -> Option<String> {
[INFO] [stdout]    |                            ^^^ help: if this is intentional, prefix it with an underscore: `_msg`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:166:13
[INFO] [stdout]     |
[INFO] [stdout] 166 |         let mut game_status = app_inner::GameStatus::None("".into(), None);
[INFO] [stdout]     |             ----^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:167:13
[INFO] [stdout]     |
[INFO] [stdout] 167 |         let mut player_name = "___AUTO___".to_string();
[INFO] [stdout]     |             ----^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:168:13
[INFO] [stdout]     |
[INFO] [stdout] 168 |         let mut player_token: Option<String> = 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]    --> truncate_client/src/app_outer.rs:170:13
[INFO] [stdout]     |
[INFO] [stdout] 170 |         let mut screen_width = 0;
[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]    --> truncate_client/src/app_outer.rs:171:13
[INFO] [stdout]     |
[INFO] [stdout] 171 |         let mut screen_height = 0;
[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]    --> truncate_client/src/app_outer.rs:172:13
[INFO] [stdout]     |
[INFO] [stdout] 172 |         let mut user_agent = String::new();
[INFO] [stdout]     |             ----^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:173:13
[INFO] [stdout]     |
[INFO] [stdout] 173 |         let mut referrer = String::new();
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `glypher`
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:363:39
[INFO] [stdout]     |
[INFO] [stdout] 363 | fn load_textures(ctx: &egui::Context, glypher: &Glypher, launched_at_day: u32) -> TextureHandle {
[INFO] [stdout]     |                                       ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_glypher`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]   --> truncate_client/src/handle_messages.rs:36:72
[INFO] [stdout]    |
[INFO] [stdout] 36 |             GameMessage::JoinedLobby(player_index, id, players, board, token) => {
[INFO] [stdout]    |                                                                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `theme` is assigned to, but never used
[INFO] [stdout]    --> truncate_client/src/lil_bits/battle.rs:234:13
[INFO] [stdout]     |
[INFO] [stdout] 234 |         let mut theme = aesthetics.theme.rescale(0.5);
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_theme` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `theme` is never read
[INFO] [stdout]    --> truncate_client/src/lil_bits/battle.rs:235:9
[INFO] [stdout]     |
[INFO] [stdout] 235 |         theme.tile_margin = 0.0;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hand`
[INFO] [stdout]   --> truncate_client/src/lil_bits/board.rs:43:9
[INFO] [stdout]    |
[INFO] [stdout] 43 |         hand: &Hand,
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_hand`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `button_size`
[INFO] [stdout]   --> truncate_client/src/regions/active_game/dictionary.rs:45:17
[INFO] [stdout]    |
[INFO] [stdout] 45 |             let button_size = 48.0;
[INFO] [stdout]    |                 ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_button_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> truncate_client/src/regions/active_game/mod.rs:95:13
[INFO] [stdout]    |
[INFO] [stdout] 95 |         let mut depot = TruncateDepot {
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:95:9
[INFO] [stdout]    |
[INFO] [stdout] 95 |         ctx: &egui::Context,
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `char`
[INFO] [stdout]    --> truncate_client/src/regions/rules.rs:307:55
[INFO] [stdout]     |
[INFO] [stdout] 307 | ...                   PieceLayer::Character(char, color, is_flipped, y_offset) => {
[INFO] [stdout]     |                                             ^^^^ help: if this is intentional, prefix it with an underscore: `_char`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `color`
[INFO] [stdout]    --> truncate_client/src/regions/rules.rs:307:61
[INFO] [stdout]     |
[INFO] [stdout] 307 | ...                   PieceLayer::Character(char, color, is_flipped, y_offset) => {
[INFO] [stdout]     |                                                   ^^^^^ help: if this is intentional, prefix it with an underscore: `_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `is_flipped`
[INFO] [stdout]    --> truncate_client/src/regions/rules.rs:307:68
[INFO] [stdout]     |
[INFO] [stdout] 307 | ...                   PieceLayer::Character(char, color, is_flipped, y_offset) => {
[INFO] [stdout]     |                                                          ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_flipped`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y_offset`
[INFO] [stdout]    --> truncate_client/src/regions/rules.rs:307:80
[INFO] [stdout]     |
[INFO] [stdout] 307 | ...                   PieceLayer::Character(char, color, is_flipped, y_offset) => {
[INFO] [stdout]     |                                                                      ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_y_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_allowance`
[INFO] [stdout]    --> truncate_core/src/game.rs:374:38
[INFO] [stdout]     |
[INFO] [stdout] 374 |             rules::Timing::PerTurn { time_allowance } => unimplemented!(),
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^ help: try ignoring the field: `time_allowance: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ImageMusher`
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 19 |         mapper::{ImageMusher, MappedBoard, MappedTileVariant},
[INFO] [stdout]    |                  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `msg`
[INFO] [stdout]   --> truncate_client/src/app_outer.rs:86:28
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub fn send_msg(&self, msg: BackchannelMsg) -> Option<String> {
[INFO] [stdout]    |                            ^^^ help: if this is intentional, prefix it with an underscore: `_msg`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:166:13
[INFO] [stdout]     |
[INFO] [stdout] 166 |         let mut game_status = app_inner::GameStatus::None("".into(), None);
[INFO] [stdout]     |             ----^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:167:13
[INFO] [stdout]     |
[INFO] [stdout] 167 |         let mut player_name = "___AUTO___".to_string();
[INFO] [stdout]     |             ----^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:168:13
[INFO] [stdout]     |
[INFO] [stdout] 168 |         let mut player_token: Option<String> = 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]    --> truncate_client/src/app_outer.rs:170:13
[INFO] [stdout]     |
[INFO] [stdout] 170 |         let mut screen_width = 0;
[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]    --> truncate_client/src/app_outer.rs:171:13
[INFO] [stdout]     |
[INFO] [stdout] 171 |         let mut screen_height = 0;
[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]    --> truncate_client/src/app_outer.rs:172:13
[INFO] [stdout]     |
[INFO] [stdout] 172 |         let mut user_agent = String::new();
[INFO] [stdout]     |             ----^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:173:13
[INFO] [stdout]     |
[INFO] [stdout] 173 |         let mut referrer = String::new();
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `glypher`
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:363:39
[INFO] [stdout]     |
[INFO] [stdout] 363 | fn load_textures(ctx: &egui::Context, glypher: &Glypher, launched_at_day: u32) -> TextureHandle {
[INFO] [stdout]     |                                       ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_glypher`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `token`
[INFO] [stdout]   --> truncate_client/src/handle_messages.rs:36:72
[INFO] [stdout]    |
[INFO] [stdout] 36 |             GameMessage::JoinedLobby(player_index, id, players, board, token) => {
[INFO] [stdout]    |                                                                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_token`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `theme` is assigned to, but never used
[INFO] [stdout]    --> truncate_client/src/lil_bits/battle.rs:234:13
[INFO] [stdout]     |
[INFO] [stdout] 234 |         let mut theme = aesthetics.theme.rescale(0.5);
[INFO] [stdout]     |             ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_theme` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `theme` is never read
[INFO] [stdout]    --> truncate_client/src/lil_bits/battle.rs:235:9
[INFO] [stdout]     |
[INFO] [stdout] 235 |         theme.tile_margin = 0.0;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hand`
[INFO] [stdout]   --> truncate_client/src/lil_bits/board.rs:43:9
[INFO] [stdout]    |
[INFO] [stdout] 43 |         hand: &Hand,
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_hand`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> truncate_client/src/utils/mapper/mod.rs:841:13
[INFO] [stdout]     |
[INFO] [stdout] 841 |         let mut render_pieces = |cache: &Vec<PieceLayer>,
[INFO] [stdout]     |             ----^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `neighbors`
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:433:37
[INFO] [stdout]     |
[INFO] [stdout] 433 |     pub fn artifact(color: Color32, neighbors: Vec<BGTexType>, wind_at_coord: u8) -> TexLayers {
[INFO] [stdout]     |                                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neighbors`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `wind_at_coord`
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:433:64
[INFO] [stdout]     |
[INFO] [stdout] 433 |     pub fn artifact(color: Color32, neighbors: Vec<BGTexType>, wind_at_coord: u8) -> TexLayers {
[INFO] [stdout]     |                                                                ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_wind_at_coord`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `wind_at_coord`
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:505:57
[INFO] [stdout]     |
[INFO] [stdout] 505 |     pub fn town(color: Color32, seed: usize, tick: u64, wind_at_coord: u8) -> TexLayers {
[INFO] [stdout]     |                                                         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_wind_at_coord`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `num_tiles_y`, `outer_tile_width_px`, and `outer_tile_height_px` are never read
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:350:9
[INFO] [stdout]     |
[INFO] [stdout] 348 | pub struct TextureMeasurement {
[INFO] [stdout]     |            ------------------ fields in this struct
[INFO] [stdout] 349 |     pub num_tiles_x: usize,
[INFO] [stdout] 350 |     pub num_tiles_y: usize,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 351 |     pub outer_tile_width: f32,
[INFO] [stdout] 352 |     pub outer_tile_width_px: usize,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 353 |     pub outer_tile_height: f32,
[INFO] [stdout] 354 |     pub outer_tile_height_px: usize,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `animated` is never read
[INFO] [stdout]   --> truncate_client/src/lil_bits/changes_splash.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct ChangelogSplashUI {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] 15 |     message: Vec<String>,
[INFO] [stdout] 16 |     animated: bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `animated` is never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/changes_splash.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl ChangelogSplashUI {
[INFO] [stdout]    | ---------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn animated(mut self, animated: bool) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `interactive` is never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/hand.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl<'a> HandUI<'a> {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn interactive(mut self, interactive: bool) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `render` are never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/hand_square.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl HandSquareUI {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 14 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn render(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `new_hand_tiles` is never read
[INFO] [stdout]   --> truncate_client/src/regions/active_game/mod.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct ActiveGame {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub new_hand_tiles: Vec<usize>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ActiveGame` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Fast` and `Slow` are never constructed
[INFO] [stdout]   --> truncate_client/src/regions/replayer.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | enum PlaybackSpeed {
[INFO] [stdout]    |      ------------- variants in this enum
[INFO] [stdout] 25 |     Fast,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 26 |     Regular,
[INFO] [stdout] 27 |     Slow,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PlaybackSpeed` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `theme` is never read
[INFO] [stdout]   --> truncate_client/src/regions/replayer.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct ReplayerState {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 47 |     theme: Theme,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ReplayerState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `aesthetics` is never read
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:85:5
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub struct RulesState {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] 84 |     map_texture: TextureHandle,
[INFO] [stdout] 85 |     aesthetics: AestheticDepot,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RulesState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `category` is never read
[INFO] [stdout]   --> truncate_client/src/regions/tutorial.rs:94:5
[INFO] [stdout]    |
[INFO] [stdout] 93 | struct TutorialStage {
[INFO] [stdout]    |        ------------- field in this struct
[INFO] [stdout] 94 |     category: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BaseTileGlyphs` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/glyph_utils.rs:81:12
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct BaseTileGlyphs {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `daytime` is never read
[INFO] [stdout]    --> truncate_client/src/utils/mapper/mod.rs:121:5
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub struct MappedBoard {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 121 |     daytime: bool,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `MappedBoard` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `render_coord_to_rect` is never used
[INFO] [stdout]    --> truncate_client/src/utils/mapper/mod.rs:199:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | impl MappedBoard {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn render_coord_to_rect(&self, mut coord: Coordinate, rect: Rect, ui: &mut egui::Ui) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Dying` is never constructed
[INFO] [stdout]     --> truncate_client/src/utils/mapper/mod.rs:1105:5
[INFO] [stdout]      |
[INFO] [stdout] 1103 | pub enum MappedTileVariant {
[INFO] [stdout]      |          ----------------- variant in this enum
[INFO] [stdout] 1104 |     Healthy,
[INFO] [stdout] 1105 |     Dying,
[INFO] [stdout]      |     ^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `MappedTileVariant` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Character` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/tex/mod.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum PieceLayer {
[INFO] [stdout]    |          ---------- variant in this enum
[INFO] [stdout] 34 |     Texture(TexQuad, Option<Color32>),
[INFO] [stdout] 35 |     Character(char, Color32, IsFlipped, YOffset),
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PieceLayer` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `with_mist` is never used
[INFO] [stdout]   --> truncate_client/src/utils/tex/mod.rs:60:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | impl TexLayers {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 60 |     fn with_mist(mut self, quad: TexQuad) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `grass` is never read
[INFO] [stdout]   --> truncate_client/src/utils/theming.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct Theme {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub grass: Color32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Theme` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `fog` and `night` are never used
[INFO] [stdout]    --> truncate_client/src/utils/theming.rs:93:12
[INFO] [stdout]     |
[INFO] [stdout]  34 | impl Theme {
[INFO] [stdout]     | ---------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  93 |     pub fn fog() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn night() -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `slighten` and `pastel` are never used
[INFO] [stdout]    --> truncate_client/src/utils/theming.rs:219:8
[INFO] [stdout]     |
[INFO] [stdout] 218 | pub trait Lighten {
[INFO] [stdout]     |           ------- methods in this trait
[INFO] [stdout] 219 |     fn slighten(&self) -> Self;
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 220 |     fn lighten(&self) -> Self;
[INFO] [stdout] 221 |     fn pastel(&self) -> Self;
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `button_size`
[INFO] [stdout]   --> truncate_client/src/regions/active_game/dictionary.rs:45:17
[INFO] [stdout]    |
[INFO] [stdout] 45 |             let button_size = 48.0;
[INFO] [stdout]    |                 ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_button_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> truncate_client/src/regions/active_game/mod.rs:95:13
[INFO] [stdout]    |
[INFO] [stdout] 95 |         let mut depot = TruncateDepot {
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:95:9
[INFO] [stdout]    |
[INFO] [stdout] 95 |         ctx: &egui::Context,
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `char`
[INFO] [stdout]    --> truncate_client/src/regions/rules.rs:307:55
[INFO] [stdout]     |
[INFO] [stdout] 307 | ...                   PieceLayer::Character(char, color, is_flipped, y_offset) => {
[INFO] [stdout]     |                                             ^^^^ help: if this is intentional, prefix it with an underscore: `_char`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `color`
[INFO] [stdout]    --> truncate_client/src/regions/rules.rs:307:61
[INFO] [stdout]     |
[INFO] [stdout] 307 | ...                   PieceLayer::Character(char, color, is_flipped, y_offset) => {
[INFO] [stdout]     |                                                   ^^^^^ help: if this is intentional, prefix it with an underscore: `_color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `is_flipped`
[INFO] [stdout]    --> truncate_client/src/regions/rules.rs:307:68
[INFO] [stdout]     |
[INFO] [stdout] 307 | ...                   PieceLayer::Character(char, color, is_flipped, y_offset) => {
[INFO] [stdout]     |                                                          ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_is_flipped`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y_offset`
[INFO] [stdout]    --> truncate_client/src/regions/rules.rs:307:80
[INFO] [stdout]     |
[INFO] [stdout] 307 | ...                   PieceLayer::Character(char, color, is_flipped, y_offset) => {
[INFO] [stdout]     |                                                                      ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_y_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> truncate_client/src/utils/mapper/mod.rs:841:13
[INFO] [stdout]     |
[INFO] [stdout] 841 |         let mut render_pieces = |cache: &Vec<PieceLayer>,
[INFO] [stdout]     |             ----^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `neighbors`
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:433:37
[INFO] [stdout]     |
[INFO] [stdout] 433 |     pub fn artifact(color: Color32, neighbors: Vec<BGTexType>, wind_at_coord: u8) -> TexLayers {
[INFO] [stdout]     |                                     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_neighbors`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `wind_at_coord`
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:433:64
[INFO] [stdout]     |
[INFO] [stdout] 433 |     pub fn artifact(color: Color32, neighbors: Vec<BGTexType>, wind_at_coord: u8) -> TexLayers {
[INFO] [stdout]     |                                                                ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_wind_at_coord`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `wind_at_coord`
[INFO] [stdout]    --> truncate_client/src/utils/tex/mod.rs:505:57
[INFO] [stdout]     |
[INFO] [stdout] 505 |     pub fn town(color: Color32, seed: usize, tick: u64, wind_at_coord: u8) -> TexLayers {
[INFO] [stdout]     |                                                         ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_wind_at_coord`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `num_tiles_y`, `outer_tile_width_px`, and `outer_tile_height_px` are never read
[INFO] [stdout]    --> truncate_client/src/app_outer.rs:350:9
[INFO] [stdout]     |
[INFO] [stdout] 348 | pub struct TextureMeasurement {
[INFO] [stdout]     |            ------------------ fields in this struct
[INFO] [stdout] 349 |     pub num_tiles_x: usize,
[INFO] [stdout] 350 |     pub num_tiles_y: usize,
[INFO] [stdout]     |         ^^^^^^^^^^^
[INFO] [stdout] 351 |     pub outer_tile_width: f32,
[INFO] [stdout] 352 |     pub outer_tile_width_px: usize,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 353 |     pub outer_tile_height: f32,
[INFO] [stdout] 354 |     pub outer_tile_height_px: usize,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `animated` is never read
[INFO] [stdout]   --> truncate_client/src/lil_bits/changes_splash.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct ChangelogSplashUI {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] 15 |     message: Vec<String>,
[INFO] [stdout] 16 |     animated: bool,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `animated` is never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/changes_splash.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl ChangelogSplashUI {
[INFO] [stdout]    | ---------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn animated(mut self, animated: bool) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `interactive` is never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/hand.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl<'a> HandUI<'a> {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn interactive(mut self, interactive: bool) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `render` are never used
[INFO] [stdout]   --> truncate_client/src/lil_bits/hand_square.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl HandSquareUI {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 14 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn render(
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `new_hand_tiles` is never read
[INFO] [stdout]   --> truncate_client/src/regions/active_game/mod.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct ActiveGame {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub new_hand_tiles: Vec<usize>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ActiveGame` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Fast` and `Slow` are never constructed
[INFO] [stdout]   --> truncate_client/src/regions/replayer.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | enum PlaybackSpeed {
[INFO] [stdout]    |      ------------- variants in this enum
[INFO] [stdout] 25 |     Fast,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 26 |     Regular,
[INFO] [stdout] 27 |     Slow,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PlaybackSpeed` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `theme` is never read
[INFO] [stdout]   --> truncate_client/src/regions/replayer.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub struct ReplayerState {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 47 |     theme: Theme,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ReplayerState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `aesthetics` is never read
[INFO] [stdout]   --> truncate_client/src/regions/rules.rs:85:5
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub struct RulesState {
[INFO] [stdout]    |            ---------- field in this struct
[INFO] [stdout] 84 |     map_texture: TextureHandle,
[INFO] [stdout] 85 |     aesthetics: AestheticDepot,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RulesState` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `category` is never read
[INFO] [stdout]   --> truncate_client/src/regions/tutorial.rs:94:5
[INFO] [stdout]    |
[INFO] [stdout] 93 | struct TutorialStage {
[INFO] [stdout]    |        ------------- field in this struct
[INFO] [stdout] 94 |     category: String,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BaseTileGlyphs` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/glyph_utils.rs:81:12
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct BaseTileGlyphs {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `daytime` is never read
[INFO] [stdout]    --> truncate_client/src/utils/mapper/mod.rs:121:5
[INFO] [stdout]     |
[INFO] [stdout] 110 | pub struct MappedBoard {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 121 |     daytime: bool,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `MappedBoard` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `render_coord_to_rect` is never used
[INFO] [stdout]    --> truncate_client/src/utils/mapper/mod.rs:199:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | impl MappedBoard {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn render_coord_to_rect(&self, mut coord: Coordinate, rect: Rect, ui: &mut egui::Ui) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Dying` is never constructed
[INFO] [stdout]     --> truncate_client/src/utils/mapper/mod.rs:1105:5
[INFO] [stdout]      |
[INFO] [stdout] 1103 | pub enum MappedTileVariant {
[INFO] [stdout]      |          ----------------- variant in this enum
[INFO] [stdout] 1104 |     Healthy,
[INFO] [stdout] 1105 |     Dying,
[INFO] [stdout]      |     ^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `MappedTileVariant` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Character` is never constructed
[INFO] [stdout]   --> truncate_client/src/utils/tex/mod.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum PieceLayer {
[INFO] [stdout]    |          ---------- variant in this enum
[INFO] [stdout] 34 |     Texture(TexQuad, Option<Color32>),
[INFO] [stdout] 35 |     Character(char, Color32, IsFlipped, YOffset),
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PieceLayer` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `with_mist` is never used
[INFO] [stdout]   --> truncate_client/src/utils/tex/mod.rs:60:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | impl TexLayers {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 60 |     fn with_mist(mut self, quad: TexQuad) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `grass` is never read
[INFO] [stdout]   --> truncate_client/src/utils/theming.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct Theme {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub grass: Color32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Theme` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `fog` and `night` are never used
[INFO] [stdout]    --> truncate_client/src/utils/theming.rs:93:12
[INFO] [stdout]     |
[INFO] [stdout]  34 | impl Theme {
[INFO] [stdout]     | ---------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  93 |     pub fn fog() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn night() -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `slighten` and `pastel` are never used
[INFO] [stdout]    --> truncate_client/src/utils/theming.rs:219:8
[INFO] [stdout]     |
[INFO] [stdout] 218 | pub trait Lighten {
[INFO] [stdout]     |           ------- methods in this trait
[INFO] [stdout] 219 |     fn slighten(&self) -> Self;
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 220 |     fn lighten(&self) -> Self;
[INFO] [stdout] 221 |     fn pastel(&self) -> Self;
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> truncate_core/src/board.rs:224:18
[INFO] [stdout]     |
[INFO] [stdout] 224 |     pub fn towns(&self) -> Iter<Coordinate> {
[INFO] [stdout]     |                  ^^^^^     ^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 224 |     pub fn towns(&self) -> Iter<'_, Coordinate> {
[INFO] [stdout]     |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> truncate_core/src/board.rs:228:22
[INFO] [stdout]     |
[INFO] [stdout] 228 |     pub fn artifacts(&self) -> Iter<Coordinate> {
[INFO] [stdout]     |                      ^^^^^     ^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 228 |     pub fn artifacts(&self) -> Iter<'_, Coordinate> {
[INFO] [stdout]     |                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking rusqlite v0.32.1
[INFO] [stderr]     Checking truncate_server v0.1.0 (/opt/rustwide/workdir/truncate_server)
[INFO] [stdout] warning: unused import: `instant::Duration`
[INFO] [stdout]  --> truncate_server/src/game_state.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use instant::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ArtifactType` and `BoardParams`
[INFO] [stdout]  --> truncate_server/src/game_state.rs:8:18
[INFO] [stdout]   |
[INFO] [stdout] 8 |     generation::{ArtifactType, BoardParams},
[INFO] [stdout]   |                  ^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `instant::Duration`
[INFO] [stdout]  --> truncate_server/src/game_state.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use instant::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ArtifactType` and `BoardParams`
[INFO] [stdout]  --> truncate_server/src/game_state.rs:8:18
[INFO] [stdout]   |
[INFO] [stdout] 8 |     generation::{ArtifactType, BoardParams},
[INFO] [stdout]   |                  ^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `PuzzleComplete` and `BadRequest` are never constructed
[INFO] [stdout]   --> truncate_server/src/errors.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub enum TruncateServerError {
[INFO] [stdout]    |          ------------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 15 |     PuzzleComplete,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 16 |     #[error("something about this request was malformed")]
[INFO] [stdout] 17 |     BadRequest,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TruncateServerError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `player_id` is never read
[INFO] [stdout]    --> truncate_server/src/storage/accounts.rs:127:9
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub struct LoginResponse {
[INFO] [stdout]     |            ------------- field in this struct
[INFO] [stdout] 127 |     pub player_id: Uuid,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `last_known_changelog` is never read
[INFO] [stdout]    --> truncate_server/src/storage/accounts.rs:150:9
[INFO] [stdout]     |
[INFO] [stdout] 148 |     struct LoggedInPlayer {
[INFO] [stdout]     |            -------------- field in this struct
[INFO] [stdout] 149 |         player_id: Uuid,
[INFO] [stdout] 150 |         last_known_changelog: Option<time::OffsetDateTime>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `won` is never read
[INFO] [stdout]   --> truncate_server/src/storage/daily.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct AttemptRecord {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 17 |     won: bool,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `PuzzleComplete` and `BadRequest` are never constructed
[INFO] [stdout]   --> truncate_server/src/errors.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub enum TruncateServerError {
[INFO] [stdout]    |          ------------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 15 |     PuzzleComplete,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 16 |     #[error("something about this request was malformed")]
[INFO] [stdout] 17 |     BadRequest,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TruncateServerError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `player_id` is never read
[INFO] [stdout]    --> truncate_server/src/storage/accounts.rs:127:9
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub struct LoginResponse {
[INFO] [stdout]     |            ------------- field in this struct
[INFO] [stdout] 127 |     pub player_id: Uuid,
[INFO] [stdout]     |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `last_known_changelog` is never read
[INFO] [stdout]    --> truncate_server/src/storage/accounts.rs:150:9
[INFO] [stdout]     |
[INFO] [stdout] 148 |     struct LoggedInPlayer {
[INFO] [stdout]     |            -------------- field in this struct
[INFO] [stdout] 149 |         player_id: Uuid,
[INFO] [stdout] 150 |         last_known_changelog: Option<time::OffsetDateTime>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `won` is never read
[INFO] [stdout]   --> truncate_server/src/storage/daily.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct AttemptRecord {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 17 |     won: bool,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 5m 40s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: document-features v0.2.8, openssl v0.10.46
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 4`
[INFO] running `Command { std: "docker" "inspect" "59c6fc7a7234ec0cc1f674e1b6a150912c3f6f44835f8656b38841e25b62ee74", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "59c6fc7a7234ec0cc1f674e1b6a150912c3f6f44835f8656b38841e25b62ee74", kill_on_drop: false }`
[INFO] [stdout] 59c6fc7a7234ec0cc1f674e1b6a150912c3f6f44835f8656b38841e25b62ee74
