[INFO] cloning repository https://github.com/KashN9sh/strategy
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/KashN9sh/strategy" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKashN9sh%2Fstrategy", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKashN9sh%2Fstrategy'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 458ac2d4fb036f841d722d32edfb17af254b3d53
[INFO] checking KashN9sh/strategy against try#438eb4c1a1c3841523d7f672601e8adbe04cff28 for pr-147589-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FKashN9sh%2Fstrategy" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/KashN9sh/strategy
[INFO] finished tweaking git repo https://github.com/KashN9sh/strategy
[INFO] tweaked toml for git repo https://github.com/KashN9sh/strategy written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/KashN9sh/strategy on toolchain 438eb4c1a1c3841523d7f672601e8adbe04cff28
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+438eb4c1a1c3841523d7f672601e8adbe04cff28" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/KashN9sh/strategy 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" "+438eb4c1a1c3841523d7f672601e8adbe04cff28" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+438eb4c1a1c3841523d7f672601e8adbe04cff28" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] f70bcc57dd5e891fab5ebb8d8087b84b600810e0605032ba5611d0683d0a665e
[INFO] running `Command { std: "docker" "start" "-a" "f70bcc57dd5e891fab5ebb8d8087b84b600810e0605032ba5611d0683d0a665e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f70bcc57dd5e891fab5ebb8d8087b84b600810e0605032ba5611d0683d0a665e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f70bcc57dd5e891fab5ebb8d8087b84b600810e0605032ba5611d0683d0a665e", kill_on_drop: false }`
[INFO] [stdout] f70bcc57dd5e891fab5ebb8d8087b84b600810e0605032ba5611d0683d0a665e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+438eb4c1a1c3841523d7f672601e8adbe04cff28" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 903f228d3a7c8933f669a991c86eb8974eef77a3790cbbfbea675bc32a69ccdd
[INFO] running `Command { std: "docker" "start" "-a" "903f228d3a7c8933f669a991c86eb8974eef77a3790cbbfbea675bc32a69ccdd", kill_on_drop: false }`
[INFO] [stderr]     Checking bitflags v2.9.1
[INFO] [stderr]     Checking log v0.4.27
[INFO] [stderr]    Compiling libc v0.2.174
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling rustix v1.0.8
[INFO] [stderr]    Compiling syn v2.0.104
[INFO] [stderr]     Checking linux-raw-sys v0.9.4
[INFO] [stderr]    Compiling cc v1.2.32
[INFO] [stderr]    Compiling wayland-sys v0.31.7
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]    Compiling cfg_aliases v0.1.1
[INFO] [stderr]    Compiling wayland-client v0.31.11
[INFO] [stderr]     Checking bytemuck v1.23.2
[INFO] [stderr]    Compiling wayland-scanner v0.31.7
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]     Checking rustix v0.38.44
[INFO] [stderr]    Compiling lock_api v0.4.13
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]    Compiling ash v0.37.3+1.3.251
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]     Checking bit-vec v0.6.3
[INFO] [stderr]     Checking hashbrown v0.15.5
[INFO] [stderr]    Compiling crc32fast v1.5.0
[INFO] [stderr]     Checking memchr v2.7.5
[INFO] [stderr]     Checking bit-set v0.5.3
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]     Checking indexmap v2.10.0
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking parking_lot_core v0.9.11
[INFO] [stderr]    Compiling wgpu-hal v0.19.5
[INFO] [stderr]     Checking spirv v0.3.0+sdk-1.3.268.0
[INFO] [stderr]     Checking gpu-descriptor-types v0.1.2
[INFO] [stderr]     Checking gpu-alloc-types v0.3.0
[INFO] [stderr]     Checking libloading v0.7.4
[INFO] [stderr]    Compiling built v0.7.7
[INFO] [stderr]     Checking slab v0.4.11
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking polling v3.10.0
[INFO] [stderr]     Checking gpu-alloc v0.6.0
[INFO] [stderr]     Checking gpu-descriptor v0.2.4
[INFO] [stderr]    Compiling rav1e v0.7.1
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]     Checking anyhow v1.0.98
[INFO] [stderr]     Checking khronos-egl v6.0.0
[INFO] [stderr]     Checking rayon v1.10.0
[INFO] [stderr]    Compiling wgpu-core v0.19.4
[INFO] [stderr]     Checking wgpu-types v0.19.2
[INFO] [stderr]    Compiling smithay-client-toolkit v0.18.1
[INFO] [stderr]     Checking ttf-parser v0.25.1
[INFO] [stderr]     Checking xcursor v0.3.10
[INFO] [stderr]     Checking glow v0.13.1
[INFO] [stderr]     Checking tiny-skia-path v0.11.4
[INFO] [stderr]     Checking maybe-rayon v0.1.1
[INFO] [stderr]     Checking flate2 v1.1.2
[INFO] [stderr]     Checking itertools v0.12.1
[INFO] [stderr]     Checking safe_arch v0.7.4
[INFO] [stderr]     Checking memmap2 v0.9.7
[INFO] [stderr]    Compiling wgpu v0.19.4
[INFO] [stderr]    Compiling simd_helpers v0.1.0
[INFO] [stderr]     Checking owned_ttf_parser v0.25.1
[INFO] [stderr]     Checking new_debug_unreachable v1.0.6
[INFO] [stderr]     Checking quick-error v2.0.1
[INFO] [stderr]     Checking bitstream-io v2.6.0
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]    Compiling wayland-backend v0.3.11
[INFO] [stderr]    Compiling noop_proc_macro v0.3.0
[INFO] [stderr]     Checking weezl v0.1.10
[INFO] [stderr]     Checking ab_glyph_rasterizer v0.1.9
[INFO] [stderr]     Checking imgref v1.11.0
[INFO] [stderr]     Checking ab_glyph v0.2.31
[INFO] [stderr]     Checking wide v0.7.33
[INFO] [stderr]     Checking tiny-skia v0.11.4
[INFO] [stderr]     Checking loop9 v0.1.5
[INFO] [stderr]     Checking zune-inflate v0.2.54
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking avif-serialize v0.8.5
[INFO] [stderr]    Compiling winit v0.29.15
[INFO] [stderr]     Checking winnow v0.7.12
[INFO] [stderr]     Checking jpeg-decoder v0.3.2
[INFO] [stderr]     Checking wayland-csd-frame v0.3.0
[INFO] [stderr]     Checking rgb v0.8.52
[INFO] [stderr]     Checking bit_field v0.10.2
[INFO] [stderr]     Checking lebe v0.5.2
[INFO] [stderr]     Checking x11rb-protocol v0.13.1
[INFO] [stderr]    Compiling serde_json v1.0.142
[INFO] [stderr]     Checking zune-core v0.4.12
[INFO] [stderr]     Checking color_quant v1.1.0
[INFO] [stderr]     Checking ultraviolet v0.9.2
[INFO] [stderr]     Checking png v0.17.16
[INFO] [stderr]     Checking zune-jpeg v0.4.20
[INFO] [stderr]     Checking gif v0.13.3
[INFO] [stderr]     Checking exr v1.73.0
[INFO] [stderr]     Checking wayland-protocols v0.31.2
[INFO] [stderr]     Checking wayland-cursor v0.31.11
[INFO] [stderr]     Checking image-webp v0.2.3
[INFO] [stderr]     Checking toml_parser v1.0.2
[INFO] [stderr]     Checking tiff v0.9.1
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking x11-dl v2.21.0
[INFO] [stderr]     Checking rand_xorshift v0.3.0
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking xkbcommon-dl v0.4.2
[INFO] [stderr]     Checking qoi v0.4.1
[INFO] [stderr]     Checking smol_str v0.2.2
[INFO] [stderr]     Checking pollster v0.3.0
[INFO] [stderr]     Checking toml_writer v1.0.2
[INFO] [stderr]     Checking noise v0.9.0
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking glam v0.30.5
[INFO] [stderr]     Checking wayland-protocols-wlr v0.2.0
[INFO] [stderr]     Checking wayland-protocols-plasma v0.2.0
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling profiling-procmacros v1.0.17
[INFO] [stderr]    Compiling equator-macro v0.4.2
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling num-derive v0.4.2
[INFO] [stderr]    Compiling arg_enum_proc_macro v0.3.4
[INFO] [stderr]     Checking profiling v1.0.17
[INFO] [stderr]     Checking x11rb v0.13.1
[INFO] [stderr]     Checking equator v0.4.2
[INFO] [stderr]     Checking aligned-vec v0.6.4
[INFO] [stderr]     Checking v_frame v0.3.9
[INFO] [stderr]     Checking av1-grain v0.2.4
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking naga v0.19.2
[INFO] [stderr]     Checking calloop v0.12.4
[INFO] [stderr]     Checking serde v1.0.219
[INFO] [stderr]     Checking calloop-wayland-source v0.2.0
[INFO] [stderr]     Checking sctk-adwaita v0.8.3
[INFO] [stderr]     Checking serde_spanned v1.0.0
[INFO] [stderr]     Checking toml_datetime v0.7.0
[INFO] [stderr]     Checking toml v0.9.5
[INFO] [stderr]     Checking ravif v0.11.20
[INFO] [stderr]     Checking image v0.25.6
[INFO] [stderr]     Checking pixels v0.15.0
[INFO] [stderr]     Checking strategy v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `blit_sprite_alpha_scaled_tinted`
[INFO] [stdout]    --> src/render/tiles.rs:262:5
[INFO] [stdout]     |
[INFO] [stdout] 262 |     blit_sprite_alpha_scaled_tinted,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/render/tiles.rs:296:5
[INFO] [stdout]     |
[INFO] [stdout] 296 |     (((77*r + 150*g + 29*b) >> 8) as u8)
[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] 296 -     (((77*r + 150*g + 29*b) >> 8) as u8)
[INFO] [stdout] 296 +     ((77*r + 150*g + 29*b) >> 8) as u8 
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `spend_wood`
[INFO] [stdout]  --> src/ui_interaction.rs:5:109
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::types::{Building, BuildingKind, Citizen, Resources, WarehouseStore, CitizenState, building_cost, spend_wood};
[INFO] [stdout]   |                                                                                                             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ResourceKind`
[INFO] [stdout]  --> src/game.rs:3:80
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::types::{Building, BuildingKind, Citizen, Resources, WarehouseStore, ResourceKind, FoodPolicy};
[INFO] [stdout]   |                                                                                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::WeatherKind as WK`
[INFO] [stdout]   --> src/main.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::WeatherKind as WK; // доступ к типу для внешних вызовов
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/main.rs:750:47
[INFO] [stdout]     |
[INFO] [stdout] 750 | ...                   let flicker = ( (t + (phase as f32)*0.001).sin() * 0.5 + 0.5 );
[INFO] [stdout]     |                                     ^^                                            ^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 750 -                                 let flicker = ( (t + (phase as f32)*0.001).sin() * 0.5 + 0.5 );
[INFO] [stdout] 750 +                                 let flicker = (t + (phase as f32)*0.001).sin() * 0.5 + 0.5 ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `blit_sprite_alpha_scaled_tinted`
[INFO] [stdout]    --> src/render/tiles.rs:262:5
[INFO] [stdout]     |
[INFO] [stdout] 262 |     blit_sprite_alpha_scaled_tinted,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]    --> src/render/tiles.rs:296:5
[INFO] [stdout]     |
[INFO] [stdout] 296 |     (((77*r + 150*g + 29*b) >> 8) as u8)
[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] 296 -     (((77*r + 150*g + 29*b) >> 8) as u8)
[INFO] [stdout] 296 +     ((77*r + 150*g + 29*b) >> 8) as u8 
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `spend_wood`
[INFO] [stdout]  --> src/ui_interaction.rs:5:109
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::types::{Building, BuildingKind, Citizen, Resources, WarehouseStore, CitizenState, building_cost, spend_wood};
[INFO] [stdout]   |                                                                                                             ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ResourceKind`
[INFO] [stdout]  --> src/game.rs:3:80
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::types::{Building, BuildingKind, Citizen, Resources, WarehouseStore, ResourceKind, FoodPolicy};
[INFO] [stdout]   |                                                                                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::WeatherKind as WK`
[INFO] [stdout]   --> src/main.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::WeatherKind as WK; // доступ к типу для внешних вызовов
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/main.rs:750:47
[INFO] [stdout]     |
[INFO] [stdout] 750 | ...                   let flicker = ( (t + (phase as f32)*0.001).sin() * 0.5 + 0.5 );
[INFO] [stdout]     |                                     ^^                                            ^^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 750 -                                 let flicker = ( (t + (phase as f32)*0.001).sin() * 0.5 + 0.5 );
[INFO] [stdout] 750 +                                 let flicker = (t + (phase as f32)*0.001).sin() * 0.5 + 0.5 ;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]     --> src/main.rs:1428:41
[INFO] [stdout]      |
[INFO] [stdout] 1428 | ...                   let x = rng.gen_range(0.0..width_i32 as f32);
[INFO] [stdout]      |                                   ^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]     --> src/main.rs:1429:41
[INFO] [stdout]      |
[INFO] [stdout] 1429 | ...                   let y = rng.gen_range(0.0..height_i32 as f32);
[INFO] [stdout]      |                                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]     --> src/main.rs:1430:45
[INFO] [stdout]      |
[INFO] [stdout] 1430 | ...                   let speed = rng.gen_range(8.0..20.0);
[INFO] [stdout]      |                                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]     --> src/main.rs:1431:45
[INFO] [stdout]      |
[INFO] [stdout] 1431 | ...                   let angle = rng.gen_range(0.0..std::f32::consts::TAU);
[INFO] [stdout]      |                                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]     --> src/main.rs:1433:45
[INFO] [stdout]      |
[INFO] [stdout] 1433 | ...                   let phase = rng.gen_range(0.0..std::f32::consts::TAU);
[INFO] [stdout]      |                                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]     --> src/main.rs:1434:46
[INFO] [stdout]      |
[INFO] [stdout] 1434 | ...                   let life_s = rng.gen_range(6.0..14.0);
[INFO] [stdout]      |                                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]     --> src/main.rs:1530:24
[INFO] [stdout]      |
[INFO] [stdout] 1530 |     let sec: f32 = rng.gen_range(base_min..base_max);
[INFO] [stdout]      |                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]     --> src/main.rs:1544:21
[INFO] [stdout]      |
[INFO] [stdout] 1544 |     let mut r = rng.gen_range(0.0..total);
[INFO] [stdout]      |                     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]     --> src/main.rs:1428:41
[INFO] [stdout]      |
[INFO] [stdout] 1428 | ...                   let x = rng.gen_range(0.0..width_i32 as f32);
[INFO] [stdout]      |                                   ^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]     --> src/main.rs:1429:41
[INFO] [stdout]      |
[INFO] [stdout] 1429 | ...                   let y = rng.gen_range(0.0..height_i32 as f32);
[INFO] [stdout]      |                                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]     --> src/main.rs:1430:45
[INFO] [stdout]      |
[INFO] [stdout] 1430 | ...                   let speed = rng.gen_range(8.0..20.0);
[INFO] [stdout]      |                                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]     --> src/main.rs:1431:45
[INFO] [stdout]      |
[INFO] [stdout] 1431 | ...                   let angle = rng.gen_range(0.0..std::f32::consts::TAU);
[INFO] [stdout]      |                                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]     --> src/main.rs:1433:45
[INFO] [stdout]      |
[INFO] [stdout] 1433 | ...                   let phase = rng.gen_range(0.0..std::f32::consts::TAU);
[INFO] [stdout]      |                                       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]     --> src/main.rs:1434:46
[INFO] [stdout]      |
[INFO] [stdout] 1434 | ...                   let life_s = rng.gen_range(6.0..14.0);
[INFO] [stdout]      |                                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]     --> src/main.rs:1530:24
[INFO] [stdout]      |
[INFO] [stdout] 1530 |     let sec: f32 = rng.gen_range(base_min..base_max);
[INFO] [stdout]      |                        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]     --> src/main.rs:1544:21
[INFO] [stdout]      |
[INFO] [stdout] 1544 |     let mut r = rng.gen_range(0.0..total);
[INFO] [stdout]      |                     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/render/map.rs:87:17
[INFO] [stdout]    |
[INFO] [stdout] 87 |                 _ => {}
[INFO] [stdout]    |                 ^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]   --> src/render/map.rs:87:17
[INFO] [stdout]    |
[INFO] [stdout] 38 |                 crate::types::TileKind::Grass => {
[INFO] [stdout]    |                 ----------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 55 |                 crate::types::TileKind::Forest => {
[INFO] [stdout]    |                 ------------------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 66 |                 crate::types::TileKind::Water => {
[INFO] [stdout]    |                 ----------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 87 |                 _ => {}
[INFO] [stdout]    |                 ^ collectively making this unreachable
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/render/map.rs:87:17
[INFO] [stdout]    |
[INFO] [stdout] 87 |                 _ => {}
[INFO] [stdout]    |                 ^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]   --> src/render/map.rs:87:17
[INFO] [stdout]    |
[INFO] [stdout] 38 |                 crate::types::TileKind::Grass => {
[INFO] [stdout]    |                 ----------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 55 |                 crate::types::TileKind::Forest => {
[INFO] [stdout]    |                 ------------------------------ matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 66 |                 crate::types::TileKind::Water => {
[INFO] [stdout]    |                 ----------------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 87 |                 _ => {}
[INFO] [stdout]    |                 ^ collectively making this unreachable
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map_w`
[INFO] [stdout]    --> src/render/map.rs:496:9
[INFO] [stdout]     |
[INFO] [stdout] 496 |     let map_w = w_tiles * cell_px;
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_map_w`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map_h`
[INFO] [stdout]    --> src/render/map.rs:497:9
[INFO] [stdout]     |
[INFO] [stdout] 497 |     let map_h = h_tiles * cell_px;
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_map_h`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `px`
[INFO] [stdout]    --> src/ui.rs:144:26
[INFO] [stdout]     |
[INFO] [stdout] 144 |     let pad = 8 * s; let px = 2 * s; let icon = 10 * s;
[INFO] [stdout]     |                          ^^ help: if this is intentional, prefix it with an underscore: `_px`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map_w`
[INFO] [stdout]    --> src/render/map.rs:496:9
[INFO] [stdout]     |
[INFO] [stdout] 496 |     let map_w = w_tiles * cell_px;
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_map_w`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map_h`
[INFO] [stdout]    --> src/render/map.rs:497:9
[INFO] [stdout]     |
[INFO] [stdout] 497 |     let map_h = h_tiles * cell_px;
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_map_h`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ui.rs:505:17
[INFO] [stdout]     |
[INFO] [stdout] 505 |             let mut info_x = lay.x + text_w(housing_text.as_bytes(), s) + 12 * s;
[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: unused variable: `w`
[INFO] [stdout]    --> src/ui.rs:245:20
[INFO] [stdout]     |
[INFO] [stdout] 245 |         let (x, y, w, h) = ui_slot(&mut left, icon_size + 4 + number_w(9999, s) + 6 * s);
[INFO] [stdout]     |                    ^
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `R`
[INFO] [stdout]     |
[INFO] [stdout] 245 -         let (x, y, w, h) = ui_slot(&mut left, icon_size + 4 + number_w(9999, s) + 6 * s);
[INFO] [stdout] 245 +         let (x, y, run::{closure#5}::R, h) = ui_slot(&mut left, icon_size + 4 + number_w(9999, s) + 6 * s);
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 245 |         let (x, y, _w, h) = ui_slot(&mut left, icon_size + 4 + number_w(9999, s) + 6 * s);
[INFO] [stdout]     |                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `h`
[INFO] [stdout]    --> src/ui.rs:245:23
[INFO] [stdout]     |
[INFO] [stdout] 245 |         let (x, y, w, h) = ui_slot(&mut left, icon_size + 4 + number_w(9999, s) + 6 * s);
[INFO] [stdout]     |                       ^
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `R`
[INFO] [stdout]     |
[INFO] [stdout] 245 -         let (x, y, w, h) = ui_slot(&mut left, icon_size + 4 + number_w(9999, s) + 6 * s);
[INFO] [stdout] 245 +         let (x, y, w, run::{closure#5}::R) = ui_slot(&mut left, icon_size + 4 + number_w(9999, s) + 6 * s);
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 245 |         let (x, y, w, _h) = ui_slot(&mut left, icon_size + 4 + number_w(9999, s) + 6 * s);
[INFO] [stdout]     |                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y_info`
[INFO] [stdout]    --> src/ui.rs:275:48
[INFO] [stdout]     |
[INFO] [stdout] 275 |     let px = 2 * s; let gap_info = 2 * px; let y_info = 8 * s; let pad_right = 8 * s;
[INFO] [stdout]     |                                                ^^^^^^ help: if this is intentional, prefix it with an underscore: `_y_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `by`
[INFO] [stdout]    --> src/ui.rs:454:22
[INFO] [stdout]     |
[INFO] [stdout] 454 | ...   let (bx, by, bw, _bh) = ui_button_group(frame, fw, fh, &mut row_items, label, active, hovered_btn, can_afford, text_col, ButtonStyl...
[INFO] [stdout]     |                ^^ help: if this is intentional, prefix it with an underscore: `_by`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `cx` is never read
[INFO] [stdout]    --> src/ui.rs:316:9
[INFO] [stdout]     |
[INFO] [stdout] 316 |         cx += draw_two_digits(frame, fw, fh, cx, iy, minutes_u, [230,230,230,255], s);
[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: `px`
[INFO] [stdout]    --> src/ui.rs:144:26
[INFO] [stdout]     |
[INFO] [stdout] 144 |     let pad = 8 * s; let px = 2 * s; let icon = 10 * s;
[INFO] [stdout]     |                          ^^ help: if this is intentional, prefix it with an underscore: `_px`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/ui.rs:505:17
[INFO] [stdout]     |
[INFO] [stdout] 505 |             let mut info_x = lay.x + text_w(housing_text.as_bytes(), s) + 12 * s;
[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: unused variable: `w`
[INFO] [stdout]    --> src/ui.rs:245:20
[INFO] [stdout]     |
[INFO] [stdout] 245 |         let (x, y, w, h) = ui_slot(&mut left, icon_size + 4 + number_w(9999, s) + 6 * s);
[INFO] [stdout]     |                    ^
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `R`
[INFO] [stdout]     |
[INFO] [stdout] 245 -         let (x, y, w, h) = ui_slot(&mut left, icon_size + 4 + number_w(9999, s) + 6 * s);
[INFO] [stdout] 245 +         let (x, y, run::{closure#5}::R, h) = ui_slot(&mut left, icon_size + 4 + number_w(9999, s) + 6 * s);
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 245 |         let (x, y, _w, h) = ui_slot(&mut left, icon_size + 4 + number_w(9999, s) + 6 * s);
[INFO] [stdout]     |                    +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `h`
[INFO] [stdout]    --> src/ui.rs:245:23
[INFO] [stdout]     |
[INFO] [stdout] 245 |         let (x, y, w, h) = ui_slot(&mut left, icon_size + 4 + number_w(9999, s) + 6 * s);
[INFO] [stdout]     |                       ^
[INFO] [stdout]     |
[INFO] [stdout] help: you might have meant to pattern match on the similarly named constant `R`
[INFO] [stdout]     |
[INFO] [stdout] 245 -         let (x, y, w, h) = ui_slot(&mut left, icon_size + 4 + number_w(9999, s) + 6 * s);
[INFO] [stdout] 245 +         let (x, y, w, run::{closure#5}::R) = ui_slot(&mut left, icon_size + 4 + number_w(9999, s) + 6 * s);
[INFO] [stdout]     |
[INFO] [stdout] help: if this is intentional, prefix it with an underscore
[INFO] [stdout]     |
[INFO] [stdout] 245 |         let (x, y, w, _h) = ui_slot(&mut left, icon_size + 4 + number_w(9999, s) + 6 * s);
[INFO] [stdout]     |                       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y_info`
[INFO] [stdout]    --> src/ui.rs:275:48
[INFO] [stdout]     |
[INFO] [stdout] 275 |     let px = 2 * s; let gap_info = 2 * px; let y_info = 8 * s; let pad_right = 8 * s;
[INFO] [stdout]     |                                                ^^^^^^ help: if this is intentional, prefix it with an underscore: `_y_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `by`
[INFO] [stdout]    --> src/ui.rs:454:22
[INFO] [stdout]     |
[INFO] [stdout] 454 | ...   let (bx, by, bw, _bh) = ui_button_group(frame, fw, fh, &mut row_items, label, active, hovered_btn, can_afford, text_col, ButtonStyl...
[INFO] [stdout]     |                ^^ help: if this is intentional, prefix it with an underscore: `_by`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `cx` is never read
[INFO] [stdout]    --> src/ui.rs:316:9
[INFO] [stdout]     |
[INFO] [stdout] 316 |         cx += draw_two_digits(frame, fw, fh, cx, iy, minutes_u, [230,230,230,255], s);
[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: `by0`
[INFO] [stdout]   --> src/ui_interaction.rs:62:9
[INFO] [stdout]    |
[INFO] [stdout] 62 |     let by0 = height_i32 - bottom_bar_h; let padb = 8 * ui_s; let btn_h = 18 * ui_s;
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_by0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `padb`
[INFO] [stdout]   --> src/ui_interaction.rs:62:46
[INFO] [stdout]    |
[INFO] [stdout] 62 |     let by0 = height_i32 - bottom_bar_h; let padb = 8 * ui_s; let btn_h = 18 * ui_s;
[INFO] [stdout]    |                                              ^^^^ help: if this is intentional, prefix it with an underscore: `_padb`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `btn_h`
[INFO] [stdout]   --> src/ui_interaction.rs:62:67
[INFO] [stdout]    |
[INFO] [stdout] 62 |     let by0 = height_i32 - bottom_bar_h; let padb = 8 * ui_s; let btn_h = 18 * ui_s;
[INFO] [stdout]    |                                                                   ^^^^^ help: if this is intentional, prefix it with an underscore: `_btn_h`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `resources`
[INFO] [stdout]  --> src/game.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     resources: &mut Resources,
[INFO] [stdout]   |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_resources`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `warehouses`
[INFO] [stdout]   --> src/game.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     warehouses: &mut Vec<WarehouseStore>,
[INFO] [stdout]    |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_warehouses`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game.rs:81:13
[INFO] [stdout]    |
[INFO] [stdout] 81 |         let mut take_bread = |wss: &mut [WarehouseStore], res: &mut Resources, consumed: &mut u8| {
[INFO] [stdout]    |             ----^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game.rs:85:13
[INFO] [stdout]    |
[INFO] [stdout] 85 |         let mut take_fish = |wss: &mut [WarehouseStore], res: &mut Resources, consumed: &mut u8| {
[INFO] [stdout]    |             ----^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `by0`
[INFO] [stdout]   --> src/ui_interaction.rs:62:9
[INFO] [stdout]    |
[INFO] [stdout] 62 |     let by0 = height_i32 - bottom_bar_h; let padb = 8 * ui_s; let btn_h = 18 * ui_s;
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_by0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `padb`
[INFO] [stdout]   --> src/ui_interaction.rs:62:46
[INFO] [stdout]    |
[INFO] [stdout] 62 |     let by0 = height_i32 - bottom_bar_h; let padb = 8 * ui_s; let btn_h = 18 * ui_s;
[INFO] [stdout]    |                                              ^^^^ help: if this is intentional, prefix it with an underscore: `_padb`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `btn_h`
[INFO] [stdout]   --> src/ui_interaction.rs:62:67
[INFO] [stdout]    |
[INFO] [stdout] 62 |     let by0 = height_i32 - bottom_bar_h; let padb = 8 * ui_s; let btn_h = 18 * ui_s;
[INFO] [stdout]    |                                                                   ^^^^^ help: if this is intentional, prefix it with an underscore: `_btn_h`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `resources`
[INFO] [stdout]  --> src/game.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     resources: &mut Resources,
[INFO] [stdout]   |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_resources`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `warehouses`
[INFO] [stdout]   --> src/game.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     warehouses: &mut Vec<WarehouseStore>,
[INFO] [stdout]    |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_warehouses`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game.rs:81:13
[INFO] [stdout]    |
[INFO] [stdout] 81 |         let mut take_bread = |wss: &mut [WarehouseStore], res: &mut Resources, consumed: &mut u8| {
[INFO] [stdout]    |             ----^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game.rs:85:13
[INFO] [stdout]    |
[INFO] [stdout] 85 |         let mut take_fish = |wss: &mut [WarehouseStore], res: &mut Resources, consumed: &mut u8| {
[INFO] [stdout]    |             ----^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `did_step` is assigned to, but never used
[INFO] [stdout]    --> src/main.rs:922:21
[INFO] [stdout]     |
[INFO] [stdout] 922 |                 let mut did_step = false;
[INFO] [stdout]     |                     ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_did_step` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `did_step` is never read
[INFO] [stdout]     --> src/main.rs:1404:25
[INFO] [stdout]      |
[INFO] [stdout] 1404 |                         did_step = true;
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value captured by `drag_prev_tile` is never read
[INFO] [stdout]    --> src/main.rs:489:33
[INFO] [stdout]     |
[INFO] [stdout] 489 | ...                   drag_prev_tile = Some(tp);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: did you mean to capture by reference instead?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `drag_prev_tile` is never read
[INFO] [stdout]    --> src/main.rs:525:25
[INFO] [stdout]     |
[INFO] [stdout] 525 |                         drag_prev_tile = None;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `drag_prev_tile` is never read
[INFO] [stdout]    --> src/main.rs:489:33
[INFO] [stdout]     |
[INFO] [stdout] 489 | ...                   drag_prev_tile = Some(tp);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `drag_prev_tile`
[INFO] [stdout]    --> src/main.rs:323:9
[INFO] [stdout]     |
[INFO] [stdout] 323 |     let mut drag_prev_tile: Option<IVec2> = None;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_drag_prev_tile`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SaveData` is never constructed
[INFO] [stdout]   --> src/main.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | struct SaveData {
[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 `SaveBuilding` is never constructed
[INFO] [stdout]   --> src/main.rs:73:8
[INFO] [stdout]    |
[INFO] [stdout] 73 | struct SaveBuilding { kind: BuildingKind, x: i32, y: i32, timer_ms: i32, #[serde(default)] workers_target: i32 }
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SaveTree` is never constructed
[INFO] [stdout]   --> src/main.rs:76:8
[INFO] [stdout]    |
[INFO] [stdout] 76 | struct SaveTree { x: i32, y: i32, stage: u8, age_ms: i32 }
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spend_wood` is never used
[INFO] [stdout]    --> src/types.rs:190:8
[INFO] [stdout]     |
[INFO] [stdout] 190 | pub fn spend_wood(warehouses: &mut Vec<WarehouseStore>, resources: &mut Resources, mut amount: i32) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/world.rs:243:12
[INFO] [stdout]     |
[INFO] [stdout]  43 | impl World {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 243 |     pub fn is_river(&self, p: IVec2) -> bool { self.rivers.contains(&(p.x, p.y)) }
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 244 |     fn compute_is_river(&self, p: IVec2) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     fn compute_has_clay_deposit(&self, p: IVec2) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     fn compute_has_clay_deposit_biome(&self, p: IVec2, bm: BiomeKind) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     fn compute_has_stone_deposit(&self, p: IVec2) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 294 |     fn compute_has_stone_deposit_biome(&self, p: IVec2, bm: BiomeKind) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 306 |     fn compute_has_iron_deposit(&self, p: IVec2) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     fn compute_has_iron_deposit_biome(&self, p: IVec2, bm: BiomeKind) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_pixel_circle_outline` is never used
[INFO] [stdout]   --> src/render/tiles.rs:63:4
[INFO] [stdout]    |
[INFO] [stdout] 63 | fn draw_pixel_circle_outline(frame: &mut [u8], width: i32, height: i32, cx: i32, cy: i32, r: i32, color: [u8; 4]) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_hspan` is never used
[INFO] [stdout]   --> src/render/tiles.rs:89:4
[INFO] [stdout]    |
[INFO] [stdout] 89 | fn draw_hspan(frame: &mut [u8], width: i32, height: i32, x0: i32, x1: i32, y: i32, color: [u8; 4]) {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_pixel_circle_filled` is never used
[INFO] [stdout]   --> src/render/tiles.rs:99:4
[INFO] [stdout]    |
[INFO] [stdout] 99 | fn draw_pixel_circle_filled(frame: &mut [u8], width: i32, height: i32, cx: i32, cy: i32, r: i32, color: [u8; 4]) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `darken_color` is never used
[INFO] [stdout]    --> src/render/tiles.rs:121:4
[INFO] [stdout]     |
[INFO] [stdout] 121 | fn darken_color(color: [u8; 4], factor_num: u16, factor_den: u16) -> [u8; 4] {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lighten_color` is never used
[INFO] [stdout]    --> src/render/tiles.rs:128:4
[INFO] [stdout]     |
[INFO] [stdout] 128 | fn lighten_color(color: [u8; 4], delta: i16) -> [u8; 4] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_emote` is never used
[INFO] [stdout]    --> src/render/tiles.rs:154:8
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub fn draw_emote(frame: &mut [u8], width: i32, height: i32, x: i32, y: i32, kind: u8, s: i32) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `blit_sprite_alpha_scaled_tinted` is never used
[INFO] [stdout]   --> src/render/utils.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub fn blit_sprite_alpha_scaled_tinted(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_buildings` is never used
[INFO] [stdout]    --> src/render/map.rs:175:8
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub fn draw_buildings(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_structures_sorted` is never used
[INFO] [stdout]    --> src/render/map.rs:252:8
[INFO] [stdout]     |
[INFO] [stdout] 252 | pub fn draw_structures_sorted(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_structures_scanned` is never used
[INFO] [stdout]    --> src/render/map.rs:296:8
[INFO] [stdout]     |
[INFO] [stdout] 296 | pub fn draw_structures_scanned(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Column` is never constructed
[INFO] [stdout]   --> src/ui.rs:15:23
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub enum UiDir { Row, Column }
[INFO] [stdout]    |          -----        ^^^^^^
[INFO] [stdout]    |          |
[INFO] [stdout]    |          variant in this enum
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UiDir` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ui_column` is never used
[INFO] [stdout]   --> src/ui.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn ui_column(x: i32, y: i32, s: i32) -> UiGroup { UiGroup { x, y, dir: UiDir::Column, cursor_x: x, cursor_y: y, gap: ui_gap(s), item_...
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `w` and `h` are never read
[INFO] [stdout]    --> src/ui.rs:200:54
[INFO] [stdout]     |
[INFO] [stdout] 200 | pub struct EconomyLayout { pub x:i32, pub y:i32, pub w:i32, pub h:i32, pub tax_minus_x:i32, pub tax_minus_y:i32, pub tax_minus_w:i32, pub...
[INFO] [stdout]     |            ------------- fields in this struct       ^          ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EconomyLayout` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `production_weather_penalty` is never used
[INFO] [stdout]   --> src/game.rs:45:8
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub fn production_weather_penalty(kind: crate::WeatherKind) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `did_step` is assigned to, but never used
[INFO] [stdout]    --> src/main.rs:922:21
[INFO] [stdout]     |
[INFO] [stdout] 922 |                 let mut did_step = false;
[INFO] [stdout]     |                     ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_did_step` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `did_step` is never read
[INFO] [stdout]     --> src/main.rs:1404:25
[INFO] [stdout]      |
[INFO] [stdout] 1404 |                         did_step = true;
[INFO] [stdout]      |                         ^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value captured by `drag_prev_tile` is never read
[INFO] [stdout]    --> src/main.rs:489:33
[INFO] [stdout]     |
[INFO] [stdout] 489 | ...                   drag_prev_tile = Some(tp);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: did you mean to capture by reference instead?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `drag_prev_tile` is never read
[INFO] [stdout]    --> src/main.rs:525:25
[INFO] [stdout]     |
[INFO] [stdout] 525 |                         drag_prev_tile = None;
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `drag_prev_tile` is never read
[INFO] [stdout]    --> src/main.rs:489:33
[INFO] [stdout]     |
[INFO] [stdout] 489 | ...                   drag_prev_tile = Some(tp);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `drag_prev_tile`
[INFO] [stdout]    --> src/main.rs:323:9
[INFO] [stdout]     |
[INFO] [stdout] 323 |     let mut drag_prev_tile: Option<IVec2> = None;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_drag_prev_tile`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SaveData` is never constructed
[INFO] [stdout]   --> src/main.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | struct SaveData {
[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 `SaveBuilding` is never constructed
[INFO] [stdout]   --> src/main.rs:73:8
[INFO] [stdout]    |
[INFO] [stdout] 73 | struct SaveBuilding { kind: BuildingKind, x: i32, y: i32, timer_ms: i32, #[serde(default)] workers_target: i32 }
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SaveTree` is never constructed
[INFO] [stdout]   --> src/main.rs:76:8
[INFO] [stdout]    |
[INFO] [stdout] 76 | struct SaveTree { x: i32, y: i32, stage: u8, age_ms: i32 }
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spend_wood` is never used
[INFO] [stdout]    --> src/types.rs:190:8
[INFO] [stdout]     |
[INFO] [stdout] 190 | pub fn spend_wood(warehouses: &mut Vec<WarehouseStore>, resources: &mut Resources, mut amount: i32) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/world.rs:243:12
[INFO] [stdout]     |
[INFO] [stdout]  43 | impl World {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 243 |     pub fn is_river(&self, p: IVec2) -> bool { self.rivers.contains(&(p.x, p.y)) }
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 244 |     fn compute_is_river(&self, p: IVec2) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 256 |     fn compute_has_clay_deposit(&self, p: IVec2) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     fn compute_has_clay_deposit_biome(&self, p: IVec2, bm: BiomeKind) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     fn compute_has_stone_deposit(&self, p: IVec2) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 294 |     fn compute_has_stone_deposit_biome(&self, p: IVec2, bm: BiomeKind) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 306 |     fn compute_has_iron_deposit(&self, p: IVec2) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 319 |     fn compute_has_iron_deposit_biome(&self, p: IVec2, bm: BiomeKind) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_pixel_circle_outline` is never used
[INFO] [stdout]   --> src/render/tiles.rs:63:4
[INFO] [stdout]    |
[INFO] [stdout] 63 | fn draw_pixel_circle_outline(frame: &mut [u8], width: i32, height: i32, cx: i32, cy: i32, r: i32, color: [u8; 4]) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_hspan` is never used
[INFO] [stdout]   --> src/render/tiles.rs:89:4
[INFO] [stdout]    |
[INFO] [stdout] 89 | fn draw_hspan(frame: &mut [u8], width: i32, height: i32, x0: i32, x1: i32, y: i32, color: [u8; 4]) {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_pixel_circle_filled` is never used
[INFO] [stdout]   --> src/render/tiles.rs:99:4
[INFO] [stdout]    |
[INFO] [stdout] 99 | fn draw_pixel_circle_filled(frame: &mut [u8], width: i32, height: i32, cx: i32, cy: i32, r: i32, color: [u8; 4]) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `darken_color` is never used
[INFO] [stdout]    --> src/render/tiles.rs:121:4
[INFO] [stdout]     |
[INFO] [stdout] 121 | fn darken_color(color: [u8; 4], factor_num: u16, factor_den: u16) -> [u8; 4] {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `lighten_color` is never used
[INFO] [stdout]    --> src/render/tiles.rs:128:4
[INFO] [stdout]     |
[INFO] [stdout] 128 | fn lighten_color(color: [u8; 4], delta: i16) -> [u8; 4] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_emote` is never used
[INFO] [stdout]    --> src/render/tiles.rs:154:8
[INFO] [stdout]     |
[INFO] [stdout] 154 | pub fn draw_emote(frame: &mut [u8], width: i32, height: i32, x: i32, y: i32, kind: u8, s: i32) {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `blit_sprite_alpha_scaled_tinted` is never used
[INFO] [stdout]   --> src/render/utils.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub fn blit_sprite_alpha_scaled_tinted(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_buildings` is never used
[INFO] [stdout]    --> src/render/map.rs:175:8
[INFO] [stdout]     |
[INFO] [stdout] 175 | pub fn draw_buildings(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_structures_sorted` is never used
[INFO] [stdout]    --> src/render/map.rs:252:8
[INFO] [stdout]     |
[INFO] [stdout] 252 | pub fn draw_structures_sorted(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_structures_scanned` is never used
[INFO] [stdout]    --> src/render/map.rs:296:8
[INFO] [stdout]     |
[INFO] [stdout] 296 | pub fn draw_structures_scanned(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Column` is never constructed
[INFO] [stdout]   --> src/ui.rs:15:23
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub enum UiDir { Row, Column }
[INFO] [stdout]    |          -----        ^^^^^^
[INFO] [stdout]    |          |
[INFO] [stdout]    |          variant in this enum
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UiDir` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ui_column` is never used
[INFO] [stdout]   --> src/ui.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn ui_column(x: i32, y: i32, s: i32) -> UiGroup { UiGroup { x, y, dir: UiDir::Column, cursor_x: x, cursor_y: y, gap: ui_gap(s), item_...
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `w` and `h` are never read
[INFO] [stdout]    --> src/ui.rs:200:54
[INFO] [stdout]     |
[INFO] [stdout] 200 | pub struct EconomyLayout { pub x:i32, pub y:i32, pub w:i32, pub h:i32, pub tax_minus_x:i32, pub tax_minus_y:i32, pub tax_minus_w:i32, pub...
[INFO] [stdout]     |            ------------- fields in this struct       ^          ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `EconomyLayout` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `production_weather_penalty` is never used
[INFO] [stdout]   --> src/game.rs:45:8
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub fn production_weather_penalty(kind: crate::WeatherKind) -> f32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [optimized + debuginfo] target(s) in 4m 37s
[INFO] running `Command { std: "docker" "inspect" "903f228d3a7c8933f669a991c86eb8974eef77a3790cbbfbea675bc32a69ccdd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "903f228d3a7c8933f669a991c86eb8974eef77a3790cbbfbea675bc32a69ccdd", kill_on_drop: false }`
[INFO] [stdout] 903f228d3a7c8933f669a991c86eb8974eef77a3790cbbfbea675bc32a69ccdd
