[INFO] cloning repository https://github.com/2lab-ai/rubber-duck-mcp
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/2lab-ai/rubber-duck-mcp" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F2lab-ai%2Frubber-duck-mcp", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F2lab-ai%2Frubber-duck-mcp'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 9972827e9299ec431485e2d3f1a3f024055a93fb
[INFO] checking 2lab-ai/rubber-duck-mcp against try#0bdee9e879c87b7211d316e9152109cfd46c576b for pr-150097
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2F2lab-ai%2Frubber-duck-mcp" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/2lab-ai/rubber-duck-mcp
[INFO] finished tweaking git repo https://github.com/2lab-ai/rubber-duck-mcp
[INFO] tweaked toml for git repo https://github.com/2lab-ai/rubber-duck-mcp written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/2lab-ai/rubber-duck-mcp on toolchain 0bdee9e879c87b7211d316e9152109cfd46c576b
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0bdee9e879c87b7211d316e9152109cfd46c576b" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/2lab-ai/rubber-duck-mcp 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" "+0bdee9e879c87b7211d316e9152109cfd46c576b" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+0bdee9e879c87b7211d316e9152109cfd46c576b" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 9fbd3535c165f7de75641a2ba0c9b73f69390a156aef0fe8a6368178a6de11a0
[INFO] running `Command { std: "docker" "start" "-a" "9fbd3535c165f7de75641a2ba0c9b73f69390a156aef0fe8a6368178a6de11a0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9fbd3535c165f7de75641a2ba0c9b73f69390a156aef0fe8a6368178a6de11a0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9fbd3535c165f7de75641a2ba0c9b73f69390a156aef0fe8a6368178a6de11a0", kill_on_drop: false }`
[INFO] [stdout] 9fbd3535c165f7de75641a2ba0c9b73f69390a156aef0fe8a6368178a6de11a0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+0bdee9e879c87b7211d316e9152109cfd46c576b" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] abb1c276fbef1654acf5d92e393275d4947ff4174fff87f25fd3746489356017
[INFO] running `Command { std: "docker" "start" "-a" "abb1c276fbef1654acf5d92e393275d4947ff4174fff87f25fd3746489356017", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling zerocopy v0.8.31
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]     Checking lock_api v0.4.14
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking signal-hook-registry v1.4.7
[INFO] [stderr]     Checking mio v1.1.1
[INFO] [stderr]     Checking socket2 v0.6.1
[INFO] [stderr]     Checking chunked_transfer v1.5.0
[INFO] [stderr]     Checking ascii v1.1.0
[INFO] [stderr]     Checking memchr v2.7.6
[INFO] [stderr]     Checking tiny_http v0.12.0
[INFO] [stderr]     Checking tokio v1.48.0
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking uuid v1.19.0
[INFO] [stderr]     Checking rubber-duck-mcp v0.1.18 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Body`
[INFO] [stdout]  --> src/actions/interaction.rs:1:43
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::entity::{Blueprint, BookEntry, Body, BodyPartKind, FireState, Item, Room, Species};
[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: `rand::Rng`
[INFO] [stdout]  --> src/entity/player.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `protocol::*`
[INFO] [stdout]  --> src/mcp/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use protocol::*;
[INFO] [stdout]   |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tools::*`
[INFO] [stdout]  --> src/mcp/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use tools::*;
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Body`
[INFO] [stdout]  --> src/actions/interaction.rs:1:43
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::entity::{Blueprint, BookEntry, Body, BodyPartKind, FireState, Item, Room, Species};
[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: `rand::Rng`
[INFO] [stdout]  --> src/entity/player.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `protocol::*`
[INFO] [stdout]  --> src/mcp/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use protocol::*;
[INFO] [stdout]   |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tools::*`
[INFO] [stdout]  --> src/mcp/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use tools::*;
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `species_name`
[INFO] [stdout]    --> src/actions/interaction.rs:864:9
[INFO] [stdout]     |
[INFO] [stdout] 864 |     let species_name = companion.species.name();
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_species_name`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `species_name`
[INFO] [stdout]    --> src/actions/interaction.rs:864:9
[INFO] [stdout]     |
[INFO] [stdout] 864 |     let species_name = companion.species.name();
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_species_name`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `c`
[INFO] [stdout]    --> src/persistence/state.rs:341:43
[INFO] [stdout]     |
[INFO] [stdout] 341 |                 if let ObjectKind::Corpse(c) = &po.object.kind {
[INFO] [stdout]     |                                           ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `PartialSuccess` is never constructed
[INFO] [stdout]  --> src/actions/crafting.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum CraftResult {
[INFO] [stdout]   |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 9 |     PartialSuccess(String),
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `use_item` is never used
[INFO] [stdout]   --> src/actions/crafting.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn use_item(
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_chop` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:313:4
[INFO] [stdout]     |
[INFO] [stdout] 313 | fn try_chop(player: &mut Player, wood_shed: &mut WoodShed) -> CraftResult {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_place_log` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:375:4
[INFO] [stdout]     |
[INFO] [stdout] 375 | fn try_place_log(player: &mut Player, wood_shed: &mut WoodShed) -> CraftResult {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_light_kindling` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:397:4
[INFO] [stdout]     |
[INFO] [stdout] 397 | fn try_light_kindling(player: &mut Player, _cabin: &Cabin) -> CraftResult {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_start_fire` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:416:4
[INFO] [stdout]     |
[INFO] [stdout] 416 | fn try_start_fire(player: &mut Player, cabin: &mut Cabin) -> CraftResult {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_light_fire_with_match` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:443:4
[INFO] [stdout]     |
[INFO] [stdout] 443 | fn try_light_fire_with_match(player: &mut Player, cabin: &mut Cabin) -> CraftResult {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `attempt_light_fire` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:456:4
[INFO] [stdout]     |
[INFO] [stdout] 456 | fn attempt_light_fire(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_add_fuel_item` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:510:4
[INFO] [stdout]     |
[INFO] [stdout] 510 | fn try_add_fuel_item(player: &mut Player, cabin: &mut Cabin, item: Item) -> CraftResult {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_split_firewood` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:546:4
[INFO] [stdout]     |
[INFO] [stdout] 546 | fn try_split_firewood(player: &mut Player) -> CraftResult {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_book_to_kindling` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:567:4
[INFO] [stdout]     |
[INFO] [stdout] 567 | fn try_book_to_kindling(player: &mut Player) -> CraftResult {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_near_tree` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:582:4
[INFO] [stdout]     |
[INFO] [stdout] 582 | fn find_near_tree<'a>(player: &Player, trees: &'a mut [Tree]) -> Option<&'a mut Tree> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `collect_fruit_drop` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:588:4
[INFO] [stdout]     |
[INFO] [stdout] 588 | fn collect_fruit_drop(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_chop_tree` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:622:4
[INFO] [stdout]     |
[INFO] [stdout] 622 | fn try_chop_tree(
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_near_water` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:828:4
[INFO] [stdout]     |
[INFO] [stdout] 828 | fn is_near_water(player: &Player, map: &WorldMap) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_fill_kettle` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:850:4
[INFO] [stdout]     |
[INFO] [stdout] 850 | fn try_fill_kettle(player: &mut Player, map: &WorldMap) -> CraftResult {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_heat_kettle` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:884:4
[INFO] [stdout]     |
[INFO] [stdout] 884 | fn try_heat_kettle(player: &mut Player, cabin: &Cabin) -> CraftResult {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_brew_herbal_tea` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:911:4
[INFO] [stdout]     |
[INFO] [stdout] 911 | fn try_brew_herbal_tea(player: &mut Player, _cabin: &Cabin) -> CraftResult {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_drink_herbal_tea` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:955:4
[INFO] [stdout]     |
[INFO] [stdout] 955 | fn try_drink_herbal_tea(player: &mut Player) -> CraftResult {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]  --> src/actions/interaction.rs:9:18
[INFO] [stdout]   |
[INFO] [stdout] 9 |     ItemObtained(Item, String),
[INFO] [stdout]   |     ------------ ^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     field in this variant
[INFO] [stdout]   |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]   |
[INFO] [stdout] 9 -     ItemObtained(Item, String),
[INFO] [stdout] 9 +     ItemObtained((), String),
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/actions/interaction.rs:10:14
[INFO] [stdout]    |
[INFO] [stdout] 10 |     ItemLost(Item, String),
[INFO] [stdout]    |     -------- ^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 10 -     ItemLost(Item, String),
[INFO] [stdout] 10 +     ItemLost((), String),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `missing_materials` is never used
[INFO] [stdout]   --> src/entity/blueprint.rs:95:12
[INFO] [stdout]    |
[INFO] [stdout] 61 | impl Blueprint {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 95 |     pub fn missing_materials(&self) -> Vec<(Item, u32)> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `page_count`, `summary`, and `full_text` are never used
[INFO] [stdout]   --> src/entity/book.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl BookEntry {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn page_count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn summary(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn full_text(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_adjacent` is never used
[INFO] [stdout]    --> src/entity/body.rs:252:8
[INFO] [stdout]     |
[INFO] [stdout] 252 | pub fn is_adjacent(a: &Position, b: &Position) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]    --> src/entity/objects.rs:433:12
[INFO] [stdout]     |
[INFO] [stdout] 432 | impl FireState {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] 433 |     pub fn name(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clear_tinder` is never used
[INFO] [stdout]    --> src/entity/objects.rs:508:12
[INFO] [stdout]     |
[INFO] [stdout] 477 | impl Fireplace {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 508 |     pub fn clear_tinder(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `list` is never used
[INFO] [stdout]    --> src/entity/objects.rs:717:12
[INFO] [stdout]     |
[INFO] [stdout] 692 | impl LocationItems {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 717 |     pub fn list(&self) -> Vec<&Item> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `name` and `is_indoor` are never used
[INFO] [stdout]    --> src/entity/player.rs:155:12
[INFO] [stdout]     |
[INFO] [stdout] 154 | impl Room {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] 155 |     pub fn name(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn is_indoor(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_indoor`, `move_to`, and `apply_body_damage` are never used
[INFO] [stdout]    --> src/entity/player.rs:343:12
[INFO] [stdout]     |
[INFO] [stdout] 296 | impl Player {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 343 |     pub fn is_indoor(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub fn move_to(&mut self, pos: Position) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 384 |     pub fn apply_body_damage(&mut self, damage: f32) -> Option<BodyHitEvent> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `take_all_fruit`, `progress_text`, and `default_trees` are never used
[INFO] [stdout]    --> src/entity/trees.rs:77:12
[INFO] [stdout]     |
[INFO] [stdout]  27 | impl Tree {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub fn take_all_fruit(&mut self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn progress_text(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn default_trees() -> Vec<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_predator` is never used
[INFO] [stdout]    --> src/entity/wildlife.rs:169:12
[INFO] [stdout]     |
[INFO] [stdout]  66 | impl Species {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn is_predator(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `invalid_request` and `internal_error` are never used
[INFO] [stdout]   --> src/mcp/protocol.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl JsonRpcError {
[INFO] [stdout]    | ----------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn invalid_request() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     pub fn internal_error(msg: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InitializeParams` is never constructed
[INFO] [stdout]   --> src/mcp/protocol.rs:99:12
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub struct InitializeParams {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ClientCapabilities` is never constructed
[INFO] [stdout]    --> src/mcp/protocol.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct ClientCapabilities {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RootsCapability` is never constructed
[INFO] [stdout]    --> src/mcp/protocol.rs:115:12
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub struct RootsCapability {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ClientInfo` is never constructed
[INFO] [stdout]    --> src/mcp/protocol.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub struct ClientInfo {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `book_entry` is never used
[INFO] [stdout]    --> src/persistence/state.rs:585:12
[INFO] [stdout]     |
[INFO] [stdout]  92 | impl GameState {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 585 |     pub fn book_entry(&self, id: &str) -> Option<&BookEntry> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `opposite` is never used
[INFO] [stdout]   --> src/world/map.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl Direction {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn opposite(&self) -> Direction {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_valid_position` and `get_dominant_direction` are never used
[INFO] [stdout]    --> src/world/map.rs:257:12
[INFO] [stdout]     |
[INFO] [stdout] 143 | impl WorldMap {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 257 |     pub fn is_valid_position(&self, row: i32, col: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     pub fn get_dominant_direction(&self, row: usize, col: usize) -> Direction {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `as_tree_mut` and `as_tree` are never used
[INFO] [stdout]    --> src/world/object.rs:194:12
[INFO] [stdout]     |
[INFO] [stdout] 139 | impl WorldObject {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn as_tree_mut(&mut self) -> Option<&mut Tree> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |     pub fn as_tree(&self) -> Option<&Tree> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `remove` and `objects_at_mut` are never used
[INFO] [stdout]    --> src/world/object.rs:235:12
[INFO] [stdout]     |
[INFO] [stdout] 221 | impl ObjectRegistry {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 235 |     pub fn remove(&mut self, id: &str) -> Option<PlacedObject> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 258 |     pub fn objects_at_mut(&mut self, position: &Position) -> Vec<&mut PlacedObject> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_temperature` is never used
[INFO] [stdout]  --> src/world/simulation.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn calculate_temperature(
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `light_level` and `is_night` are never used
[INFO] [stdout]   --> src/world/time.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl TimeOfDay {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn light_level(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn is_night(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `formatted_time` is never used
[INFO] [stdout]    --> src/world/time.rs:137:12
[INFO] [stdout]     |
[INFO] [stdout] 105 | impl WorldTime {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn formatted_time(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `visibility_modifier` is never used
[INFO] [stdout]   --> src/world/weather.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl Weather {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn visibility_modifier(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `c`
[INFO] [stdout]    --> src/persistence/state.rs:341:43
[INFO] [stdout]     |
[INFO] [stdout] 341 |                 if let ObjectKind::Corpse(c) = &po.object.kind {
[INFO] [stdout]     |                                           ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `PartialSuccess` is never constructed
[INFO] [stdout]  --> src/actions/crafting.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum CraftResult {
[INFO] [stdout]   |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 9 |     PartialSuccess(String),
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `use_item` is never used
[INFO] [stdout]   --> src/actions/crafting.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn use_item(
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_chop` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:313:4
[INFO] [stdout]     |
[INFO] [stdout] 313 | fn try_chop(player: &mut Player, wood_shed: &mut WoodShed) -> CraftResult {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_place_log` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:375:4
[INFO] [stdout]     |
[INFO] [stdout] 375 | fn try_place_log(player: &mut Player, wood_shed: &mut WoodShed) -> CraftResult {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_light_kindling` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:397:4
[INFO] [stdout]     |
[INFO] [stdout] 397 | fn try_light_kindling(player: &mut Player, _cabin: &Cabin) -> CraftResult {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_start_fire` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:416:4
[INFO] [stdout]     |
[INFO] [stdout] 416 | fn try_start_fire(player: &mut Player, cabin: &mut Cabin) -> CraftResult {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_light_fire_with_match` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:443:4
[INFO] [stdout]     |
[INFO] [stdout] 443 | fn try_light_fire_with_match(player: &mut Player, cabin: &mut Cabin) -> CraftResult {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `attempt_light_fire` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:456:4
[INFO] [stdout]     |
[INFO] [stdout] 456 | fn attempt_light_fire(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_add_fuel_item` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:510:4
[INFO] [stdout]     |
[INFO] [stdout] 510 | fn try_add_fuel_item(player: &mut Player, cabin: &mut Cabin, item: Item) -> CraftResult {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_split_firewood` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:546:4
[INFO] [stdout]     |
[INFO] [stdout] 546 | fn try_split_firewood(player: &mut Player) -> CraftResult {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_book_to_kindling` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:567:4
[INFO] [stdout]     |
[INFO] [stdout] 567 | fn try_book_to_kindling(player: &mut Player) -> CraftResult {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_near_tree` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:582:4
[INFO] [stdout]     |
[INFO] [stdout] 582 | fn find_near_tree<'a>(player: &Player, trees: &'a mut [Tree]) -> Option<&'a mut Tree> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `collect_fruit_drop` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:588:4
[INFO] [stdout]     |
[INFO] [stdout] 588 | fn collect_fruit_drop(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_chop_tree` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:622:4
[INFO] [stdout]     |
[INFO] [stdout] 622 | fn try_chop_tree(
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_near_water` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:828:4
[INFO] [stdout]     |
[INFO] [stdout] 828 | fn is_near_water(player: &Player, map: &WorldMap) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_fill_kettle` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:850:4
[INFO] [stdout]     |
[INFO] [stdout] 850 | fn try_fill_kettle(player: &mut Player, map: &WorldMap) -> CraftResult {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_heat_kettle` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:884:4
[INFO] [stdout]     |
[INFO] [stdout] 884 | fn try_heat_kettle(player: &mut Player, cabin: &Cabin) -> CraftResult {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_brew_herbal_tea` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:911:4
[INFO] [stdout]     |
[INFO] [stdout] 911 | fn try_brew_herbal_tea(player: &mut Player, _cabin: &Cabin) -> CraftResult {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `try_drink_herbal_tea` is never used
[INFO] [stdout]    --> src/actions/crafting.rs:955:4
[INFO] [stdout]     |
[INFO] [stdout] 955 | fn try_drink_herbal_tea(player: &mut Player) -> CraftResult {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]  --> src/actions/interaction.rs:9:18
[INFO] [stdout]   |
[INFO] [stdout] 9 |     ItemObtained(Item, String),
[INFO] [stdout]   |     ------------ ^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     field in this variant
[INFO] [stdout]   |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]   |
[INFO] [stdout] 9 -     ItemObtained(Item, String),
[INFO] [stdout] 9 +     ItemObtained((), String),
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/actions/interaction.rs:10:14
[INFO] [stdout]    |
[INFO] [stdout] 10 |     ItemLost(Item, String),
[INFO] [stdout]    |     -------- ^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 10 -     ItemLost(Item, String),
[INFO] [stdout] 10 +     ItemLost((), String),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `missing_materials` is never used
[INFO] [stdout]   --> src/entity/blueprint.rs:95:12
[INFO] [stdout]    |
[INFO] [stdout] 61 | impl Blueprint {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 95 |     pub fn missing_materials(&self) -> Vec<(Item, u32)> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `page_count`, `summary`, and `full_text` are never used
[INFO] [stdout]   --> src/entity/book.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl BookEntry {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn page_count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn summary(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn full_text(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_adjacent` is never used
[INFO] [stdout]    --> src/entity/body.rs:252:8
[INFO] [stdout]     |
[INFO] [stdout] 252 | pub fn is_adjacent(a: &Position, b: &Position) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]    --> src/entity/objects.rs:433:12
[INFO] [stdout]     |
[INFO] [stdout] 432 | impl FireState {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] 433 |     pub fn name(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clear_tinder` is never used
[INFO] [stdout]    --> src/entity/objects.rs:508:12
[INFO] [stdout]     |
[INFO] [stdout] 477 | impl Fireplace {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 508 |     pub fn clear_tinder(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `list` is never used
[INFO] [stdout]    --> src/entity/objects.rs:717:12
[INFO] [stdout]     |
[INFO] [stdout] 692 | impl LocationItems {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 717 |     pub fn list(&self) -> Vec<&Item> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `name` and `is_indoor` are never used
[INFO] [stdout]    --> src/entity/player.rs:155:12
[INFO] [stdout]     |
[INFO] [stdout] 154 | impl Room {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] 155 |     pub fn name(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 163 |     pub fn is_indoor(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_indoor`, `move_to`, and `apply_body_damage` are never used
[INFO] [stdout]    --> src/entity/player.rs:343:12
[INFO] [stdout]     |
[INFO] [stdout] 296 | impl Player {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 343 |     pub fn is_indoor(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub fn move_to(&mut self, pos: Position) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 384 |     pub fn apply_body_damage(&mut self, damage: f32) -> Option<BodyHitEvent> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `take_all_fruit`, `progress_text`, and `default_trees` are never used
[INFO] [stdout]    --> src/entity/trees.rs:77:12
[INFO] [stdout]     |
[INFO] [stdout]  27 | impl Tree {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub fn take_all_fruit(&mut self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn progress_text(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn default_trees() -> Vec<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_predator` is never used
[INFO] [stdout]    --> src/entity/wildlife.rs:169:12
[INFO] [stdout]     |
[INFO] [stdout]  66 | impl Species {
[INFO] [stdout]     | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn is_predator(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `invalid_request` and `internal_error` are never used
[INFO] [stdout]   --> src/mcp/protocol.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl JsonRpcError {
[INFO] [stdout]    | ----------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn invalid_request() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 87 |     pub fn internal_error(msg: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InitializeParams` is never constructed
[INFO] [stdout]   --> src/mcp/protocol.rs:99:12
[INFO] [stdout]    |
[INFO] [stdout] 99 | pub struct InitializeParams {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ClientCapabilities` is never constructed
[INFO] [stdout]    --> src/mcp/protocol.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub struct ClientCapabilities {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RootsCapability` is never constructed
[INFO] [stdout]    --> src/mcp/protocol.rs:115:12
[INFO] [stdout]     |
[INFO] [stdout] 115 | pub struct RootsCapability {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ClientInfo` is never constructed
[INFO] [stdout]    --> src/mcp/protocol.rs:120:12
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub struct ClientInfo {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `book_entry` is never used
[INFO] [stdout]    --> src/persistence/state.rs:585:12
[INFO] [stdout]     |
[INFO] [stdout]  92 | impl GameState {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 585 |     pub fn book_entry(&self, id: &str) -> Option<&BookEntry> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `opposite` is never used
[INFO] [stdout]   --> src/world/map.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl Direction {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn opposite(&self) -> Direction {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_valid_position` and `get_dominant_direction` are never used
[INFO] [stdout]    --> src/world/map.rs:257:12
[INFO] [stdout]     |
[INFO] [stdout] 143 | impl WorldMap {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 257 |     pub fn is_valid_position(&self, row: i32, col: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 272 |     pub fn get_dominant_direction(&self, row: usize, col: usize) -> Direction {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `as_tree_mut` and `as_tree` are never used
[INFO] [stdout]    --> src/world/object.rs:194:12
[INFO] [stdout]     |
[INFO] [stdout] 139 | impl WorldObject {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn as_tree_mut(&mut self) -> Option<&mut Tree> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |     pub fn as_tree(&self) -> Option<&Tree> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `remove` and `objects_at_mut` are never used
[INFO] [stdout]    --> src/world/object.rs:235:12
[INFO] [stdout]     |
[INFO] [stdout] 221 | impl ObjectRegistry {
[INFO] [stdout]     | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 235 |     pub fn remove(&mut self, id: &str) -> Option<PlacedObject> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 258 |     pub fn objects_at_mut(&mut self, position: &Position) -> Vec<&mut PlacedObject> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calculate_temperature` is never used
[INFO] [stdout]  --> src/world/simulation.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn calculate_temperature(
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `light_level` and `is_night` are never used
[INFO] [stdout]   --> src/world/time.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl TimeOfDay {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn light_level(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 76 |     pub fn is_night(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `formatted_time` is never used
[INFO] [stdout]    --> src/world/time.rs:137:12
[INFO] [stdout]     |
[INFO] [stdout] 105 | impl WorldTime {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn formatted_time(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `visibility_modifier` is never used
[INFO] [stdout]   --> src/world/weather.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl Weather {
[INFO] [stdout]    | ------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn visibility_modifier(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 24.64s
[INFO] running `Command { std: "docker" "inspect" "abb1c276fbef1654acf5d92e393275d4947ff4174fff87f25fd3746489356017", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "abb1c276fbef1654acf5d92e393275d4947ff4174fff87f25fd3746489356017", kill_on_drop: false }`
[INFO] [stdout] abb1c276fbef1654acf5d92e393275d4947ff4174fff87f25fd3746489356017
