[INFO] cloning repository https://github.com/Derarotte/poke
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Derarotte/poke" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDerarotte%2Fpoke", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDerarotte%2Fpoke'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 218a8a82a5510904da7a900c7cfb695bc3513c2b
[INFO] checking Derarotte/poke against try#f77b5bc6c7c84df104f86b0dd01d9490e3923fa8 for pr-147834
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FDerarotte%2Fpoke" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Derarotte/poke
[INFO] finished tweaking git repo https://github.com/Derarotte/poke
[INFO] tweaked toml for git repo https://github.com/Derarotte/poke written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Derarotte/poke on toolchain f77b5bc6c7c84df104f86b0dd01d9490e3923fa8
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+f77b5bc6c7c84df104f86b0dd01d9490e3923fa8" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Derarotte/poke 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" "+f77b5bc6c7c84df104f86b0dd01d9490e3923fa8" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+f77b5bc6c7c84df104f86b0dd01d9490e3923fa8" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] d900f6405d939845deeff3aaf21e3da0141c6c9f17532f730105f4177d2a1bcf
[INFO] running `Command { std: "docker" "start" "-a" "d900f6405d939845deeff3aaf21e3da0141c6c9f17532f730105f4177d2a1bcf", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d900f6405d939845deeff3aaf21e3da0141c6c9f17532f730105f4177d2a1bcf", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d900f6405d939845deeff3aaf21e3da0141c6c9f17532f730105f4177d2a1bcf", kill_on_drop: false }`
[INFO] [stdout] d900f6405d939845deeff3aaf21e3da0141c6c9f17532f730105f4177d2a1bcf
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+f77b5bc6c7c84df104f86b0dd01d9490e3923fa8" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] a6494df04f8916256a32689cb77c0d8141007593eb9e592f47fcb3436971c6e9
[INFO] running `Command { std: "docker" "start" "-a" "a6494df04f8916256a32689cb77c0d8141007593eb9e592f47fcb3436971c6e9", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.177
[INFO] [stderr]    Compiling proc-macro2 v1.0.101
[INFO] [stderr]    Compiling quote v1.0.41
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]     Checking memchr v2.7.6
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]    Compiling syn v2.0.107
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]     Checking uuid v1.18.1
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking poke v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/cli/team_list_menu.rs:158:17
[INFO] [stdout]     |
[INFO] [stdout] 158 |                 (10 + i as u32),
[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] 158 -                 (10 + i as u32),
[INFO] [stdout] 158 +                 10 + i as u32,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/data/loader.rs:74:1
[INFO] [stdout]    |
[INFO] [stdout] 74 | /// Store the assets directory path for use by all load functions
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ rustdoc does not generate documentation for macro invocations
[INFO] [stdout]    |
[INFO] [stdout]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Pokemon`
[INFO] [stdout]   --> src/cli/team_list_menu.rs:26:19
[INFO] [stdout]    |
[INFO] [stdout] 26 | use crate::game::{Pokemon, Player};
[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 doc comment
[INFO] [stdout]   --> src/data/loader.rs:74:1
[INFO] [stdout]    |
[INFO] [stdout] 74 | /// Store the assets directory path for use by all load functions
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ rustdoc does not generate documentation for macro invocations
[INFO] [stdout]    |
[INFO] [stdout]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing field `initial_moves` in initializer of `json_schemas::PokemonSpeciesJSON`
[INFO] [stdout]    --> src/data/json_schemas.rs:118:23
[INFO] [stdout]     |
[INFO] [stdout] 118 |         let pokemon = PokemonSpeciesJSON {
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^ missing `initial_moves`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pool`
[INFO] [stdout]    --> src/game/wild_pokemon.rs:264:13
[INFO] [stdout]     |
[INFO] [stdout] 264 |         let pool = vec![WildPokemonSpawn {
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_pool`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/game/storage.rs:204:13
[INFO] [stdout]     |
[INFO] [stdout] 204 |         let mut box_item = PokemonBox::new(1);
[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: value assigned to `current_hp` is never read
[INFO] [stdout]  --> tests/revival_system_test.rs:7:26
[INFO] [stdout]   |
[INFO] [stdout] 7 |     let mut current_hp = max_hp;
[INFO] [stdout]   |                          ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = help: maybe it is overwritten before being read?
[INFO] [stdout]   = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `fainted_count` is never read
[INFO] [stdout]   --> tests/revival_system_test.rs:86:29
[INFO] [stdout]    |
[INFO] [stdout] 86 |     let mut fainted_count = 0;
[INFO] [stdout]    |                             ^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> tests/revival_system_test.rs:107:10
[INFO] [stdout]     |
[INFO] [stdout] 107 |     for (name, recovery_percent) in items {
[INFO] [stdout]     |          ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> tests/integration_test.rs:40:24
[INFO] [stdout]    |
[INFO] [stdout] 40 |     let capture_rate = (base_catch_rate / 255.0);
[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] 40 -     let capture_rate = (base_catch_rate / 255.0);
[INFO] [stdout] 40 +     let capture_rate = base_catch_rate / 255.0;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Location` and `Region`
[INFO] [stdout]  --> tests/map_npc_system_test.rs:5:30
[INFO] [stdout]   |
[INFO] [stdout] 5 |     use poke::map::{GameMap, Location, Region, create_locations};
[INFO] [stdout]   |                              ^^^^^^^^  ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0063`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `poke` (lib test) due to 1 previous error; 4 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: unused variable: `viridian_forest`
[INFO] [stdout]   --> tests/location_system_test.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 |     let viridian_forest = locations_data::get_location_by_id(102).unwrap();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_viridian_forest`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/location_system_test.rs:187:9
[INFO] [stdout]     |
[INFO] [stdout] 187 |     let mut player = Player::new("Test".to_string());
[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: `Pokemon`
[INFO] [stdout]   --> src/cli/team_list_menu.rs:26:19
[INFO] [stdout]    |
[INFO] [stdout] 26 | use crate::game::{Pokemon, Player};
[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 doc comment
[INFO] [stdout]   --> src/data/loader.rs:74:1
[INFO] [stdout]    |
[INFO] [stdout] 74 | /// Store the assets directory path for use by all load functions
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ rustdoc does not generate documentation for macro invocations
[INFO] [stdout]    |
[INFO] [stdout]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `create_all_npcs`, `get_all_npcs`, and `get_npc_by_id`
[INFO] [stdout]  --> src/npc/mod.rs:4:20
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub use trainers::{create_all_npcs, get_npc_by_id, get_all_npcs, get_npcs_by_location};
[INFO] [stdout]   |                    ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BaseStats`, `PokemonSpecies`, `PokemonStats`, `calculate_pokemon_stats`, `generate_npc_team`, `generate_perfect_pokemon`, `generate_pokemon_with_ivs`, `generate_pokemon`, and `get_species`
[INFO] [stdout]  --> src/pokemon_generator/mod.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     PokemonSpecies, BaseStats, PokemonStats, generate_pokemon, generate_perfect_pokemon,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 6 |     generate_pokemon_with_ivs, generate_npc_team, calculate_pokemon_stats, get_species,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BattleAction` and `BattleResult`
[INFO] [stdout]   --> src/handlers/mod.rs:19:41
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use battle_handler::{BattleHandler, BattleResult, BattleAction};
[INFO] [stdout]    |                                         ^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ExplorationResult`
[INFO] [stdout]   --> src/handlers/mod.rs:21:51
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub use exploration_handler::{ExplorationHandler, ExplorationResult};
[INFO] [stdout]    |                                                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/cli/team_list_menu.rs:158:17
[INFO] [stdout]     |
[INFO] [stdout] 158 |                 (10 + i as u32),
[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] 158 -                 (10 + i as u32),
[INFO] [stdout] 158 +                 10 + i as u32,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/data/loader.rs:74:1
[INFO] [stdout]    |
[INFO] [stdout] 74 | /// Store the assets directory path for use by all load functions
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ rustdoc does not generate documentation for macro invocations
[INFO] [stdout]    |
[INFO] [stdout]    = help: to document an item produced by a macro, the macro must produce the documentation as part of its expansion
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `create_all_npcs`, `get_all_npcs`, and `get_npc_by_id`
[INFO] [stdout]  --> src/npc/mod.rs:4:20
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub use trainers::{create_all_npcs, get_npc_by_id, get_all_npcs, get_npcs_by_location};
[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: `BaseStats`, `PokemonSpecies`, `PokemonStats`, `calculate_pokemon_stats`, `generate_npc_team`, `generate_perfect_pokemon`, `generate_pokemon_with_ivs`, `generate_pokemon`, and `get_species`
[INFO] [stdout]  --> src/pokemon_generator/mod.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     PokemonSpecies, BaseStats, PokemonStats, generate_pokemon, generate_perfect_pokemon,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^  ^^^^^^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 6 |     generate_pokemon_with_ivs, generate_npc_team, calculate_pokemon_stats, get_species,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BattleAction` and `BattleResult`
[INFO] [stdout]   --> src/handlers/mod.rs:19:41
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use battle_handler::{BattleHandler, BattleResult, BattleAction};
[INFO] [stdout]    |                                         ^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ExplorationResult`
[INFO] [stdout]   --> src/handlers/mod.rs:21:51
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub use exploration_handler::{ExplorationHandler, ExplorationResult};
[INFO] [stdout]    |                                                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing field `initial_moves` in initializer of `json_schemas::PokemonSpeciesJSON`
[INFO] [stdout]    --> src/data/json_schemas.rs:118:23
[INFO] [stdout]     |
[INFO] [stdout] 118 |         let pokemon = PokemonSpeciesJSON {
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^ missing `initial_moves`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pool`
[INFO] [stdout]    --> src/game/wild_pokemon.rs:264:13
[INFO] [stdout]     |
[INFO] [stdout] 264 |         let pool = vec![WildPokemonSpawn {
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_pool`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/game/storage.rs:204:13
[INFO] [stdout]     |
[INFO] [stdout] 204 |         let mut box_item = PokemonBox::new(1);
[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: methods `set_catch_info` and `level_up` are never used
[INFO] [stdout]    --> src/game/pokemon.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout]  72 | impl Pokemon {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn set_catch_info(mut self, ball_type: String, location_id: u32, timestamp: u64) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn level_up(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/game/player.rs:54:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | impl Player {
[INFO] [stdout]     | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub fn get_active_pokemon(&mut self) -> Option<&mut Pokemon> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  58 |     pub fn add_item(&mut self, item: String, count: u32) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  72 |     pub fn add_money(&mut self, amount: u32) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn get_active_pokemon_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub fn revive_pokemon_at_center(&mut self, pokemon_index: usize) -> Result<String, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 215 |     pub fn display_recovery_items(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub fn display_fainted_pokemon(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 268 |     pub fn get_max_level(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 294 |     pub fn get_unlock_status(&self, requirement: &crate::game::LocationRequirement) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 333 |     pub fn migrate_from_old_save(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 352 |     pub fn store_pokemon(&mut self, team_index: usize) -> Result<String, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 369 |     pub fn retrieve_pokemon(&mut self, box_id: u32, storage_index: usize) -> Result<String, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 381 |     pub fn release_pokemon(&mut self, box_id: u32, storage_index: usize) -> Result<String, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 386 |     pub fn auto_store_excess_pokemon(&mut self) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_last_log`, `determine_turn_order`, `use_item`, and `award_experience` are never used
[INFO] [stdout]    --> src/game/battle.rs:35:12
[INFO] [stdout]     |
[INFO] [stdout]  33 | impl Battle {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout]  34 |     /// 创建新的战斗（单Pokemon）
[INFO] [stdout]  35 |     pub fn new(player_pokemon: Pokemon, opponent_pokemon: Pokemon) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn get_last_log(&self) -> Option<&String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 207 |     pub fn determine_turn_order(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 423 |     pub fn use_item(&mut self, item_type: &str, target_is_player: bool, _amount: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 454 |     pub fn award_experience(&mut self, base_exp: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ItemType` is never used
[INFO] [stdout]  --> src/game/item.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum ItemType {
[INFO] [stdout]   |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Item` is never constructed
[INFO] [stdout]   --> src/game/item.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct Item {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_hp_recovery`, `is_revive_item`, and `is_recovery_item` are never used
[INFO] [stdout]   --> src/game/item.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl Item {
[INFO] [stdout]    | --------- associated items in this implementation
[INFO] [stdout] 22 |     pub fn new(item_type: ItemType) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn get_hp_recovery(&self) -> Option<f32> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn is_revive_item(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn is_recovery_item(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_all_item_types` is never used
[INFO] [stdout]   --> src/game/item.rs:86:8
[INFO] [stdout]    |
[INFO] [stdout] 86 | pub fn get_all_item_types() -> Vec<ItemType> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_item_name` is never used
[INFO] [stdout]   --> src/game/item.rs:98:8
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub fn get_item_name(item_type: ItemType) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_condition_text` is never used
[INFO] [stdout]    --> src/game/location.rs:119:12
[INFO] [stdout]     |
[INFO] [stdout] 117 | impl LocationRequirement {
[INFO] [stdout]     | ------------------------ method in this implementation
[INFO] [stdout] 118 |     /// 生成友好的条件文本
[INFO] [stdout] 119 |     pub fn get_condition_text(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_visited` is never used
[INFO] [stdout]    --> src/game/location.rs:251:12
[INFO] [stdout]     |
[INFO] [stdout] 244 | impl PlayerLocationState {
[INFO] [stdout]     | ------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn is_visited(&self, location_id: u32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `pokemon_id` is never read
[INFO] [stdout]   --> src/game/wild_pokemon.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout]  9 | pub struct WildPokemonPreview {
[INFO] [stdout]    |            ------------------ field in this struct
[INFO] [stdout] 10 |     pub pokemon_id: u32,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WildPokemonPreview` 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 `is_full`, `is_empty`, `add_pokemon`, `remove_pokemon`, `get_pokemon`, and `rename` are never used
[INFO] [stdout]   --> src/game/storage.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl PokemonBox {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn is_full(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn add_pokemon(&mut self, pokemon: Pokemon) -> Result<(), String> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn remove_pokemon(&mut self, index: usize) -> Result<Pokemon, String> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn get_pokemon(&self, index: usize) -> Option<&Pokemon> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn rename(&mut self, new_name: String) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/game/storage.rs:72:12
[INFO] [stdout]     |
[INFO] [stdout]  61 | impl StorageSystem {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  72 |     pub fn add_pokemon(&mut self, pokemon: Pokemon) -> Result<(u32, usize), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn remove_pokemon(&mut self, box_id: u32, index: usize) -> Result<Pokemon, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub fn release_pokemon(&mut self, box_id: u32, index: usize) -> Result<String, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub fn get_box_pokemon(&self, box_id: u32) -> Result<&[Pokemon], String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn get_box_mut(&mut self, box_id: u32) -> Result<&mut PokemonBox, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn get_box(&self, box_id: u32) -> Result<&PokemonBox, String> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn rename_box(&mut self, box_id: u32, new_name: String) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn get_statistics(&self) -> StorageStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn search_pokemon(&self, name: &str) -> Vec<(u32, usize, &Pokemon)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn get_rare_pokemon(&self) -> Vec<(u32, usize, &Pokemon)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     fn find_box_index(&self, box_id: u32) -> Result<usize, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StorageStats` is never constructed
[INFO] [stdout]    --> src/game/storage.rs:185:12
[INFO] [stdout]     |
[INFO] [stdout] 185 | pub struct StorageStats {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `print_exploration_menu`, `print_battle_menu`, and `print_move_menu` are never used
[INFO] [stdout]   --> src/cli/menu.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout]  5 | impl Menu {
[INFO] [stdout]    | --------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn print_exploration_menu() {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn print_battle_menu() {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn print_move_menu(moves: &[(usize, String)]) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clear_screen` is never used
[INFO] [stdout]  --> src/cli/display.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn clear_screen() {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_separator` is never used
[INFO] [stdout]  --> src/cli/display.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn print_separator() {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_pokemon_info` is never used
[INFO] [stdout]   --> src/cli/display.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn print_pokemon_info(pokemon: &Pokemon) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_battle_status` is never used
[INFO] [stdout]   --> src/cli/display.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn print_battle_status(player_pokemon: &Pokemon, opponent_pokemon: &Pokemon) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_battle_message` is never used
[INFO] [stdout]   --> src/cli/display.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn print_battle_message(message: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_capture_result` is never used
[INFO] [stdout]   --> src/cli/display.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub fn print_capture_result(success: bool, pokemon_name: &str) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_escape_result` is never used
[INFO] [stdout]   --> src/cli/display.rs:62:8
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub fn print_escape_result(success: bool) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_level_up` is never used
[INFO] [stdout]   --> src/cli/display.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn print_level_up(pokemon: &Pokemon) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_team_full` is never used
[INFO] [stdout]   --> src/cli/display.rs:79:8
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub fn print_team_full() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_no_balls` is never used
[INFO] [stdout]   --> src/cli/display.rs:83:8
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub fn print_no_balls() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_victory` is never used
[INFO] [stdout]   --> src/cli/display.rs:94:8
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub fn print_victory() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_defeat` is never used
[INFO] [stdout]    --> src/cli/display.rs:100:8
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub fn print_defeat() {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `print_insufficient_items` and `print_insufficient_money` are never used
[INFO] [stdout]   --> src/cli/revival_menu.rs:87:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl RevivalMenu {
[INFO] [stdout]    | ---------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 87 |     pub fn print_insufficient_items() {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub fn print_insufficient_money(needed: u32, have: u32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/cli/map_menu.rs:9:12
[INFO] [stdout]     |
[INFO] [stdout]   7 | impl MapMenu {
[INFO] [stdout]     | ------------ associated functions in this implementation
[INFO] [stdout]   8 |     /// 打印地区选择菜单
[INFO] [stdout]   9 |     pub fn print_region_menu() {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  22 |     pub fn print_location_menu(locations: &[Location]) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  39 |     pub fn print_location_detail_menu(location_with_npcs: &LocationWithNPCs) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  57 |     pub fn print_npc_select_menu(npcs: &[NPCTrainer]) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  76 |     pub fn print_battle_preview_menu(npc: &NPCTrainer) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn print_visited_locations(locations: &[Location]) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn print_battle_result(won: bool, reward_money: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn print_battle_start(npc_name: &str, npc_title: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `display_location_info`, `display_unlock_requirements`, `display_encounter_preview`, `display_location_status`, and `display_exploration_menu` are never used
[INFO] [stdout]    --> src/cli/location_menu.rs:8:12
[INFO] [stdout]     |
[INFO] [stdout]   6 | impl LocationMenu {
[INFO] [stdout]     | ----------------- associated functions in this implementation
[INFO] [stdout]   7 |     /// 显示当前地点信息
[INFO] [stdout]   8 |     pub fn display_location_info(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     pub fn display_unlock_requirements(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn display_encounter_preview(preview: &WildPokemonPreview) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub fn display_location_status(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn display_exploration_menu(location_name: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TeamDetailMenu` is never constructed
[INFO] [stdout]  --> src/cli/team_detail_menu.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct TeamDetailMenu;
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `display_pokemon_detail`, `display_team_list`, `get_input`, `display_options_menu`, and `display_pokemon_comparison` are never used
[INFO] [stdout]    --> src/cli/team_detail_menu.rs:9:12
[INFO] [stdout]     |
[INFO] [stdout]   7 | impl TeamDetailMenu {
[INFO] [stdout]     | ------------------- associated functions in this implementation
[INFO] [stdout]   8 |     /// 显示单只宝可梦的详细信息
[INFO] [stdout]   9 |     pub fn display_pokemon_detail(pokemon: &Pokemon) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn display_team_list(team: &[Pokemon], current_index: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn get_input() -> String {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn display_options_menu() {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn display_pokemon_comparison(current: &Pokemon, alternative: &Pokemon) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `display_item_menu`, `display_battle_summary`, and `clear_screen` are never used
[INFO] [stdout]    --> src/cli/battle_menu.rs:81:12
[INFO] [stdout]     |
[INFO] [stdout]   5 | impl BattleMenu {
[INFO] [stdout]     | --------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn display_item_menu(items: &std::collections::HashMap<String, u32>) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn display_battle_summary(battle: &Battle) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn clear_screen() {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_wild_pokemon` is never used
[INFO] [stdout]    --> src/data/pokemon_data.rs:777:8
[INFO] [stdout]     |
[INFO] [stdout] 777 | pub fn get_wild_pokemon() -> Pokemon {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `trainers`, `items`, `game_constants`, `player_defaults`, `environment_bonuses`, and `natures` are never read
[INFO] [stdout]   --> src/data/loader.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct GameDataCache {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub trainers: Vec<serde_json::Value>,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 28 |     pub items: Vec<serde_json::Value>,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 29 |     pub type_effectiveness: Vec<serde_json::Value>,
[INFO] [stdout] 30 |     pub game_constants: serde_json::Value,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 31 |     pub player_defaults: serde_json::Value,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 32 |     pub environment_bonuses: Vec<serde_json::Value>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 33 |     pub natures: Vec<serde_json::Value>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_item_by_type` is never used
[INFO] [stdout]    --> src/data/loader.rs:265:8
[INFO] [stdout]     |
[INFO] [stdout] 265 | pub fn get_item_by_type(item_type: &str) -> Option<serde_json::Value> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_all_data` is never used
[INFO] [stdout]   --> src/data/validator.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn validate_all_data(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_items_data` is never used
[INFO] [stdout]   --> src/data/validator.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn validate_items_data(items: &[Value]) -> Result<(), Vec<String>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_type_effectiveness` is never used
[INFO] [stdout]   --> src/data/validator.rs:77:8
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub fn validate_type_effectiveness(types: &[Value]) -> Result<(), Vec<String>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_environment_bonuses` is never used
[INFO] [stdout]    --> src/data/validator.rs:121:8
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub fn validate_environment_bonuses(envs: &[Value]) -> Result<(), Vec<String>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_natures` is never used
[INFO] [stdout]    --> src/data/validator.rs:156:8
[INFO] [stdout]     |
[INFO] [stdout] 156 | pub fn validate_natures(natures: &[Value]) -> Result<(), Vec<String>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_pokemon_data` is never used
[INFO] [stdout]    --> src/data/validator.rs:196:4
[INFO] [stdout]     |
[INFO] [stdout] 196 | fn validate_pokemon_data(pokemon: &[Value]) -> Result<(), Vec<String>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_location_data` is never used
[INFO] [stdout]    --> src/data/validator.rs:235:4
[INFO] [stdout]     |
[INFO] [stdout] 235 | fn validate_location_data(locations: &[Value], pokemon: &[Value]) -> Result<(), Vec<String>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_trainer_data` is never used
[INFO] [stdout]    --> src/data/validator.rs:314:4
[INFO] [stdout]     |
[INFO] [stdout] 314 | fn validate_trainer_data(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PokemonSpeciesJSON` is never constructed
[INFO] [stdout]  --> src/data/json_schemas.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct PokemonSpeciesJSON {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BaseStatsJSON` is never constructed
[INFO] [stdout]   --> src/data/json_schemas.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct BaseStatsJSON {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EvolutionJSON` is never constructed
[INFO] [stdout]   --> src/data/json_schemas.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct EvolutionJSON {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MoveJSON` is never constructed
[INFO] [stdout]   --> src/data/json_schemas.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct MoveJSON {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_type` is never used
[INFO] [stdout]   --> src/data/json_schemas.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl MoveJSON {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 57 |     /// Get the move type, preferring move_type over type field
[INFO] [stdout] 58 |     pub fn get_type(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LocationJSON` is never constructed
[INFO] [stdout]   --> src/data/json_schemas.rs:65:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | pub struct LocationJSON {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WildPokemonSpawnJSON` is never constructed
[INFO] [stdout]   --> src/data/json_schemas.rs:78:12
[INFO] [stdout]    |
[INFO] [stdout] 78 | pub struct WildPokemonSpawnJSON {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TrainerJSON` is never constructed
[INFO] [stdout]   --> src/data/json_schemas.rs:87:12
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub struct TrainerJSON {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TrainerPokemonJSON` is never constructed
[INFO] [stdout]   --> src/data/json_schemas.rs:96:12
[INFO] [stdout]    |
[INFO] [stdout] 96 | pub struct TrainerPokemonJSON {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SaveManager` is never constructed
[INFO] [stdout]  --> src/utils/save.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct SaveManager;
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `save_game`, `load_game`, and `delete_save` are never used
[INFO] [stdout]   --> src/utils/save.rs:8:12
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl SaveManager {
[INFO] [stdout]    | ---------------- associated functions in this implementation
[INFO] [stdout]  8 |     pub fn save_game(player: &Player, filename: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub fn load_game(filename: &str) -> Result<Player, Box<dyn std::error::Error>> {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn delete_save(filename: &str) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `current_location` and `visited_locations` are never read
[INFO] [stdout]   --> src/map/mod.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct GameMap {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 32 |     pub regions: Vec<Region>,
[INFO] [stdout] 33 |     pub current_location: Option<u32>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 34 |     pub visited_locations: HashSet<u32>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/map/mod.rs:53:12
[INFO] [stdout]     |
[INFO] [stdout]  37 | impl GameMap {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  53 |     pub fn get_location(&self, location_id: u32) -> Option<&Location> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  65 |     pub fn move_to_location(&mut self, location_id: u32) -> Result<(), String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  76 |     pub fn get_current_location(&self) -> Option<&Location> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn get_all_regions(&self) -> &[Region] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn get_locations_in_region(&self, region_id: u32) -> Vec<&Location> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub fn has_visited(&self, location_id: u32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn get_npcs_at_location(&self, location_id: u32) -> Vec<NPCTrainer> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn get_location_with_npcs(&self, location_id: u32) -> Option<LocationWithNPCs> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn get_accessible_locations(&self) -> Vec<Location> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn display_map_info(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LocationWithNPCs` is never constructed
[INFO] [stdout]    --> src/map/mod.rs:151:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub struct LocationWithNPCs {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `display_info` is never used
[INFO] [stdout]    --> src/map/mod.rs:158:12
[INFO] [stdout]     |
[INFO] [stdout] 156 | impl LocationWithNPCs {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] 157 |     /// 显示地点详细信息
[INFO] [stdout] 158 |     pub fn display_info(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_location_by_id` is never used
[INFO] [stdout]    --> src/map/locations.rs:142:8
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub fn get_location_by_id(location_id: u32) -> Option<Location> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_locations_by_region` is never used
[INFO] [stdout]    --> src/map/locations.rs:155:8
[INFO] [stdout]     |
[INFO] [stdout] 155 | pub fn get_locations_by_region(region_id: u32) -> Vec<Location> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_all_locations` is never used
[INFO] [stdout]    --> src/map/locations.rs:165:8
[INFO] [stdout]     |
[INFO] [stdout] 165 | pub fn get_all_locations() -> Vec<Location> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Difficulty` is never used
[INFO] [stdout]  --> src/npc/mod.rs:8:10
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub enum Difficulty {
[INFO] [stdout]   |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `level_adjustment` and `name` are never used
[INFO] [stdout]   --> src/npc/mod.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl Difficulty {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] 16 |     /// 获取难度对应的等级调整值
[INFO] [stdout] 17 |     pub fn level_adjustment(&self) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn name(&self) -> &str {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NPCTrainer` is never constructed
[INFO] [stdout]   --> src/npc/mod.rs:39:12
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub struct NPCTrainer {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_reward_item`, `mark_defeated`, and `full_name` are never used
[INFO] [stdout]   --> src/npc/mod.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | impl NPCTrainer {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 51 |     /// 创建新的 NPC 训练师
[INFO] [stdout] 52 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 |     pub fn add_reward_item(&mut self, item: String) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 78 |     pub fn mark_defeated(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 83 |     pub fn full_name(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BattlePreview` is never constructed
[INFO] [stdout]   --> src/npc/mod.rs:90:12
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub struct BattlePreview {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PokemonPreview` is never constructed
[INFO] [stdout]    --> src/npc/mod.rs:100:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub struct PokemonPreview {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `pokemon_count`, `max_level`, and `display_info` are never used
[INFO] [stdout]    --> src/npc/mod.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl BattlePreview {
[INFO] [stdout]     | ------------------ associated items in this implementation
[INFO] [stdout] 107 |     /// 创建战斗预览
[INFO] [stdout] 108 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn pokemon_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn max_level(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn display_info(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_all_npcs` is never used
[INFO] [stdout]  --> src/npc/trainers.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn create_all_npcs() -> Vec<NPCTrainer> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_npc_by_id` is never used
[INFO] [stdout]    --> src/npc/trainers.rs:122:8
[INFO] [stdout]     |
[INFO] [stdout] 122 | pub fn get_npc_by_id(npc_id: u32) -> Option<NPCTrainer> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_all_npcs` is never used
[INFO] [stdout]    --> src/npc/trainers.rs:129:8
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub fn get_all_npcs() -> Vec<NPCTrainer> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_npcs_by_location` is never used
[INFO] [stdout]    --> src/npc/trainers.rs:134:8
[INFO] [stdout]     |
[INFO] [stdout] 134 | pub fn get_npcs_by_location(location_npcs: &[u32]) -> Vec<NPCTrainer> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `perfect` and `total` are never used
[INFO] [stdout]   --> src/pokemon_generator/mod.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl IndividualValues {
[INFO] [stdout]    | --------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn perfect() -> Self {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn total(&self) -> u32 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]   --> src/pokemon_generator/mod.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 75 | impl Talent {
[INFO] [stdout]    | ----------- method in this implementation
[INFO] [stdout] 76 |     /// 获取天赋的中文名称
[INFO] [stdout] 77 |     pub fn name(&self) -> &str {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `name` is never used
[INFO] [stdout]    --> src/pokemon_generator/mod.rs:141:12
[INFO] [stdout]     |
[INFO] [stdout] 139 | impl Nature {
[INFO] [stdout]     | ----------- method in this implementation
[INFO] [stdout] 140 |     /// 获取性格的中文名称
[INFO] [stdout] 141 |     pub fn name(&self) -> &str {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `perfect` is never used
[INFO] [stdout]    --> src/pokemon_generator/mod.rs:226:12
[INFO] [stdout]     |
[INFO] [stdout] 210 | impl PokemonInstance {
[INFO] [stdout]     | -------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub fn perfect(species_id: u32, level: u32) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `hp` is never read
[INFO] [stdout]    --> src/pokemon_generator/mod.rs:275:9
[INFO] [stdout]     |
[INFO] [stdout] 274 | pub struct NatureMultipliers {
[INFO] [stdout]     |            ----------------- field in this struct
[INFO] [stdout] 275 |     pub hp: f32,
[INFO] [stdout]     |         ^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `NatureMultipliers` 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 `id` and `egg_group` are never read
[INFO] [stdout]   --> src/pokemon_generator/generator.rs:7:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct PokemonSpecies {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout]  7 |     pub id: u32,
[INFO] [stdout]    |         ^^
[INFO] [stdout] ...
[INFO] [stdout] 10 |     pub egg_group: String,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PokemonSpecies` 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: function `generate_perfect_pokemon` is never used
[INFO] [stdout]    --> src/pokemon_generator/generator.rs:234:8
[INFO] [stdout]     |
[INFO] [stdout] 234 | pub fn generate_perfect_pokemon(species_id: u32, level: u32) -> Result<PokemonInstance, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_pokemon_with_ivs` is never used
[INFO] [stdout]    --> src/pokemon_generator/generator.rs:243:8
[INFO] [stdout]     |
[INFO] [stdout] 243 | pub fn generate_pokemon_with_ivs(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_npc_team` is never used
[INFO] [stdout]    --> src/pokemon_generator/generator.rs:265:8
[INFO] [stdout]     |
[INFO] [stdout] 265 | pub fn generate_npc_team(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `display` is never used
[INFO] [stdout]    --> src/pokemon_generator/generator.rs:347:12
[INFO] [stdout]     |
[INFO] [stdout] 345 | impl PokemonStats {
[INFO] [stdout]     | ----------------- method in this implementation
[INFO] [stdout] 346 |     /// 显示属性信息
[INFO] [stdout] 347 |     pub fn display(&self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Captured` is never constructed
[INFO] [stdout]   --> src/handlers/encounter_manager.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub enum EncounterResult {
[INFO] [stdout]    |          --------------- variant in this enum
[INFO] [stdout] 18 |     /// Pokemon was successfully captured
[INFO] [stdout] 19 |     Captured(Pokemon),
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EncounterResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `attempt_capture` is never used
[INFO] [stdout]    --> src/handlers/encounter_manager.rs:135:12
[INFO] [stdout]     |
[INFO] [stdout]  31 | impl EncounterManager {
[INFO] [stdout]     | --------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn attempt_capture(pokemon: &Pokemon) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BattleAction` is never used
[INFO] [stdout]   --> src/handlers/battle_handler.rs:15:10
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub enum BattleAction {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `exp_gained` and `money_gained` are never read
[INFO] [stdout]   --> src/handlers/battle_handler.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct BattleResult {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub exp_gained: u32,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 33 |     /// Money gained by player
[INFO] [stdout] 34 |     pub money_gained: u32,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `BattleResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `execute_npc_battle` is never used
[INFO] [stdout]   --> src/handlers/battle_handler.rs:70:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl BattleHandler {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn execute_npc_battle(
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `LocationChanged` is never constructed
[INFO] [stdout]   --> src/handlers/exploration_handler.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum ExplorationResult {
[INFO] [stdout]    |          ----------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 22 |     LocationChanged(u32),
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ExplorationResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0063`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `poke` (bin "poke" test) due to 1 previous error; 8 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "a6494df04f8916256a32689cb77c0d8141007593eb9e592f47fcb3436971c6e9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a6494df04f8916256a32689cb77c0d8141007593eb9e592f47fcb3436971c6e9", kill_on_drop: false }`
[INFO] [stdout] a6494df04f8916256a32689cb77c0d8141007593eb9e592f47fcb3436971c6e9
