[INFO] cloning repository https://github.com/wilhelmges/solana_madjong
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/wilhelmges/solana_madjong" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwilhelmges%2Fsolana_madjong", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwilhelmges%2Fsolana_madjong'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 46ba886ff19c687a499464013d3c9ad6b5145294
[INFO] checking wilhelmges/solana_madjong against 5c543b0b8c73c7b72bc8284ced4fb22ead15734d for pr-160186
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwilhelmges%2Fsolana_madjong" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/wilhelmges/solana_madjong
[INFO] finished tweaking git repo https://github.com/wilhelmges/solana_madjong
[INFO] tweaked toml for git repo https://github.com/wilhelmges/solana_madjong written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/wilhelmges/solana_madjong on toolchain 5c543b0b8c73c7b72bc8284ced4fb22ead15734d
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+5c543b0b8c73c7b72bc8284ced4fb22ead15734d" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/wilhelmges/solana_madjong 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" "+5c543b0b8c73c7b72bc8284ced4fb22ead15734d" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: file `/workspace/builds/worker-2-tc1/source/src/main.rs` found to be present in multiple build targets:
[INFO] [stderr]   * `lib` target `solong`
[INFO] [stderr]   * `bin` target `solong`
[INFO] [stderr] warning: `solong` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:77db811e55d90add9212f6832c23229e3de5f1c1f9905e8cb07319ea15df73ac" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 1bc35216c677916467a0f3ba71940bea13f67579ad8d4da17e3ebd2ca566bf61
[INFO] running `Command { std: "docker" "start" "1bc35216c677916467a0f3ba71940bea13f67579ad8d4da17e3ebd2ca566bf61", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1bc35216c677916467a0f3ba71940bea13f67579ad8d4da17e3ebd2ca566bf61", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "1bc35216c677916467a0f3ba71940bea13f67579ad8d4da17e3ebd2ca566bf61" "/opt/rustwide/cargo-home/bin/cargo" "+5c543b0b8c73c7b72bc8284ced4fb22ead15734d" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1bc35216c677916467a0f3ba71940bea13f67579ad8d4da17e3ebd2ca566bf61", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "1bc35216c677916467a0f3ba71940bea13f67579ad8d4da17e3ebd2ca566bf61" "/opt/rustwide/cargo-home/bin/cargo" "+5c543b0b8c73c7b72bc8284ced4fb22ead15734d" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: file `/opt/rustwide/workdir/src/main.rs` found to be present in multiple build targets:
[INFO] [stderr]   * `lib` target `solong`
[INFO] [stderr]   * `bin` target `solong`
[INFO] [stderr] warning: `solong` (manifest) generated 1 warning
[INFO] [stderr]    Compiling quote v1.0.47
[INFO] [stderr]    Compiling syn v3.0.5
[INFO] [stderr]    Compiling serde_derive v1.0.229
[INFO] [stderr]     Checking serde v1.0.229
[INFO] [stderr]     Checking solong v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: value assigned to `depth` is never read
[INFO] [stdout]   --> src/layout_converter.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 61 |         depth = grids.len();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `depth` is never read
[INFO] [stdout]   --> src/layout_converter.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 61 |         depth = grids.len();
[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: variant `AllLevelsCompleted` is never constructed
[INFO] [stdout]   --> src/game_core/state.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum GamePhase {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 36 |     AllLevelsCompleted,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GamePhase` has derived impls for the traits `Clone` and `Debug`, but these are 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: method `get_active_tile_at` is never used
[INFO] [stdout]    --> src/game_core/state.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout]  58 | impl GameState {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn get_active_tile_at(&self, pos: TilePosition) -> Option<&Tile> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INK` is never used
[INFO] [stdout]   --> src/renderer/draw.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const INK: (u8, u8, u8) = (48, 42, 35);
[INFO] [stdout]    |       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `empty` is never used
[INFO] [stdout]   --> src/renderer/draw.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl ButtonRect {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn empty() -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]  --> src/theme/mod.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Theme {
[INFO] [stdout]   |            ----- field in this struct
[INFO] [stdout] 6 |     pub name: &'static str,
[INFO] [stdout]   |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `category` and `color` are never read
[INFO] [stdout]   --> src/theme/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct TileType {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub category: &'static str,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 14 |     pub color: (u8, u8, u8),
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `window_conf` is never used
[INFO] [stdout]   --> src/main.rs:14:4
[INFO] [stdout]    |
[INFO] [stdout] 14 | fn window_conf() -> Conf {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Screen` is never used
[INFO] [stdout]   --> src/main.rs:24:6
[INFO] [stdout]    |
[INFO] [stdout] 24 | enum Screen {
[INFO] [stdout]    |      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `App` is never constructed
[INFO] [stdout]   --> src/main.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | struct App {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `start_game`, `load_current_level`, and `handle_action` are never used
[INFO] [stdout]   --> src/main.rs:41:14
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl App {
[INFO] [stdout]    | -------- associated items in this implementation
[INFO] [stdout] 41 |     async fn new() -> Self {
[INFO] [stdout]    |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     fn start_game(&mut self) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     fn load_current_level(&mut self) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     fn handle_action(&mut self, action: Action) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `amain` is never used
[INFO] [stdout]    --> src/main.rs:139:10
[INFO] [stdout]     |
[INFO] [stdout] 139 | async fn main() {
[INFO] [stdout]     |          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `game_time_now` is never used
[INFO] [stdout]   --> src/game_core/mod.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn game_time_now() -> f64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TilePosition` is never constructed
[INFO] [stdout]  --> src/game_core/state.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct TilePosition {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TileData` is never constructed
[INFO] [stdout]   --> src/game_core/state.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct TileData {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Tile` is never constructed
[INFO] [stdout]   --> src/game_core/state.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub struct Tile {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LevelData` is never constructed
[INFO] [stdout]   --> src/game_core/state.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct LevelData {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `GamePhase` is never used
[INFO] [stdout]   --> src/game_core/state.rs:33:10
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum GamePhase {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BufferAction` is never used
[INFO] [stdout]   --> src/game_core/state.rs:41:10
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub enum BufferAction {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BUFFER_SIZE` is never used
[INFO] [stdout]   --> src/game_core/state.rs:46:11
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub const BUFFER_SIZE: usize = 4;
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GameState` is never constructed
[INFO] [stdout]   --> src/game_core/state.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct GameState {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `load_level`, `active_tile_count`, `get_tile`, and `get_active_tile_at` are never used
[INFO] [stdout]    --> src/game_core/state.rs:59:12
[INFO] [stdout]     |
[INFO] [stdout]  58 | impl GameState {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  59 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn load_level(&mut self, level: usize, level_data: &LevelData) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub fn active_tile_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn get_tile(&self, id: usize) -> Option<&Tile> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn get_active_tile_at(&self, pos: TilePosition) -> Option<&Tile> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_selectable` is never used
[INFO] [stdout]  --> src/game_core/rules.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn is_selectable(state: &GameState, tile: &Tile) -> bool {
[INFO] [stdout]   |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_blocked_from_above` is never used
[INFO] [stdout]   --> src/game_core/rules.rs:19:4
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn is_blocked_from_above(state: &GameState, tile: &Tile) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_free_side` is never used
[INFO] [stdout]   --> src/game_core/rules.rs:30:4
[INFO] [stdout]    |
[INFO] [stdout] 30 | fn has_free_side(state: &GameState, tile: &Tile) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `buffer_click` is never used
[INFO] [stdout]   --> src/game_core/rules.rs:64:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub fn buffer_click(state: &mut GameState, tile_id: usize) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `do_undo` is never used
[INFO] [stdout]    --> src/game_core/rules.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub fn do_undo(state: &mut GameState) -> bool {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `SAVE_FILE` is never used
[INFO] [stdout]  --> src/game_core/progress.rs:4:7
[INFO] [stdout]   |
[INFO] [stdout] 4 | const SAVE_FILE: &str = "save.json";
[INFO] [stdout]   |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SaveData` is never constructed
[INFO] [stdout]  --> src/game_core/progress.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | struct SaveData {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_progress` is never used
[INFO] [stdout]   --> src/game_core/progress.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn load_progress() -> usize {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_progress` is never used
[INFO] [stdout]   --> src/game_core/progress.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn save_progress(level: usize) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reset_progress` is never used
[INFO] [stdout]   --> src/game_core/progress.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub fn reset_progress() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Action` is never used
[INFO] [stdout]  --> src/input/mod.rs:2:10
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub enum Action {
[INFO] [stdout]   |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LEVEL_1` is never used
[INFO] [stdout]  --> src/levels/mod.rs:3:7
[INFO] [stdout]   |
[INFO] [stdout] 3 | const LEVEL_1: &str = include_str!("../../levels/level_01.json");
[INFO] [stdout]   |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LEVEL_2` is never used
[INFO] [stdout]  --> src/levels/mod.rs:4:7
[INFO] [stdout]   |
[INFO] [stdout] 4 | const LEVEL_2: &str = include_str!("../../levels/level_02.json");
[INFO] [stdout]   |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LEVEL_3` is never used
[INFO] [stdout]  --> src/levels/mod.rs:5:7
[INFO] [stdout]   |
[INFO] [stdout] 5 | const LEVEL_3: &str = include_str!("../../levels/level_03.json");
[INFO] [stdout]   |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LEVEL_4` is never used
[INFO] [stdout]  --> src/levels/mod.rs:6:7
[INFO] [stdout]   |
[INFO] [stdout] 6 | const LEVEL_4: &str = include_str!("../../levels/level_04.json");
[INFO] [stdout]   |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LEVEL_5` is never used
[INFO] [stdout]  --> src/levels/mod.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const LEVEL_5: &str = include_str!("../../levels/level_05.json");
[INFO] [stdout]   |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LEVEL_6` is never used
[INFO] [stdout]  --> src/levels/mod.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | const LEVEL_6: &str = include_str!("../../levels/level_06.json");
[INFO] [stdout]   |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LEVEL_7` is never used
[INFO] [stdout]  --> src/levels/mod.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const LEVEL_7: &str = include_str!("../../levels/level_07.json");
[INFO] [stdout]   |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LEVEL_8` is never used
[INFO] [stdout]   --> src/levels/mod.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const LEVEL_8: &str = include_str!("../../levels/level_08.json");
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LEVEL_9` is never used
[INFO] [stdout]   --> src/levels/mod.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const LEVEL_9: &str = include_str!("../../levels/level_09.json");
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LEVEL_10` is never used
[INFO] [stdout]   --> src/levels/mod.rs:12:7
[INFO] [stdout]    |
[INFO] [stdout] 12 | const LEVEL_10: &str = include_str!("../../levels/level_10.json");
[INFO] [stdout]    |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_level` is never used
[INFO] [stdout]   --> src/levels/mod.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn load_level(level: usize) -> Option<LevelData> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `total_levels` is never used
[INFO] [stdout]   --> src/levels/mod.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub fn total_levels() -> usize {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Renderer` is never constructed
[INFO] [stdout]  --> src/renderer/mod.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct Renderer {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TileFade` is never constructed
[INFO] [stdout]   --> src/renderer/mod.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct TileFade {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TileRenderInfo` is never constructed
[INFO] [stdout]   --> src/renderer/mod.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct TileRenderInfo {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/renderer/mod.rs:37:12
[INFO] [stdout]     |
[INFO] [stdout]  36 | impl Renderer {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout]  37 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  41 |     pub fn new_empty() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  49 |     pub fn clear_fades(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  53 |     pub fn start_fade_of_tile(&mut self, tile_id: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub async fn load_tile_textures(&mut self) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     pub fn compute_layout(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn get_tile_at(&self, x: f32, y: f32) -> Option<usize> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rgb` is never used
[INFO] [stdout]  --> src/renderer/draw.rs:8:4
[INFO] [stdout]   |
[INFO] [stdout] 8 | fn rgb(r: u8, g: u8, b: u8) -> Color {
[INFO] [stdout]   |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rgba` is never used
[INFO] [stdout]   --> src/renderer/draw.rs:12:4
[INFO] [stdout]    |
[INFO] [stdout] 12 | fn rgba(r: u8, g: u8, b: u8, a: u8) -> Color {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BG` is never used
[INFO] [stdout]   --> src/renderer/draw.rs:17:7
[INFO] [stdout]    |
[INFO] [stdout] 17 | const BG: (u8, u8, u8) = (13, 13, 43);
[INFO] [stdout]    |       ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FACE` is never used
[INFO] [stdout]   --> src/renderer/draw.rs:18:7
[INFO] [stdout]    |
[INFO] [stdout] 18 | const FACE: (u8, u8, u8) = (253, 244, 223);
[INFO] [stdout]    |       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INK` is never used
[INFO] [stdout]   --> src/renderer/draw.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const INK: (u8, u8, u8) = (48, 42, 35);
[INFO] [stdout]    |       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GOLD` is never used
[INFO] [stdout]   --> src/renderer/draw.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const GOLD: (u8, u8, u8) = (255, 205, 70);
[INFO] [stdout]    |       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `UiButtons` is never constructed
[INFO] [stdout]   --> src/renderer/draw.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub struct UiButtons {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ButtonRect` is never constructed
[INFO] [stdout]   --> src/renderer/draw.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub struct ButtonRect {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `contains` and `empty` are never used
[INFO] [stdout]   --> src/renderer/draw.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl ButtonRect {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 37 |     pub fn contains(&self, mx: f32, my: f32) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn empty() -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_rounded_rect` is never used
[INFO] [stdout]   --> src/renderer/draw.rs:50:4
[INFO] [stdout]    |
[INFO] [stdout] 50 | fn draw_rounded_rect(x: f32, y: f32, w: f32, h: f32, r: f32, color: Color) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pill_button` is never used
[INFO] [stdout]   --> src/renderer/draw.rs:67:4
[INFO] [stdout]    |
[INFO] [stdout] 67 | fn pill_button(
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pill_label` is never used
[INFO] [stdout]    --> src/renderer/draw.rs:122:4
[INFO] [stdout]     |
[INFO] [stdout] 122 | fn pill_label(font: &Font, text: &str, x: f32, y: f32, w: f32, h: f32) {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_game_screen` is never used
[INFO] [stdout]    --> src/renderer/draw.rs:140:8
[INFO] [stdout]     |
[INFO] [stdout] 140 | pub fn draw_game_screen(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_tile` is never used
[INFO] [stdout]    --> src/renderer/draw.rs:217:4
[INFO] [stdout]     |
[INFO] [stdout] 217 | fn draw_tile(
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `blend_face` is never used
[INFO] [stdout]    --> src/renderer/draw.rs:305:4
[INFO] [stdout]     |
[INFO] [stdout] 305 | fn blend_face(f: (u8, u8, u8), alpha: f32) -> Color {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_tile_fades` is never used
[INFO] [stdout]    --> src/renderer/draw.rs:315:4
[INFO] [stdout]     |
[INFO] [stdout] 315 | fn draw_tile_fades(renderer: &mut Renderer, state: &GameState, theme: &Theme, font: &Font) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_buffer` is never used
[INFO] [stdout]    --> src/renderer/draw.rs:340:4
[INFO] [stdout]     |
[INFO] [stdout] 340 | fn draw_buffer(
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_buffer_tile` is never used
[INFO] [stdout]    --> src/renderer/draw.rs:407:4
[INFO] [stdout]     |
[INFO] [stdout] 407 | fn draw_buffer_tile(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_button_widget` is never used
[INFO] [stdout]    --> src/renderer/draw.rs:452:4
[INFO] [stdout]     |
[INFO] [stdout] 452 | fn draw_button_widget(font: &Font, text: &str, rect: &ButtonRect, bg: Color, hover_bg: Color) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `touch_btn_w` is never used
[INFO] [stdout]    --> src/renderer/draw.rs:480:4
[INFO] [stdout]     |
[INFO] [stdout] 480 | fn touch_btn_w(screen_w: f32, two_side_by_side: bool) -> f32 {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `touch_btn_h` is never used
[INFO] [stdout]    --> src/renderer/draw.rs:488:4
[INFO] [stdout]     |
[INFO] [stdout] 488 | fn touch_btn_h(screen_h: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `touch_btn_gap` is never used
[INFO] [stdout]    --> src/renderer/draw.rs:492:4
[INFO] [stdout]     |
[INFO] [stdout] 492 | fn touch_btn_gap(screen_h: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StartScreenButtons` is never constructed
[INFO] [stdout]    --> src/renderer/draw.rs:496:12
[INFO] [stdout]     |
[INFO] [stdout] 496 | pub struct StartScreenButtons {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_start_screen` is never used
[INFO] [stdout]    --> src/renderer/draw.rs:501:8
[INFO] [stdout]     |
[INFO] [stdout] 501 | pub fn draw_start_screen(font: &Font, screen_w: f32, screen_h: f32) -> StartScreenButtons {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TransitionButtons` is never constructed
[INFO] [stdout]    --> src/renderer/draw.rs:553:12
[INFO] [stdout]     |
[INFO] [stdout] 553 | pub struct TransitionButtons {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_transition_screen` is never used
[INFO] [stdout]    --> src/renderer/draw.rs:557:8
[INFO] [stdout]     |
[INFO] [stdout] 557 | pub fn draw_transition_screen(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CompletionButtons` is never constructed
[INFO] [stdout]    --> src/renderer/draw.rs:602:12
[INFO] [stdout]     |
[INFO] [stdout] 602 | pub struct CompletionButtons {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_completion_screen` is never used
[INFO] [stdout]    --> src/renderer/draw.rs:607:8
[INFO] [stdout]     |
[INFO] [stdout] 607 | pub fn draw_completion_screen(font: &Font, screen_w: f32, screen_h: f32) -> CompletionButtons {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GameOverButtons` is never constructed
[INFO] [stdout]    --> src/renderer/draw.rs:673:12
[INFO] [stdout]     |
[INFO] [stdout] 673 | pub struct GameOverButtons {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_game_over_screen` is never used
[INFO] [stdout]    --> src/renderer/draw.rs:679:8
[INFO] [stdout]     |
[INFO] [stdout] 679 | pub fn draw_game_over_screen(font: &Font, screen_w: f32, screen_h: f32) -> GameOverButtons {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FG` is never used
[INFO] [stdout]  --> src/renderer/icons.rs:3:7
[INFO] [stdout]   |
[INFO] [stdout] 3 | const FG: Color = Color::new(1.0, 1.0, 1.0, 0.92);
[INFO] [stdout]   |       ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FG_DARK` is never used
[INFO] [stdout]  --> src/renderer/icons.rs:4:7
[INFO] [stdout]   |
[INFO] [stdout] 4 | const FG_DARK: Color = Color::new(0.0, 0.0, 0.0, 0.45);
[INFO] [stdout]   |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `px` is never used
[INFO] [stdout]  --> src/renderer/icons.rs:6:4
[INFO] [stdout]   |
[INFO] [stdout] 6 | fn px(cx: f32, cy: f32, s: f32, nx: f32, ny: f32) -> (f32, f32) {
[INFO] [stdout]   |    ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `thick` is never used
[INFO] [stdout]   --> src/renderer/icons.rs:10:4
[INFO] [stdout]    |
[INFO] [stdout] 10 | fn thick(s: f32) -> f32 {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `seg` is never used
[INFO] [stdout]   --> src/renderer/icons.rs:14:4
[INFO] [stdout]    |
[INFO] [stdout] 14 | fn seg(cx: f32, cy: f32, s: f32, ax: f32, ay: f32, bx: f32, by: f32, color: Color) {
[INFO] [stdout]    |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `arrow_seg` is never used
[INFO] [stdout]   --> src/renderer/icons.rs:20:4
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn arrow_seg(cx: f32, cy: f32, s: f32, ax: f32, ay: f32, bx: f32, by: f32, color: Color) {
[INFO] [stdout]    |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `disc` is never used
[INFO] [stdout]   --> src/renderer/icons.rs:42:4
[INFO] [stdout]    |
[INFO] [stdout] 42 | fn disc(cx: f32, cy: f32, s: f32, x: f32, y: f32, r: f32, color: Color) {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ring` is never used
[INFO] [stdout]   --> src/renderer/icons.rs:47:4
[INFO] [stdout]    |
[INFO] [stdout] 47 | fn ring(cx: f32, cy: f32, s: f32, x: f32, y: f32, r: f32, color: Color) {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `box_f` is never used
[INFO] [stdout]   --> src/renderer/icons.rs:52:4
[INFO] [stdout]    |
[INFO] [stdout] 52 | fn box_f(cx: f32, cy: f32, s: f32, x1: f32, y1: f32, x2: f32, y2: f32, color: Color) {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `box_l` is never used
[INFO] [stdout]   --> src/renderer/icons.rs:58:4
[INFO] [stdout]    |
[INFO] [stdout] 58 | fn box_l(cx: f32, cy: f32, s: f32, x1: f32, y1: f32, x2: f32, y2: f32, color: Color) {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tri` is never used
[INFO] [stdout]   --> src/renderer/icons.rs:71:4
[INFO] [stdout]    |
[INFO] [stdout] 71 | fn tri(cx: f32, cy: f32, s: f32, p1: (f32, f32), p2: (f32, f32), p3: (f32, f32), color: Color) {
[INFO] [stdout]    |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ell` is never used
[INFO] [stdout]   --> src/renderer/icons.rs:78:4
[INFO] [stdout]    |
[INFO] [stdout] 78 | fn ell(cx: f32, cy: f32, s: f32, x: f32, y: f32, rx: f32, ry: f32, color: Color) {
[INFO] [stdout]    |    ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_tile_icon` is never used
[INFO] [stdout]   --> src/renderer/icons.rs:83:8
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub fn draw_tile_icon(name: &str, cx: f32, cy: f32, s: f32) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_icon_inner` is never used
[INFO] [stdout]   --> src/renderer/icons.rs:91:4
[INFO] [stdout]    |
[INFO] [stdout] 91 | fn draw_icon_inner(name: &str, cx: f32, cy: f32, s: f32, color: Color) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `TILE_IMAGES` is never used
[INFO] [stdout]   --> src/renderer/tiles.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | static TILE_IMAGES: &[(&str, &[u8])] = &[
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TileTextures` is never constructed
[INFO] [stdout]   --> src/renderer/tiles.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct TileTextures {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_empty`, `load`, and `get` are never used
[INFO] [stdout]   --> src/renderer/tiles.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | impl TileTextures {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 54 |     pub fn new_empty() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub async fn load() -> Self {
[INFO] [stdout]    |                  ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     pub fn get(&self, name: &str) -> Option<&Texture2D> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Theme` is never constructed
[INFO] [stdout]  --> src/theme/mod.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Theme {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TileType` is never constructed
[INFO] [stdout]   --> src/theme/mod.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct TileType {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_theme` is never used
[INFO] [stdout]   --> src/theme/mod.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub fn get_theme() -> Theme {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `solana_theme` is never used
[INFO] [stdout]  --> src/theme/solana.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn solana_theme() -> Theme {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `AllLevelsCompleted` is never constructed
[INFO] [stdout]   --> src/game_core/state.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum GamePhase {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 36 |     AllLevelsCompleted,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GamePhase` has derived impls for the traits `Clone` and `Debug`, but these are 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: method `get_active_tile_at` is never used
[INFO] [stdout]    --> src/game_core/state.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout]  58 | impl GameState {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn get_active_tile_at(&self, pos: TilePosition) -> Option<&Tile> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INK` is never used
[INFO] [stdout]   --> src/renderer/draw.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const INK: (u8, u8, u8) = (48, 42, 35);
[INFO] [stdout]    |       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `empty` is never used
[INFO] [stdout]   --> src/renderer/draw.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl ButtonRect {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn empty() -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]  --> src/theme/mod.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Theme {
[INFO] [stdout]   |            ----- field in this struct
[INFO] [stdout] 6 |     pub name: &'static str,
[INFO] [stdout]   |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `category` and `color` are never read
[INFO] [stdout]   --> src/theme/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct TileType {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub category: &'static str,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 14 |     pub color: (u8, u8, u8),
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `AllLevelsCompleted` is never constructed
[INFO] [stdout]   --> src/game_core/state.rs:36:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub enum GamePhase {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 36 |     AllLevelsCompleted,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GamePhase` has derived impls for the traits `Clone` and `Debug`, but these are 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: method `get_active_tile_at` is never used
[INFO] [stdout]    --> src/game_core/state.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout]  58 | impl GameState {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn get_active_tile_at(&self, pos: TilePosition) -> Option<&Tile> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INK` is never used
[INFO] [stdout]   --> src/renderer/draw.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const INK: (u8, u8, u8) = (48, 42, 35);
[INFO] [stdout]    |       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `empty` is never used
[INFO] [stdout]   --> src/renderer/draw.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl ButtonRect {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn empty() -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]  --> src/theme/mod.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Theme {
[INFO] [stdout]   |            ----- field in this struct
[INFO] [stdout] 6 |     pub name: &'static str,
[INFO] [stdout]   |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `category` and `color` are never read
[INFO] [stdout]   --> src/theme/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct TileType {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub category: &'static str,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 14 |     pub color: (u8, u8, u8),
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 9.22s
[INFO] running `Command { std: "docker" "inspect" "1bc35216c677916467a0f3ba71940bea13f67579ad8d4da17e3ebd2ca566bf61", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1bc35216c677916467a0f3ba71940bea13f67579ad8d4da17e3ebd2ca566bf61", kill_on_drop: false }`
[INFO] [stdout] 1bc35216c677916467a0f3ba71940bea13f67579ad8d4da17e3ebd2ca566bf61
