[INFO] cloning repository https://github.com/klampatech/world-factory
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/klampatech/world-factory" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fklampatech%2Fworld-factory", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fklampatech%2Fworld-factory'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 061b8f73f575ef15c95aa77a3a15e274232ff75f
[INFO] checking klampatech/world-factory/061b8f73f575ef15c95aa77a3a15e274232ff75f against ed77b7b8699e342c2dc842c83cb5fe4025252ee8 for pr-158915-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fklampatech%2Fworld-factory" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] [stderr] Updating files:  89% (1478/1646)
Updating files:  90% (1482/1646)
Updating files:  91% (1498/1646)
Updating files:  92% (1515/1646)
Updating files:  93% (1531/1646)
Updating files:  94% (1548/1646)
Updating files:  95% (1564/1646)
Updating files:  96% (1581/1646)
Updating files:  97% (1597/1646)
Updating files:  98% (1614/1646)
Updating files:  99% (1630/1646)
Updating files: 100% (1646/1646)
Updating files: 100% (1646/1646), done.
[INFO] started tweaking git repo https://github.com/klampatech/world-factory
[INFO] removed 0 missing examples
[INFO] finished tweaking git repo https://github.com/klampatech/world-factory
[INFO] tweaked toml for git repo https://github.com/klampatech/world-factory written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/klampatech/world-factory on toolchain ed77b7b8699e342c2dc842c83cb5fe4025252ee8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ed77b7b8699e342c2dc842c83cb5fe4025252ee8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/klampatech/world-factory 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" "+ed77b7b8699e342c2dc842c83cb5fe4025252ee8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: binary `world_generator` should have a kebab-case name
[INFO] [stderr]   |
[INFO] [stderr] 1 | /workspace/builds/worker-0-tc1/source/target/.../world_generator
[INFO] [stderr]   |                                                  ^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::non_kebab_case_bins` is set to `warn` by default
[INFO] [stderr] help: to change the binary name to `world-generator`, convert `bin.name`
[INFO] [stderr]  --> Cargo.toml:2:8
[INFO] [stderr]   |
[INFO] [stderr] 2 - name = "world_generator"
[INFO] [stderr] 2 + name = "world-generator"
[INFO] [stderr]   |
[INFO] [stderr] warning: `world-factory` (manifest) generated 1 warning
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded serde_arrays v0.2.0
[INFO] [stderr]   Downloaded tar v0.4.45
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] fe8faf602c85fcdd451b681436ed8debcdecc1fbe2a36c13328f587fc711621b
[INFO] running `Command { std: "docker" "start" "fe8faf602c85fcdd451b681436ed8debcdecc1fbe2a36c13328f587fc711621b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "fe8faf602c85fcdd451b681436ed8debcdecc1fbe2a36c13328f587fc711621b", 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" "fe8faf602c85fcdd451b681436ed8debcdecc1fbe2a36c13328f587fc711621b" "/opt/rustwide/cargo-home/bin/cargo" "+ed77b7b8699e342c2dc842c83cb5fe4025252ee8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "fe8faf602c85fcdd451b681436ed8debcdecc1fbe2a36c13328f587fc711621b", 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" "fe8faf602c85fcdd451b681436ed8debcdecc1fbe2a36c13328f587fc711621b" "/opt/rustwide/cargo-home/bin/cargo" "+ed77b7b8699e342c2dc842c83cb5fe4025252ee8" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: binary `world_generator` should have a kebab-case name
[INFO] [stderr]   |
[INFO] [stderr] 1 | /opt/rustwide/target/.../world_generator
[INFO] [stderr]   |                          ^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::non_kebab_case_bins` is set to `warn` by default
[INFO] [stderr] help: to change the binary name to `world-generator`, convert `bin.name`
[INFO] [stderr]  --> Cargo.toml:2:8
[INFO] [stderr]   |
[INFO] [stderr] 2 - name = "world_generator"
[INFO] [stderr] 2 + name = "world-generator"
[INFO] [stderr]   |
[INFO] [stderr] warning: `world-factory` (manifest) generated 1 warning
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]     Checking rustix v1.1.4
[INFO] [stderr]     Checking getrandom v0.4.2
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking socket2 v0.6.3
[INFO] [stderr]     Checking mio v1.2.0
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking winnow v1.0.2
[INFO] [stderr]     Checking serde_json v1.0.149
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]     Checking rand v0.9.4
[INFO] [stderr]     Checking toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]     Checking serde_spanned v1.1.1
[INFO] [stderr]     Checking toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]     Checking filetime v0.2.27
[INFO] [stderr]     Checking sha1_smol v1.0.1
[INFO] [stderr]     Checking toml_writer v1.1.1+spec-1.1.0
[INFO] [stderr]     Checking slab v0.4.12
[INFO] [stderr]     Checking uuid v1.23.1
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]     Checking axum-core v0.5.6
[INFO] [stderr]     Checking toml v1.1.2+spec-1.1.0
[INFO] [stderr]     Checking rand_xorshift v0.4.0
[INFO] [stderr]     Checking serde_path_to_error v0.1.20
[INFO] [stderr]     Checking tempfile v3.27.0
[INFO] [stderr]     Checking xattr v1.6.1
[INFO] [stderr]     Checking tar v0.4.45
[INFO] [stderr]     Checking rusty-fork v0.3.1
[INFO] [stderr]     Checking proptest v1.11.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling clap_derive v4.6.1
[INFO] [stderr]     Checking tokio v1.52.3
[INFO] [stderr]     Checking thiserror v2.0.18
[INFO] [stderr]     Checking clap v4.6.1
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking serde_arrays v0.2.0
[INFO] [stderr]     Checking serde_yaml v0.9.34+deprecated
[INFO] [stderr]     Checking chrono v0.4.44
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking world-factory v1.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking hyper v1.9.0
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking axum v0.8.9
[INFO] [stdout] warning: unused imports: `AlignmentBonus`, `BeastBond`, `FactionGoal`, and `FactionType`
[INFO] [stdout]   --> src/faction_turn.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     AlignmentBonus, AssetCategory, BeastBond, BeastBondType, CampaignState, Faction, FactionAsset,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^                 ^^^^^^^^^
[INFO] [stdout] 22 |     FactionGoal, FactionRegistry, FactionTurnState, FactionType, GoalType, TurnPhase,
[INFO] [stdout]    |     ^^^^^^^^^^^                                     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/terrain/elevation.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BeastElement`, `BeastState`, `PrimalBeast`, and `profiles::get_beast_profile`
[INFO] [stdout]   --> src/beasts/effects.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     profiles::get_beast_profile, BeastElement, BeastState, PrimalBeast, PrimalBeastInstance,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BiomeType`
[INFO] [stdout]   --> src/beasts/effects.rs:17:22
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::terrain::{BiomeType, TerrainCell};
[INFO] [stdout]    |                      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BeastElement` and `PrimalBeast`
[INFO] [stdout]   --> src/beasts/movement.rs:13:13
[INFO] [stdout]    |
[INFO] [stdout] 13 | use super::{BeastElement, BeastState, PrimalBeast, PrimalBeastInstance};
[INFO] [stdout]    |             ^^^^^^^^^^^^              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BeastState`
[INFO] [stdout]  --> src/beasts/profiles.rs:6:38
[INFO] [stdout]   |
[INFO] [stdout] 6 | use super::{BeastElement, BeastForm, BeastState, PrimalBeast};
[INFO] [stdout]   |                                      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::EntityId`
[INFO] [stdout]  --> src/beasts/profiles.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::types::EntityId;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::PI`
[INFO] [stdout]   --> src/beasts/remnants.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::f32::consts::PI;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `uuid::Uuid`
[INFO] [stdout]   --> src/beasts/mod.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 | use uuid::Uuid;
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/packaging.rs:9:27
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::io::{self, Read, Write};
[INFO] [stdout]   |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `category`
[INFO] [stdout]    --> src/faction_turn.rs:503:36
[INFO] [stdout]     |
[INFO] [stdout] 503 |     pub fn with_category(mut self, category: AssetCategory) -> Self {
[INFO] [stdout]     |                                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_category`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fm`
[INFO] [stdout]    --> src/faction_turn.rs:613:25
[INFO] [stdout]     |
[INFO] [stdout] 613 |             if let Some(fm) = fm {
[INFO] [stdout]     |                         ^^ help: if this is intentional, prefix it with an underscore: `_fm`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/events/mod.rs:264:13
[INFO] [stdout]     |
[INFO] [stdout] 263 |             (start, end) => Some(end - start),
[INFO] [stdout]     |             ------------ matches any value
[INFO] [stdout] 264 |             _ => None,
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `final_population` is never read
[INFO] [stdout]    --> src/history/generator.rs:483:36
[INFO] [stdout]     |
[INFO] [stdout] 483 |         let mut final_population = 0u64;
[INFO] [stdout]     |                                    ^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 550 |         final_population = societies_map.values().map(|s| s.population).sum();
[INFO] [stdout]     |         --------------------------------------------------------------------- `final_population` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `base_suitability` is never read
[INFO] [stdout]    --> src/settlements/mod.rs:582:41
[INFO] [stdout]     |
[INFO] [stdout] 582 |         let mut base_suitability: f32 = 0.0;
[INFO] [stdout]     |                                         ^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 592 |             base_suitability = (carrying_capacity / 7000.0).min(1.0) * 0.6;
[INFO] [stdout]     |             -------------------------------------------------------------- `base_suitability` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `soil_fertility` is never read
[INFO] [stdout]    --> src/settlements/mod.rs:584:39
[INFO] [stdout]     |
[INFO] [stdout] 584 |           let mut soil_fertility: f32 = 0.0;
[INFO] [stdout]     |                                         ^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 604 | /         soil_fertility = match biome {
[INFO] [stdout] 605 | |             BiomeType::TemperateGrassland | BiomeType::TropicalSavanna => 1.0,
[INFO] [stdout] 606 | |             BiomeType::TemperateDeciduousForest | BiomeType::TemperateMixedForest => 0.8,
[INFO] [stdout] 607 | |             BiomeType::SubtropicalSeasonalForest | BiomeType::TropicalSeasonalForest => 0.7,
[INFO] [stdout] 608 | |             _ => 0.3,
[INFO] [stdout] 609 | |         };
[INFO] [stdout]     | |_________- `soil_fertility` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/simulation/population.rs:551:17
[INFO] [stdout]     |
[INFO] [stdout] 551 |                 _ => 1.0,
[INFO] [stdout]     |                 ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/simulation/population.rs:551:17
[INFO] [stdout]     |
[INFO] [stdout] 545 |                 SpeciesId::Human => 1.0,
[INFO] [stdout]     |                 ---------------- matches some of the same values
[INFO] [stdout] 546 |                 SpeciesId::Elf => 0.8,
[INFO] [stdout]     |                 -------------- matches some of the same values
[INFO] [stdout] 547 |                 SpeciesId::Dwarf => 1.1,
[INFO] [stdout]     |                 ---------------- matches some of the same values
[INFO] [stdout] 548 |                 SpeciesId::Orc => 1.3,
[INFO] [stdout]     |                 -------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 551 |                 _ => 1.0,
[INFO] [stdout]     |                 ^ ...and 2 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/simulation/population.rs:891:13
[INFO] [stdout]     |
[INFO] [stdout] 891 |             _ => 1.0, // Unknown species get base rate
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/simulation/population.rs:891:13
[INFO] [stdout]     |
[INFO] [stdout] 885 |             SpeciesId::Human => 1.0,    // Base - adaptable
[INFO] [stdout]     |             ---------------- matches some of the same values
[INFO] [stdout] 886 |             SpeciesId::Elf => 0.8,      // Slower reproduction
[INFO] [stdout]     |             -------------- matches some of the same values
[INFO] [stdout] 887 |             SpeciesId::Dwarf => 1.1,    // Industrious
[INFO] [stdout]     |             ---------------- matches some of the same values
[INFO] [stdout] 888 |             SpeciesId::Orc => 1.3,      // High birth rate
[INFO] [stdout]     |             -------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 891 |             _ => 1.0, // Unknown species get base rate
[INFO] [stdout]     |             ^ ...and 2 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]     --> src/simulation/population.rs:1182:9
[INFO] [stdout]      |
[INFO] [stdout] 1168 |         BiomeType::TropicalSeasonalForest => 30_000,
[INFO] [stdout]      |         --------------------------------- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 1182 |         BiomeType::TropicalSeasonalForest => 35_000,
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `AlignmentBonus`, `BeastBond`, `FactionGoal`, and `FactionType`
[INFO] [stdout]   --> src/faction_turn.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     AlignmentBonus, AssetCategory, BeastBond, BeastBondType, CampaignState, Faction, FactionAsset,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^                 ^^^^^^^^^
[INFO] [stdout] 22 |     FactionGoal, FactionRegistry, FactionTurnState, FactionType, GoalType, TurnPhase,
[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 assigned value
[INFO] [stdout]    --> src/generation/voronoi.rs:887:34
[INFO] [stdout]     |
[INFO] [stdout] 887 |                     let angle1 = ((window[0].1 - cy).atan2(window[0].0 - cx));
[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] 887 -                     let angle1 = ((window[0].1 - cy).atan2(window[0].0 - cx));
[INFO] [stdout] 887 +                     let angle1 = (window[0].1 - cy).atan2(window[0].0 - cx);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/generation/voronoi.rs:888:34
[INFO] [stdout]     |
[INFO] [stdout] 888 |                     let angle2 = ((window[1].1 - cy).atan2(window[1].0 - cx));
[INFO] [stdout]     |                                  ^                                          ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 888 -                     let angle2 = ((window[1].1 - cy).atan2(window[1].0 - cx));
[INFO] [stdout] 888 +                     let angle2 = (window[1].1 - cy).atan2(window[1].0 - cx);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::Seed`
[INFO] [stdout]    --> src/hydro/rivers.rs:425:9
[INFO] [stdout]     |
[INFO] [stdout] 425 |     use crate::util::Seed;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Write`
[INFO] [stdout]    --> src/packaging.rs:348:9
[INFO] [stdout]     |
[INFO] [stdout] 348 |     use std::io::Write;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::Seed`
[INFO] [stdout]     --> src/settlements/mod.rs:1360:13
[INFO] [stdout]      |
[INFO] [stdout] 1360 |         use crate::util::Seed;
[INFO] [stdout]      |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]   --> src/terrain/elevation.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::util::Seed`
[INFO] [stdout]    --> src/terrain/ocean.rs:568:9
[INFO] [stdout]     |
[INFO] [stdout] 568 |     use crate::util::Seed;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: duplicated attribute
[INFO] [stdout]    --> src/util/geometry.rs:258:5
[INFO] [stdout]     |
[INFO] [stdout] 258 |     #[test]
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(duplicate_macro_attributes)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BeastElement`, `BeastState`, `PrimalBeast`, and `profiles::get_beast_profile`
[INFO] [stdout]   --> src/beasts/effects.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     profiles::get_beast_profile, BeastElement, BeastState, PrimalBeast, PrimalBeastInstance,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BiomeType`
[INFO] [stdout]   --> src/beasts/effects.rs:17:22
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::terrain::{BiomeType, TerrainCell};
[INFO] [stdout]    |                      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BeastElement` and `PrimalBeast`
[INFO] [stdout]   --> src/beasts/movement.rs:13:13
[INFO] [stdout]    |
[INFO] [stdout] 13 | use super::{BeastElement, BeastState, PrimalBeast, PrimalBeastInstance};
[INFO] [stdout]    |             ^^^^^^^^^^^^              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BeastState`
[INFO] [stdout]  --> src/beasts/profiles.rs:6:38
[INFO] [stdout]   |
[INFO] [stdout] 6 | use super::{BeastElement, BeastForm, BeastState, PrimalBeast};
[INFO] [stdout]   |                                      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::EntityId`
[INFO] [stdout]  --> src/beasts/profiles.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::types::EntityId;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f32::consts::PI`
[INFO] [stdout]   --> src/beasts/remnants.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::f32::consts::PI;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `uuid::Uuid`
[INFO] [stdout]   --> src/beasts/mod.rs:37:5
[INFO] [stdout]    |
[INFO] [stdout] 37 | use uuid::Uuid;
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/terrain/biome.rs:345:13
[INFO] [stdout]     |
[INFO] [stdout] 315 |             BiomeType::SubtropicalDesert => "Subtropical Desert",
[INFO] [stdout]     |             ---------------------------- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 345 |             BiomeType::SubtropicalDesert => "Subtropical Desert",
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/terrain/biome.rs:346:13
[INFO] [stdout]     |
[INFO] [stdout] 320 |             BiomeType::TemperateDesert => "Temperate Desert",
[INFO] [stdout]     |             -------------------------- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 346 |             BiomeType::TemperateDesert => "Temperate Desert",
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/terrain/resource_types.rs:466:13
[INFO] [stdout]     |
[INFO] [stdout] 438 |             ResourceType::Limestone => 0.15,
[INFO] [stdout]     |             ----------------------- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 466 |             ResourceType::Limestone => 0.35,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]    --> src/artifacts.rs:510:9
[INFO] [stdout]     |
[INFO] [stdout] 510 |         context: &ArtifactCreationContext,
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `position`
[INFO] [stdout]    --> src/beasts/remnants.rs:119:36
[INFO] [stdout]     |
[INFO] [stdout] 119 |     pub fn affects_position(&self, position: u32, distance_km: f32) -> bool {
[INFO] [stdout]     |                                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `position`
[INFO] [stdout]    --> src/beasts/mod.rs:217:35
[INFO] [stdout]     |
[INFO] [stdout] 217 |     pub fn is_in_territory(&self, position: u32, distance_km: f32) -> bool {
[INFO] [stdout]     |                                   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `PredictionPattern` is more private than the item `EventPredictor::get_patterns_for`
[INFO] [stdout]    --> src/events/probability/event_predictor.rs:295:5
[INFO] [stdout]     |
[INFO] [stdout] 295 |     pub fn get_patterns_for(&self, event_type: EventType) -> Vec<&PredictionPattern> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `EventPredictor::get_patterns_for` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `PredictionPattern` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/events/probability/event_predictor.rs:338:1
[INFO] [stdout]     |
[INFO] [stdout] 338 | struct PredictionPattern {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SettlementState` is more private than the item `PopulationGrowthService::get_all_populations`
[INFO] [stdout]    --> src/history/population.rs:258:5
[INFO] [stdout]     |
[INFO] [stdout] 258 |     pub fn get_all_populations(&self) -> &HashMap<Uuid, SettlementState> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `PopulationGrowthService::get_all_populations` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `SettlementState` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/history/population.rs:485:1
[INFO] [stdout]     |
[INFO] [stdout] 485 | struct SettlementState {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `calculate_income` and `update_goal_progress` are never used
[INFO] [stdout]    --> src/faction_integration.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl FactionTurnProcessor {
[INFO] [stdout]     | ------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 115 |     fn calculate_income(&self, faction: &Faction) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     fn update_goal_progress(&self, faction: &mut Faction) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]    --> src/faction_integration.rs:530:5
[INFO] [stdout]     |
[INFO] [stdout] 529 | pub struct FactionGenerator {
[INFO] [stdout]     |            ---------------- field in this struct
[INFO] [stdout] 530 |     config: FactionGeneratorConfig,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_CONFIG_NAME` is never used
[INFO] [stdout]   --> src/config/mod.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const DEFAULT_CONFIG_NAME: &str = "world.toml";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `dist_sq` is never used
[INFO] [stdout]    --> src/generation/voronoi.rs:100:8
[INFO] [stdout]     |
[INFO] [stdout]  88 | impl Seed {
[INFO] [stdout]     | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 100 |     fn dist_sq(&self, other: &Seed) -> f32 {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `species_loader` and `population_simulator` are never read
[INFO] [stdout]    --> src/history/generator.rs:196:5
[INFO] [stdout]     |
[INFO] [stdout] 194 | pub struct HistoryGenerator {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] 195 |     /// Species template loader.
[INFO] [stdout] 196 |     species_loader: SpeciesLoader,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     population_simulator: PopulationGrowthService,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `HistoryGenerator` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name`, `x`, `y`, and `biome` are never read
[INFO] [stdout]    --> src/history/generator.rs:740:5
[INFO] [stdout]     |
[INFO] [stdout] 738 | struct SettlementSite {
[INFO] [stdout]     |        -------------- fields in this struct
[INFO] [stdout] 739 |     id: Uuid,
[INFO] [stdout] 740 |     name: String,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 741 |     x: usize,
[INFO] [stdout]     |     ^
[INFO] [stdout] 742 |     y: usize,
[INFO] [stdout]     |     ^
[INFO] [stdout] 743 |     biome: BiomeType,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SettlementSite` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `seed` is never read
[INFO] [stdout]    --> src/history/population.rs:174:5
[INFO] [stdout]     |
[INFO] [stdout] 161 | pub struct PopulationGrowthService {
[INFO] [stdout]     |            ----------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 174 |     seed: u64,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PopulationGrowthService` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ENTRIES_DIR` is never used
[INFO] [stdout]   --> src/packaging.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | const ENTRIES_DIR: &str = "entries/";
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `calculate_suitability` is never used
[INFO] [stdout]    --> src/settlements/mod.rs:778:8
[INFO] [stdout]     |
[INFO] [stdout] 250 | impl SettlementGenerator {
[INFO] [stdout]     | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 778 |     fn calculate_suitability(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `calculate_growth_rate` and `get_species_growth_modifier` are never used
[INFO] [stdout]    --> src/simulation/population.rs:864:8
[INFO] [stdout]     |
[INFO] [stdout] 357 | impl PopulationModel {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 864 |     fn calculate_growth_rate(&self, state: &SettlementPopulation) -> f64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 883 |     fn get_species_growth_modifier(&self, species_id: SpeciesId) -> f64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `add_settlement_raw` is never used
[INFO] [stdout]     --> src/simulation/population.rs:1443:8
[INFO] [stdout]      |
[INFO] [stdout] 1441 | impl PopulationModel {
[INFO] [stdout]      | -------------------- method in this implementation
[INFO] [stdout] 1442 |     /// Add a settlement with raw parameters (internal use).
[INFO] [stdout] 1443 |     fn add_settlement_raw(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `GLOBAL_STORAGE` is never used
[INFO] [stdout]   --> src/storage.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | static GLOBAL_STORAGE: OnceLock<StorageManager> = OnceLock::new();
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_cache_dir` is never used
[INFO] [stdout]   --> src/storage.rs:74:4
[INFO] [stdout]    |
[INFO] [stdout] 74 | fn default_cache_dir() -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_generated_dir` is never used
[INFO] [stdout]   --> src/storage.rs:78:4
[INFO] [stdout]    |
[INFO] [stdout] 78 | fn default_generated_dir() -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_exports_dir` is never used
[INFO] [stdout]   --> src/storage.rs:82:4
[INFO] [stdout]    |
[INFO] [stdout] 82 | fn default_exports_dir() -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `entity_mesh` is never read
[INFO] [stdout]    --> src/terrain/elevation.rs:211:5
[INFO] [stdout]     |
[INFO] [stdout] 205 | pub struct PolygonGraph {
[INFO] [stdout]     |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 211 |     entity_mesh: Option<std::sync::Arc<crate::world::entities::polygon::PolygonMesh>>,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PolygonGraph` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WonderTypeDef` is never constructed
[INFO] [stdout]   --> src/terrain/natural_wonders/wonder_types.rs:88:12
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub struct WonderTypeDef {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `generator` is never read
[INFO] [stdout]    --> src/terrain/resource_spawner.rs:224:5
[INFO] [stdout]     |
[INFO] [stdout] 221 | pub struct ResourceSpawner {
[INFO] [stdout]     |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 224 |     generator: ResourceGenerator,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ResourceSpawner` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `determine_spawns` and `get_biome_affinity` are never used
[INFO] [stdout]    --> src/terrain/resource_spawner.rs:412:8
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl ResourceSpawner {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 412 |     fn determine_spawns(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 580 |     fn get_biome_affinity(&self, category: ResourceCategory, biome: BiomeType) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `VIABILITY_MATRIX` is never used
[INFO] [stdout]    --> src/terrain/resource_types.rs:965:8
[INFO] [stdout]     |
[INFO] [stdout] 965 | static VIABILITY_MATRIX: ViabilityMatrix = ViabilityMatrix;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_grid_modifiers` is never used
[INFO] [stdout]    --> src/terrain/tectonic/elevation_effects.rs:100:8
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn calculate_grid_modifiers(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_tectonic_modifiers` is never used
[INFO] [stdout]    --> src/terrain/tectonic/elevation_effects.rs:152:8
[INFO] [stdout]     |
[INFO] [stdout] 152 | pub fn apply_tectonic_modifiers(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rng` is never read
[INFO] [stdout]    --> src/util/noise.rs:115:5
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub struct SimplexNoise {
[INFO] [stdout]     |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 115 |     rng: Rng,
[INFO] [stdout]     |     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SimplexNoise` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `biome_matrix` is never read
[INFO] [stdout]   --> src/world/generation/geography_generator.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct GeographyGenerator {
[INFO] [stdout]    |            ------------------ field in this struct
[INFO] [stdout] 41 |     config: GeographyConfig,
[INFO] [stdout] 42 |     biome_matrix: BiomeAssignmentMatrix,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GeographyGenerator` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update_mesh_centroids` is never used
[INFO] [stdout]    --> src/world/generation/lloyd_relaxation.rs:269:8
[INFO] [stdout]     |
[INFO] [stdout] 155 | impl LloydRelaxation {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 269 |     fn update_mesh_centroids(&mut self, _mesh: &mut PolygonMesh, _centroids: &[Point2D]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `concentration_modifier` is never read
[INFO] [stdout]   --> src/artifacts.rs:99:5
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub struct CataclysmTriggerSystem {
[INFO] [stdout]    |            ---------------------- field in this struct
[INFO] [stdout] 98 |     /// Probability modifier based on artifact concentration
[INFO] [stdout] 99 |     concentration_modifier: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_fire_effect` is never used
[INFO] [stdout]   --> src/beasts/effects.rs:64:4
[INFO] [stdout]    |
[INFO] [stdout] 64 | fn calculate_fire_effect(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_water_effect` is never used
[INFO] [stdout]   --> src/beasts/effects.rs:83:4
[INFO] [stdout]    |
[INFO] [stdout] 83 | fn calculate_water_effect(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_earth_effect` is never used
[INFO] [stdout]    --> src/beasts/effects.rs:100:4
[INFO] [stdout]     |
[INFO] [stdout] 100 | fn calculate_earth_effect(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_life_effect` is never used
[INFO] [stdout]    --> src/beasts/effects.rs:113:4
[INFO] [stdout]     |
[INFO] [stdout] 113 | fn calculate_life_effect(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `next_f64Signed` should have a snake case name
[INFO] [stdout]   --> src/util/noise.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 |     pub fn next_f64Signed(&mut self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_f64_signed`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `output`
[INFO] [stdout]    --> tests/cli_shared_storage_test.rs:180:9
[INFO] [stdout]     |
[INFO] [stdout] 180 |     let output = cmd.output().expect("Failed to execute generate");
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_output`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> tests/api_world_generation.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 |     use std::time::Duration;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `global_help`
[INFO] [stdout]   --> tests/cli_regression_test.rs:39:9
[INFO] [stdout]    |
[INFO] [stdout] 39 |     let global_help = format!("{} {}", help_stdout, help_stderr);
[INFO] [stdout]    |         ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_global_help`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SpeciesTemplate`
[INFO] [stdout]   --> tests/species_template_test.rs:11:39
[INFO] [stdout]    |
[INFO] [stdout] 11 |     SpeciesSocietyType, SpeciesStats, SpeciesTemplate, TemplateLoader,
[INFO] [stdout]    |                                       ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `world_factory::TerrainGrid`
[INFO] [stdout]    --> tests/species_template_test.rs:420:9
[INFO] [stdout]     |
[INFO] [stdout] 420 |     use world_factory::TerrainGrid;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `world_factory::history::SocietyRegistry`
[INFO] [stdout]  --> tests/phase2_integration_test.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use world_factory::history::SocietyRegistry;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EventStore`, `artifacts::ArtifactStore`, and `figures::FigureStore`
[INFO] [stdout]   --> tests/phase2_integration_test.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout]  8 |     artifacts::ArtifactStore,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  9 |     events::{EventStore, EventType},
[INFO] [stdout]    |              ^^^^^^^^^^
[INFO] [stdout] 10 |     figures::FigureStore,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `world_factory::Polygon`
[INFO] [stdout]   --> examples/resource_spawning.rs:53:9
[INFO] [stdout]    |
[INFO] [stdout] 53 |     use world_factory::Polygon;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> examples/resource_spawning.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 |     let mut graph = quick_voronoi(width, height, seed);
[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: `seed`
[INFO] [stdout]   --> examples/resource_spawning.rs:52:47
[INFO] [stdout]    |
[INFO] [stdout] 52 | fn generate_region_data(graph: &PolygonGraph, seed: u64) -> Vec<(u32, BiomeType, f32, f32, f32)> {
[INFO] [stdout]    |                                               ^^^^ help: if this is intentional, prefix it with an underscore: `_seed`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BiomeAssignmentMatrix`, `BiomeType`, `SpeciesId`, `Species`, and `VoronoiGenerator`
[INFO] [stdout]   --> tests/integration_world_generation.rs:18:29
[INFO] [stdout]    |
[INFO] [stdout] 18 |     generate_voronoi_graph, BiomeAssignmentMatrix, BiomeType, OceanDetectionConfig, OceanDetector,
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 19 |     OceanZone, PolygonGraph, Species, SpeciesId, TerrainCell, TerrainConfig, TerrainGenerator,
[INFO] [stdout]    |                              ^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 20 |     TerrainGrid, TerrainLayer, VoronoiConfig, VoronoiGenerator, WorldConfig,
[INFO] [stdout]    |                                               ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `start` is never used
[INFO] [stdout]   --> src/main.rs:61:12
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub fn start(_port: u16) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> tests/planet_hang_repro_test.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WorldResponse` is never constructed
[INFO] [stdout]    --> tests/api_world_generation.rs:254:8
[INFO] [stdout]     |
[INFO] [stdout] 254 | struct WorldResponse {
[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 `PolygonsResponse` is never constructed
[INFO] [stdout]    --> tests/api_world_generation.rs:263:8
[INFO] [stdout]     |
[INFO] [stdout] 263 | struct PolygonsResponse {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PolygonData` is never constructed
[INFO] [stdout]    --> tests/api_world_generation.rs:268:8
[INFO] [stdout]     |
[INFO] [stdout] 268 | struct PolygonData {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vertex` is never constructed
[INFO] [stdout]    --> tests/api_world_generation.rs:274:8
[INFO] [stdout]     |
[INFO] [stdout] 274 | struct Vertex {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TerrainResponse` is never constructed
[INFO] [stdout]    --> tests/api_world_generation.rs:280:8
[INFO] [stdout]     |
[INFO] [stdout] 280 | struct TerrainResponse {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TerrainCell` is never constructed
[INFO] [stdout]    --> tests/api_world_generation.rs:286:8
[INFO] [stdout]     |
[INFO] [stdout] 286 | struct TerrainCell {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Dimensions` is never constructed
[INFO] [stdout]    --> tests/api_world_generation.rs:294:8
[INFO] [stdout]     |
[INFO] [stdout] 294 | struct Dimensions {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `API_BASE_URL` is never used
[INFO] [stdout]   --> tests/api_world_generation.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 |     const API_BASE_URL: &str = "http://localhost:8080";
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> tests/planet_hang_repro_test.rs:56:13
[INFO] [stdout]    |
[INFO] [stdout] 56 |         let mut geo_gen = GeographyGenerator::new();
[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 import: `terrain::PolygonGraph`
[INFO] [stdout]   --> tests/voronoi_property_tests.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     terrain::PolygonGraph,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]  --> tests/cli_generation_test.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::fs;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `generation_time_ms` is never read
[INFO] [stdout]   --> tests/integration_world_generation.rs:99:5
[INFO] [stdout]    |
[INFO] [stdout] 95 | struct TestWorld {
[INFO] [stdout]    |        --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 99 |     generation_time_ms: u64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_cell` is never used
[INFO] [stdout]    --> tests/integration_world_generation.rs:450:8
[INFO] [stdout]     |
[INFO] [stdout] 448 | impl TestWorld {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] 449 |     /// Get cell at coordinates (for verification)
[INFO] [stdout] 450 |     fn get_cell(&self, x: u32, y: u32) -> Option<TerrainCell> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `start` is never used
[INFO] [stdout]   --> src/main.rs:61:12
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub fn start(_port: u16) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/packaging.rs:9:27
[INFO] [stdout]   |
[INFO] [stdout] 9 | use std::io::{self, Read, Write};
[INFO] [stdout]   |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `category`
[INFO] [stdout]    --> src/faction_turn.rs:503:36
[INFO] [stdout]     |
[INFO] [stdout] 503 |     pub fn with_category(mut self, category: AssetCategory) -> Self {
[INFO] [stdout]     |                                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_category`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fm`
[INFO] [stdout]    --> src/faction_turn.rs:613:25
[INFO] [stdout]     |
[INFO] [stdout] 613 |             if let Some(fm) = fm {
[INFO] [stdout]     |                         ^^ help: if this is intentional, prefix it with an underscore: `_fm`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/events/mod.rs:264:13
[INFO] [stdout]     |
[INFO] [stdout] 263 |             (start, end) => Some(end - start),
[INFO] [stdout]     |             ------------ matches any value
[INFO] [stdout] 264 |             _ => None,
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/generation/voronoi.rs:797:13
[INFO] [stdout]     |
[INFO] [stdout] 797 |         let mut graph = gen.build_polygon_graph(&result);
[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: `river_cells`
[INFO] [stdout]    --> src/generation/mod.rs:271:13
[INFO] [stdout]     |
[INFO] [stdout] 271 |         let river_cells = world.river_cells();
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_river_cells`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `final_population` is never read
[INFO] [stdout]    --> src/history/generator.rs:483:36
[INFO] [stdout]     |
[INFO] [stdout] 483 |         let mut final_population = 0u64;
[INFO] [stdout]     |                                    ^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 550 |         final_population = societies_map.values().map(|s| s.population).sum();
[INFO] [stdout]     |         --------------------------------------------------------------------- `final_population` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/packaging.rs:360:13
[INFO] [stdout]     |
[INFO] [stdout] 360 |         let mut temp_file = NamedTempFile::new().unwrap();
[INFO] [stdout]     |             ----^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/packaging.rs:392:13
[INFO] [stdout]     |
[INFO] [stdout] 392 |         let mut temp_file = NamedTempFile::new().unwrap();
[INFO] [stdout]     |             ----^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/packaging.rs:407:13
[INFO] [stdout]     |
[INFO] [stdout] 407 |         let mut temp_file = NamedTempFile::new().unwrap();
[INFO] [stdout]     |             ----^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/packaging.rs:422:13
[INFO] [stdout]     |
[INFO] [stdout] 422 |         let mut temp_file = NamedTempFile::new().unwrap();
[INFO] [stdout]     |             ----^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/packaging.rs:436:13
[INFO] [stdout]     |
[INFO] [stdout] 436 |         let mut temp_file = NamedTempFile::new().unwrap();
[INFO] [stdout]     |             ----^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/packaging.rs:486:13
[INFO] [stdout]     |
[INFO] [stdout] 486 |         let mut temp_file = NamedTempFile::new().unwrap();
[INFO] [stdout]     |             ----^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `base_suitability` is never read
[INFO] [stdout]    --> src/settlements/mod.rs:582:41
[INFO] [stdout]     |
[INFO] [stdout] 582 |         let mut base_suitability: f32 = 0.0;
[INFO] [stdout]     |                                         ^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 592 |             base_suitability = (carrying_capacity / 7000.0).min(1.0) * 0.6;
[INFO] [stdout]     |             -------------------------------------------------------------- `base_suitability` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `soil_fertility` is never read
[INFO] [stdout]    --> src/settlements/mod.rs:584:39
[INFO] [stdout]     |
[INFO] [stdout] 584 |           let mut soil_fertility: f32 = 0.0;
[INFO] [stdout]     |                                         ^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 604 | /         soil_fertility = match biome {
[INFO] [stdout] 605 | |             BiomeType::TemperateGrassland | BiomeType::TropicalSavanna => 1.0,
[INFO] [stdout] 606 | |             BiomeType::TemperateDeciduousForest | BiomeType::TemperateMixedForest => 0.8,
[INFO] [stdout] 607 | |             BiomeType::SubtropicalSeasonalForest | BiomeType::TropicalSeasonalForest => 0.7,
[INFO] [stdout] 608 | |             _ => 0.3,
[INFO] [stdout] 609 | |         };
[INFO] [stdout]     | |_________- `soil_fertility` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/simulation/population.rs:551:17
[INFO] [stdout]     |
[INFO] [stdout] 551 |                 _ => 1.0,
[INFO] [stdout]     |                 ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/simulation/population.rs:551:17
[INFO] [stdout]     |
[INFO] [stdout] 545 |                 SpeciesId::Human => 1.0,
[INFO] [stdout]     |                 ---------------- matches some of the same values
[INFO] [stdout] 546 |                 SpeciesId::Elf => 0.8,
[INFO] [stdout]     |                 -------------- matches some of the same values
[INFO] [stdout] 547 |                 SpeciesId::Dwarf => 1.1,
[INFO] [stdout]     |                 ---------------- matches some of the same values
[INFO] [stdout] 548 |                 SpeciesId::Orc => 1.3,
[INFO] [stdout]     |                 -------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 551 |                 _ => 1.0,
[INFO] [stdout]     |                 ^ ...and 2 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/simulation/population.rs:891:13
[INFO] [stdout]     |
[INFO] [stdout] 891 |             _ => 1.0, // Unknown species get base rate
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/simulation/population.rs:891:13
[INFO] [stdout]     |
[INFO] [stdout] 885 |             SpeciesId::Human => 1.0,    // Base - adaptable
[INFO] [stdout]     |             ---------------- matches some of the same values
[INFO] [stdout] 886 |             SpeciesId::Elf => 0.8,      // Slower reproduction
[INFO] [stdout]     |             -------------- matches some of the same values
[INFO] [stdout] 887 |             SpeciesId::Dwarf => 1.1,    // Industrious
[INFO] [stdout]     |             ---------------- matches some of the same values
[INFO] [stdout] 888 |             SpeciesId::Orc => 1.3,      // High birth rate
[INFO] [stdout]     |             -------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 891 |             _ => 1.0, // Unknown species get base rate
[INFO] [stdout]     |             ^ ...and 2 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]     --> src/simulation/population.rs:1182:9
[INFO] [stdout]      |
[INFO] [stdout] 1168 |         BiomeType::TropicalSeasonalForest => 30_000,
[INFO] [stdout]      |         --------------------------------- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 1182 |         BiomeType::TropicalSeasonalForest => 35_000,
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/terrain/biome.rs:345:13
[INFO] [stdout]     |
[INFO] [stdout] 315 |             BiomeType::SubtropicalDesert => "Subtropical Desert",
[INFO] [stdout]     |             ---------------------------- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 345 |             BiomeType::SubtropicalDesert => "Subtropical Desert",
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/terrain/biome.rs:346:13
[INFO] [stdout]     |
[INFO] [stdout] 320 |             BiomeType::TemperateDesert => "Temperate Desert",
[INFO] [stdout]     |             -------------------------- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 346 |             BiomeType::TemperateDesert => "Temperate Desert",
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result`
[INFO] [stdout]    --> src/terrain/elevation_assignment.rs:670:13
[INFO] [stdout]     |
[INFO] [stdout] 670 |         let result = assigner.assign_elevation(&mut graph, 42);
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/terrain/elevation_assignment.rs:677:13
[INFO] [stdout]     |
[INFO] [stdout] 677 |         let mut graph = create_test_graph();
[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/terrain/elevation_assignment.rs:718:17
[INFO] [stdout]     |
[INFO] [stdout] 718 |             let mut min_path_elev = polygon.elevation;
[INFO] [stdout]     |                 ----^^^^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `original_stats`
[INFO] [stdout]    --> src/terrain/erosion.rs:499:13
[INFO] [stdout]     |
[INFO] [stdout] 499 |         let original_stats = calculate_stats(&grid);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_original_stats`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `new_stats`
[INFO] [stdout]    --> src/terrain/erosion.rs:511:13
[INFO] [stdout]     |
[INFO] [stdout] 511 |         let new_stats = calculate_stats(&grid);
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_new_stats`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/terrain/resource_types.rs:466:13
[INFO] [stdout]     |
[INFO] [stdout] 438 |             ResourceType::Limestone => 0.15,
[INFO] [stdout]     |             ----------------------- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 466 |             ResourceType::Limestone => 0.35,
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/terrain/terrain_generator.rs:515:13
[INFO] [stdout]     |
[INFO] [stdout] 515 |         let mut generator = TerrainGenerator::new(config);
[INFO] [stdout]     |             ----^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `grid`
[INFO] [stdout]    --> src/terrain/terrain_generator.rs:574:13
[INFO] [stdout]     |
[INFO] [stdout] 574 |         let grid = generator.generate(TerrainLayer::Mountains);
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_grid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `result_full`
[INFO] [stdout]    --> src/world/generation/lloyd_relaxation.rs:453:13
[INFO] [stdout]     |
[INFO] [stdout] 453 |         let result_full = relaxer_full.relax(&mesh, &bounds);
[INFO] [stdout]     |             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_result_full`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]    --> src/artifacts.rs:510:9
[INFO] [stdout]     |
[INFO] [stdout] 510 |         context: &ArtifactCreationContext,
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `world_id`
[INFO] [stdout]     --> src/artifacts.rs:1452:13
[INFO] [stdout]      |
[INFO] [stdout] 1452 |         let world_id = Uuid::new_v4();
[INFO] [stdout]      |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_world_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `position`
[INFO] [stdout]    --> src/beasts/remnants.rs:119:36
[INFO] [stdout]     |
[INFO] [stdout] 119 |     pub fn affects_position(&self, position: u32, distance_km: f32) -> bool {
[INFO] [stdout]     |                                    ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `world_id`
[INFO] [stdout]    --> src/beasts/remnants.rs:374:13
[INFO] [stdout]     |
[INFO] [stdout] 374 |         let world_id = Uuid::new_v4();
[INFO] [stdout]     |             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_world_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `should_remove`
[INFO] [stdout]    --> src/beasts/remnants.rs:404:17
[INFO] [stdout]     |
[INFO] [stdout] 404 |             let should_remove = remnant.apply_decay();
[INFO] [stdout]     |                 ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_should_remove`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `position`
[INFO] [stdout]    --> src/beasts/mod.rs:217:35
[INFO] [stdout]     |
[INFO] [stdout] 217 |     pub fn is_in_territory(&self, position: u32, distance_km: f32) -> bool {
[INFO] [stdout]     |                                   ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `PredictionPattern` is more private than the item `event_predictor::EventPredictor::get_patterns_for`
[INFO] [stdout]    --> src/events/probability/event_predictor.rs:295:5
[INFO] [stdout]     |
[INFO] [stdout] 295 |     pub fn get_patterns_for(&self, event_type: EventType) -> Vec<&PredictionPattern> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `event_predictor::EventPredictor::get_patterns_for` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `PredictionPattern` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/events/probability/event_predictor.rs:338:1
[INFO] [stdout]     |
[INFO] [stdout] 338 | struct PredictionPattern {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `SettlementState` is more private than the item `history::population::PopulationGrowthService::get_all_populations`
[INFO] [stdout]    --> src/history/population.rs:258:5
[INFO] [stdout]     |
[INFO] [stdout] 258 |     pub fn get_all_populations(&self) -> &HashMap<Uuid, SettlementState> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ method `history::population::PopulationGrowthService::get_all_populations` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `SettlementState` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/history/population.rs:485:1
[INFO] [stdout]     |
[INFO] [stdout] 485 | struct SettlementState {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `calculate_income` and `update_goal_progress` are never used
[INFO] [stdout]    --> src/faction_integration.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl FactionTurnProcessor {
[INFO] [stdout]     | ------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 115 |     fn calculate_income(&self, faction: &Faction) -> u32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 128 |     fn update_goal_progress(&self, faction: &mut Faction) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_CONFIG_NAME` is never used
[INFO] [stdout]   --> src/config/mod.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const DEFAULT_CONFIG_NAME: &str = "world.toml";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `dist_sq` is never used
[INFO] [stdout]    --> src/generation/voronoi.rs:100:8
[INFO] [stdout]     |
[INFO] [stdout]  88 | impl Seed {
[INFO] [stdout]     | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 100 |     fn dist_sq(&self, other: &Seed) -> f32 {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `species_loader` and `population_simulator` are never read
[INFO] [stdout]    --> src/history/generator.rs:196:5
[INFO] [stdout]     |
[INFO] [stdout] 194 | pub struct HistoryGenerator {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] 195 |     /// Species template loader.
[INFO] [stdout] 196 |     species_loader: SpeciesLoader,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     population_simulator: PopulationGrowthService,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `HistoryGenerator` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name`, `x`, `y`, and `biome` are never read
[INFO] [stdout]    --> src/history/generator.rs:740:5
[INFO] [stdout]     |
[INFO] [stdout] 738 | struct SettlementSite {
[INFO] [stdout]     |        -------------- fields in this struct
[INFO] [stdout] 739 |     id: Uuid,
[INFO] [stdout] 740 |     name: String,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 741 |     x: usize,
[INFO] [stdout]     |     ^
[INFO] [stdout] 742 |     y: usize,
[INFO] [stdout]     |     ^
[INFO] [stdout] 743 |     biome: BiomeType,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SettlementSite` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `seed` is never read
[INFO] [stdout]    --> src/history/population.rs:174:5
[INFO] [stdout]     |
[INFO] [stdout] 161 | pub struct PopulationGrowthService {
[INFO] [stdout]     |            ----------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 174 |     seed: u64,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PopulationGrowthService` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ENTRIES_DIR` is never used
[INFO] [stdout]   --> src/packaging.rs:28:7
[INFO] [stdout]    |
[INFO] [stdout] 28 | const ENTRIES_DIR: &str = "entries/";
[INFO] [stdout]    |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `calculate_suitability` is never used
[INFO] [stdout]    --> src/settlements/mod.rs:778:8
[INFO] [stdout]     |
[INFO] [stdout] 250 | impl SettlementGenerator {
[INFO] [stdout]     | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 778 |     fn calculate_suitability(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `calculate_growth_rate` and `get_species_growth_modifier` are never used
[INFO] [stdout]    --> src/simulation/population.rs:864:8
[INFO] [stdout]     |
[INFO] [stdout] 357 | impl PopulationModel {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 864 |     fn calculate_growth_rate(&self, state: &SettlementPopulation) -> f64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 883 |     fn get_species_growth_modifier(&self, species_id: SpeciesId) -> f64 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `GLOBAL_STORAGE` is never used
[INFO] [stdout]   --> src/storage.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | static GLOBAL_STORAGE: OnceLock<StorageManager> = OnceLock::new();
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_cache_dir` is never used
[INFO] [stdout]   --> src/storage.rs:74:4
[INFO] [stdout]    |
[INFO] [stdout] 74 | fn default_cache_dir() -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_generated_dir` is never used
[INFO] [stdout]   --> src/storage.rs:78:4
[INFO] [stdout]    |
[INFO] [stdout] 78 | fn default_generated_dir() -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `default_exports_dir` is never used
[INFO] [stdout]   --> src/storage.rs:82:4
[INFO] [stdout]    |
[INFO] [stdout] 82 | fn default_exports_dir() -> String {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `entity_mesh` is never read
[INFO] [stdout]    --> src/terrain/elevation.rs:211:5
[INFO] [stdout]     |
[INFO] [stdout] 205 | pub struct PolygonGraph {
[INFO] [stdout]     |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 211 |     entity_mesh: Option<std::sync::Arc<crate::world::entities::polygon::PolygonMesh>>,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PolygonGraph` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WonderTypeDef` is never constructed
[INFO] [stdout]   --> src/terrain/natural_wonders/wonder_types.rs:88:12
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub struct WonderTypeDef {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `generator` is never read
[INFO] [stdout]    --> src/terrain/resource_spawner.rs:224:5
[INFO] [stdout]     |
[INFO] [stdout] 221 | pub struct ResourceSpawner {
[INFO] [stdout]     |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 224 |     generator: ResourceGenerator,
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ResourceSpawner` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `determine_spawns` and `get_biome_affinity` are never used
[INFO] [stdout]    --> src/terrain/resource_spawner.rs:412:8
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl ResourceSpawner {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 412 |     fn determine_spawns(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 580 |     fn get_biome_affinity(&self, category: ResourceCategory, biome: BiomeType) -> f32 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: static `VIABILITY_MATRIX` is never used
[INFO] [stdout]    --> src/terrain/resource_types.rs:965:8
[INFO] [stdout]     |
[INFO] [stdout] 965 | static VIABILITY_MATRIX: ViabilityMatrix = ViabilityMatrix;
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_tectonic_modifiers` is never used
[INFO] [stdout]    --> src/terrain/tectonic/elevation_effects.rs:152:8
[INFO] [stdout]     |
[INFO] [stdout] 152 | pub fn apply_tectonic_modifiers(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rng` is never read
[INFO] [stdout]    --> src/util/noise.rs:115:5
[INFO] [stdout]     |
[INFO] [stdout] 111 | pub struct SimplexNoise {
[INFO] [stdout]     |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 115 |     rng: Rng,
[INFO] [stdout]     |     ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SimplexNoise` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `biome_matrix` is never read
[INFO] [stdout]   --> src/world/generation/geography_generator.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct GeographyGenerator {
[INFO] [stdout]    |            ------------------ field in this struct
[INFO] [stdout] 41 |     config: GeographyConfig,
[INFO] [stdout] 42 |     biome_matrix: BiomeAssignmentMatrix,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `GeographyGenerator` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `update_mesh_centroids` is never used
[INFO] [stdout]    --> src/world/generation/lloyd_relaxation.rs:269:8
[INFO] [stdout]     |
[INFO] [stdout] 155 | impl LloydRelaxation {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 269 |     fn update_mesh_centroids(&mut self, _mesh: &mut PolygonMesh, _centroids: &[Point2D]) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `concentration_modifier` is never read
[INFO] [stdout]   --> src/artifacts.rs:99:5
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub struct CataclysmTriggerSystem {
[INFO] [stdout]    |            ---------------------- field in this struct
[INFO] [stdout] 98 |     /// Probability modifier based on artifact concentration
[INFO] [stdout] 99 |     concentration_modifier: f64,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_fire_effect` is never used
[INFO] [stdout]   --> src/beasts/effects.rs:64:4
[INFO] [stdout]    |
[INFO] [stdout] 64 | fn calculate_fire_effect(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_water_effect` is never used
[INFO] [stdout]   --> src/beasts/effects.rs:83:4
[INFO] [stdout]    |
[INFO] [stdout] 83 | fn calculate_water_effect(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_earth_effect` is never used
[INFO] [stdout]    --> src/beasts/effects.rs:100:4
[INFO] [stdout]     |
[INFO] [stdout] 100 | fn calculate_earth_effect(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_life_effect` is never used
[INFO] [stdout]    --> src/beasts/effects.rs:113:4
[INFO] [stdout]     |
[INFO] [stdout] 113 | fn calculate_life_effect(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `next_f64Signed` should have a snake case name
[INFO] [stdout]   --> src/util/noise.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 |     pub fn next_f64Signed(&mut self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^ help: convert the identifier to snake case: `next_f64_signed`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 09s
[INFO] running `Command { std: "docker" "inspect" "fe8faf602c85fcdd451b681436ed8debcdecc1fbe2a36c13328f587fc711621b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fe8faf602c85fcdd451b681436ed8debcdecc1fbe2a36c13328f587fc711621b", kill_on_drop: false }`
[INFO] [stdout] fe8faf602c85fcdd451b681436ed8debcdecc1fbe2a36c13328f587fc711621b
