[INFO] cloning repository https://github.com/mingu600/tapu-simu
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/mingu600/tapu-simu" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmingu600%2Ftapu-simu", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmingu600%2Ftapu-simu'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 059d147f093a12c2e71785b1df39b25350735e5e
[INFO] checking mingu600/tapu-simu against master#8f21a5c92ea55c348c275a1bc4fedbdf181e0d64 for pr-143011
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fmingu600%2Ftapu-simu" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/mingu600/tapu-simu
[INFO] finished tweaking git repo https://github.com/mingu600/tapu-simu
[INFO] tweaked toml for git repo https://github.com/mingu600/tapu-simu written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/mingu600/tapu-simu on toolchain 8f21a5c92ea55c348c275a1bc4fedbdf181e0d64
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+8f21a5c92ea55c348c275a1bc4fedbdf181e0d64" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/mingu600/tapu-simu 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" "+8f21a5c92ea55c348c275a1bc4fedbdf181e0d64" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/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:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8f21a5c92ea55c348c275a1bc4fedbdf181e0d64" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 674267b375d92a3eb582ca8aa601daf9eb2c6167e401342b56f93ff92aa88def
[INFO] running `Command { std: "docker" "start" "-a" "674267b375d92a3eb582ca8aa601daf9eb2c6167e401342b56f93ff92aa88def", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "674267b375d92a3eb582ca8aa601daf9eb2c6167e401342b56f93ff92aa88def", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "674267b375d92a3eb582ca8aa601daf9eb2c6167e401342b56f93ff92aa88def", kill_on_drop: false }`
[INFO] [stdout] 674267b375d92a3eb582ca8aa601daf9eb2c6167e401342b56f93ff92aa88def
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/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:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+8f21a5c92ea55c348c275a1bc4fedbdf181e0d64" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 6400c28c4435149555d8d82c7a314dca0a827b13c70e721593c02c66f0e622e7
[INFO] running `Command { std: "docker" "start" "-a" "6400c28c4435149555d8d82c7a314dca0a827b13c70e721593c02c66f0e622e7", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.95
[INFO] [stderr]    Compiling unicode-ident v1.0.18
[INFO] [stderr]    Compiling libc v0.2.173
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]     Checking cfg-if v1.0.1
[INFO] [stderr]    Compiling zerocopy v0.8.25
[INFO] [stderr]     Checking utf8parse v0.2.2
[INFO] [stderr]     Checking anstyle-query v1.1.3
[INFO] [stderr]    Compiling rayon-core v1.12.1
[INFO] [stderr]     Checking anstyle v1.0.11
[INFO] [stderr]     Checking is_terminal_polyfill v1.70.1
[INFO] [stderr]     Checking anstyle-parse v0.2.7
[INFO] [stderr]    Compiling serde v1.0.219
[INFO] [stderr]     Checking colorchoice v1.0.4
[INFO] [stderr]     Checking clap_lex v0.7.5
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]     Checking strsim v0.11.1
[INFO] [stderr]    Compiling serde_json v1.0.140
[INFO] [stderr]     Checking anstream v0.6.19
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]     Checking ryu v1.0.20
[INFO] [stderr]     Checking clap_builder v4.5.40
[INFO] [stderr]    Compiling rustix v1.0.7
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]     Checking memchr v2.7.5
[INFO] [stderr]     Checking itoa v1.0.15
[INFO] [stderr]    Compiling syn v2.0.103
[INFO] [stderr]     Checking deunicode v1.6.2
[INFO] [stderr]     Checking colored v3.0.0
[INFO] [stderr]     Checking crossbeam-deque v0.8.6
[INFO] [stderr]     Checking bitflags v2.9.1
[INFO] [stderr]     Checking linux-raw-sys v0.9.4
[INFO] [stderr]     Checking lazy_static v1.5.0
[INFO] [stderr]     Checking fastrand v2.3.0
[INFO] [stderr]     Checking once_cell v1.21.3
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking rayon v1.10.0
[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 tempfile v3.20.0
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling clap_derive v4.5.40
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]     Checking clap v4.5.40
[INFO] [stderr]     Checking tapu-simu v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/engine/combat/damage/generations/gen1.rs:201:19
[INFO] [stdout]     |
[INFO] [stdout] 201 |     base_damage = (base_damage.min(997.0) + 2.0);
[INFO] [stdout]     |                   ^                            ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 201 -     base_damage = (base_damage.min(997.0) + 2.0);
[INFO] [stdout] 201 +     base_damage = base_damage.min(997.0) + 2.0;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/engine/combat/damage/generations/modern.rs:334:12
[INFO] [stdout]     |
[INFO] [stdout] 334 |         if (move_type == PokemonType::Normal || move_type == PokemonType::Fighting) {
[INFO] [stdout]     |            ^                                                                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 334 -         if (move_type == PokemonType::Normal || move_type == PokemonType::Fighting) {
[INFO] [stdout] 334 +         if move_type == PokemonType::Normal || move_type == PokemonType::Fighting {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::battle_state::BattleState`
[INFO] [stdout]   --> src/engine/combat/damage_context.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::core::battle_state::BattleState;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]   --> src/engine/combat/damage_context.rs:15:13
[INFO] [stdout]    |
[INFO] [stdout] 15 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MoveCategory`
[INFO] [stdout]   --> src/engine/combat/move_effects.rs:18:42
[INFO] [stdout]    |
[INFO] [stdout] 18 | use crate::core::battle_state::{Pokemon, MoveCategory};
[INFO] [stdout]    |                                          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PokemonStatus`, `SideCondition`, `Stat`, `Terrain`, `VolatileStatus`, and `Weather`
[INFO] [stdout]   --> src/engine/combat/move_effects.rs:20:33
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::core::instructions::{PokemonStatus, VolatileStatus, Stat, Weather, SideCondition, Terrain};
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^  ^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BattleInstruction`, `FieldInstruction`, `PokemonInstruction`, `StatsInstruction`, and `StatusInstruction`
[INFO] [stdout]   --> src/engine/combat/move_effects.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     BattleInstruction, BattleInstructions, StatusInstruction, PokemonInstruction,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^                      ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 24 |     FieldInstruction, StatsInstruction,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SideReference`
[INFO] [stdout]   --> src/engine/combat/move_effects.rs:26:50
[INFO] [stdout]    |
[INFO] [stdout] 26 | use crate::core::battle_format::{BattlePosition, SideReference};
[INFO] [stdout]    |                                                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::engine::combat::type_effectiveness::TypeChart`
[INFO] [stdout]   --> src/engine/combat/move_effects.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | use crate::engine::combat::type_effectiveness::TypeChart;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::PokemonType`
[INFO] [stdout]   --> src/engine/combat/move_effects.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use crate::types::PokemonType;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: private item shadows public glob re-export
[INFO] [stdout]   --> src/engine/combat/move_effects.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | use crate::engine::combat::moves::MoveContext;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the name `MoveContext` in the type namespace is supposed to be publicly re-exported here
[INFO] [stdout]   --> src/engine/combat/move_effects.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use crate::engine::combat::moves::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: but the private item here shadows it
[INFO] [stdout]   --> src/engine/combat/move_effects.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | use crate::engine::combat::moves::MoveContext;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(hidden_glob_reexports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BattleError` and `BattleResult`
[INFO] [stdout]   --> src/engine/combat/move_effects.rs:31:20
[INFO] [stdout]    |
[INFO] [stdout] 31 | use crate::types::{BattleError, BattleResult};
[INFO] [stdout]    |                    ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/engine/combat/move_effects.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PokemonStatus`
[INFO] [stdout]  --> src/engine/combat/moves/status/status_effects.rs:7:53
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::core::instructions::{BattleInstructions, PokemonStatus};
[INFO] [stdout]   |                                                     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/stat_modifying.rs:62:1
[INFO] [stdout]    |
[INFO] [stdout] 62 | /// Apply Swords Dance - raises Attack by 2 stages
[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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/stat_modifying.rs:65:1
[INFO] [stdout]    |
[INFO] [stdout] 65 | /// Apply Dragon Dance - raises Attack and Speed by 1 stage each
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/stat_modifying.rs:68:1
[INFO] [stdout]    |
[INFO] [stdout] 68 | /// Apply Nasty Plot - raises Special Attack by 2 stages
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/stat_modifying.rs:71:1
[INFO] [stdout]    |
[INFO] [stdout] 71 | /// Apply Calm Mind - raises Special Attack and Special Defense by 1 stage each
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/stat_modifying.rs:74:1
[INFO] [stdout]    |
[INFO] [stdout] 74 | /// Apply Iron Defense - raises Defense by 2 stages
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/stat_modifying.rs:77:1
[INFO] [stdout]    |
[INFO] [stdout] 77 | /// Apply Amnesia - raises Special Defense by 2 stages
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/stat_modifying.rs:80:1
[INFO] [stdout]    |
[INFO] [stdout] 80 | /// Apply Agility - raises Speed by 2 stages
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/stat_modifying.rs:83:1
[INFO] [stdout]    |
[INFO] [stdout] 83 | /// Apply Bulk Up - raises Attack and Defense by 1 stage each
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/stat_modifying.rs:86:1
[INFO] [stdout]    |
[INFO] [stdout] 86 | /// Apply Rock Polish - raises Speed by 2 stages
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/stat_modifying.rs:89:1
[INFO] [stdout]    |
[INFO] [stdout] 89 | /// Apply Hone Claws - raises Attack and Accuracy by 1 stage each
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/stat_modifying.rs:92:1
[INFO] [stdout]    |
[INFO] [stdout] 92 | /// Apply Curse (when used by non-Ghost type) - raises Attack and Defense, lowers Speed
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/stat_modifying.rs:99:1
[INFO] [stdout]    |
[INFO] [stdout] 99 | /// Apply Growl - lowers target's Attack by 1 stage
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/engine/combat/moves/status/stat_modifying.rs:102:1
[INFO] [stdout]     |
[INFO] [stdout] 102 | /// Apply Leer - lowers target's Defense by 1 stage
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/engine/combat/moves/status/stat_modifying.rs:105:1
[INFO] [stdout]     |
[INFO] [stdout] 105 | /// Apply Tail Whip - lowers target's Defense by 1 stage
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/engine/combat/moves/status/stat_modifying.rs:108:1
[INFO] [stdout]     |
[INFO] [stdout] 108 | /// Apply String Shot - lowers target's Speed by 2 stages
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/engine/combat/moves/status/stat_modifying.rs:111:1
[INFO] [stdout]     |
[INFO] [stdout] 111 | /// Apply Charm - lowers target's Attack by 2 stages
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/engine/combat/moves/status/stat_modifying.rs:114:1
[INFO] [stdout]     |
[INFO] [stdout] 114 | /// Apply Screech - lowers target's Defense by 2 stages
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/engine/combat/moves/status/stat_modifying.rs:117:1
[INFO] [stdout]     |
[INFO] [stdout] 117 | /// Apply Sweet Scent - lowers target's Evasion by 2 stages
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/engine/combat/moves/status/stat_modifying.rs:120:1
[INFO] [stdout]     |
[INFO] [stdout] 120 | /// Apply Sand Attack - lowers target's Accuracy by 1 stage
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/engine/combat/moves/status/stat_modifying.rs:123:1
[INFO] [stdout]     |
[INFO] [stdout] 123 | /// Apply Smokescreen - lowers target's Accuracy by 1 stage
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/engine/combat/moves/status/stat_modifying.rs:126:1
[INFO] [stdout]     |
[INFO] [stdout] 126 | /// Apply Intimidate (ability) - lowers target's Attack by 1 stage
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BattleInstruction`
[INFO] [stdout]  --> src/engine/combat/moves/status/stat_modifying.rs:9:33
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::core::instructions::{BattleInstruction, BattleInstructions, Stat, Weather};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/healing.rs:43:1
[INFO] [stdout]    |
[INFO] [stdout] 43 | /// Apply Recover - restores 50% of max HP
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/healing.rs:46:1
[INFO] [stdout]    |
[INFO] [stdout] 46 | /// Apply Roost - restores 50% of max HP
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/healing.rs:49:1
[INFO] [stdout]    |
[INFO] [stdout] 49 | /// Apply Slack Off - restores 50% of max HP
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/healing.rs:52:1
[INFO] [stdout]    |
[INFO] [stdout] 52 | /// Apply Soft Boiled - restores 50% of max HP
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/healing.rs:55:1
[INFO] [stdout]    |
[INFO] [stdout] 55 | /// Apply Milk Drink - restores 50% of max HP
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::battle_format::SideReference`
[INFO] [stdout]    --> src/engine/combat/moves/status/healing.rs:239:9
[INFO] [stdout]     |
[INFO] [stdout] 239 |     use crate::core::battle_format::SideReference;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/engine/combat/moves/status/item_interaction.rs:204:40
[INFO] [stdout]     |
[INFO] [stdout] 204 |             modified_move.base_power = (fling_power as u16);
[INFO] [stdout]     |                                        ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 204 -             modified_move.base_power = (fling_power as u16);
[INFO] [stdout] 204 +             modified_move.base_power = fling_power as u16;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/engine/combat/moves/status/item_interaction.rs:370:36
[INFO] [stdout]     |
[INFO] [stdout] 370 |         modified_move.base_power = ((modified_move.base_power as f32 * power_multiplier) as u16);
[INFO] [stdout]     |                                    ^                                                           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 370 -         modified_move.base_power = ((modified_move.base_power as f32 * power_multiplier) as u16);
[INFO] [stdout] 370 +         modified_move.base_power = (modified_move.base_power as f32 * power_multiplier) as u16;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: ambiguous glob re-exports
[INFO] [stdout]    --> src/engine/combat/moves/mod.rs:109:9
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub use status::healing::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ the name `apply_pain_split` in the value namespace is first re-exported here
[INFO] [stdout] ...
[INFO] [stdout] 146 | pub use simple::*;
[INFO] [stdout]     |         --------- but the name `apply_pain_split` in the value namespace is also re-exported here
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(ambiguous_glob_reexports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: ambiguous glob re-exports
[INFO] [stdout]    --> src/engine/combat/moves/mod.rs:109:9
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub use status::healing::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ the name `apply_heal_bell` in the value namespace is first re-exported here
[INFO] [stdout] ...
[INFO] [stdout] 134 | pub use special::utility::*;
[INFO] [stdout]     |         ------------------- but the name `apply_heal_bell` in the value namespace is also re-exported here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: ambiguous glob re-exports
[INFO] [stdout]    --> src/engine/combat/moves/mod.rs:109:9
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub use status::healing::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ the name `apply_aromatherapy` in the value namespace is first re-exported here
[INFO] [stdout] ...
[INFO] [stdout] 134 | pub use special::utility::*;
[INFO] [stdout]     |         ------------------- but the name `apply_aromatherapy` in the value namespace is also re-exported here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/weather.rs:36:1
[INFO] [stdout]    |
[INFO] [stdout] 36 | /// Apply Sunny Day - sets sun weather
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/weather.rs:39:1
[INFO] [stdout]    |
[INFO] [stdout] 39 | /// Apply Rain Dance - sets rain weather
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/weather.rs:42:1
[INFO] [stdout]    |
[INFO] [stdout] 42 | /// Apply Sandstorm - sets sandstorm weather
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/weather.rs:45:1
[INFO] [stdout]    |
[INFO] [stdout] 45 | /// Apply Hail - sets hail weather
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/weather.rs:48:1
[INFO] [stdout]    |
[INFO] [stdout] 48 | /// Apply Snow - sets snow weather (Gen 9)
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/weather.rs:55:1
[INFO] [stdout]    |
[INFO] [stdout] 55 | /// Apply Primordial Sea - sets heavy rain (primal weather)
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/weather.rs:58:1
[INFO] [stdout]    |
[INFO] [stdout] 58 | /// Apply Desolate Land - sets harsh sun (primal weather)
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/weather.rs:61:1
[INFO] [stdout]    |
[INFO] [stdout] 61 | /// Apply Delta Stream - sets strong winds (primal weather)
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/weather.rs:64:1
[INFO] [stdout]    |
[INFO] [stdout] 64 | /// Apply Clear Skies - removes all weather
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BattleInstruction`
[INFO] [stdout]  --> src/engine/combat/moves/field/weather.rs:9:33
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::core::instructions::{BattleInstruction, BattleInstructions, Weather};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::instructions::Weather`
[INFO] [stdout]  --> src/engine/combat/moves/field/weather_accuracy.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::core::instructions::Weather;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/engine/combat/moves/field/terrain_dependent.rs:223:36
[INFO] [stdout]     |
[INFO] [stdout] 223 |         modified_move.base_power = ((modified_move.base_power as f32 * power_multiplier) as u16);
[INFO] [stdout]     |                                    ^                                                           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 223 -         modified_move.base_power = ((modified_move.base_power as f32 * power_multiplier) as u16);
[INFO] [stdout] 223 +         modified_move.base_power = (modified_move.base_power as f32 * power_multiplier) as u16;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/hazards.rs:37:1
[INFO] [stdout]    |
[INFO] [stdout] 37 | /// Apply Spikes - sets entry hazard that damages grounded Pokemon
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/hazards.rs:40:1
[INFO] [stdout]    |
[INFO] [stdout] 40 | /// Apply Stealth Rock - sets entry hazard based on type effectiveness
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/hazards.rs:43:1
[INFO] [stdout]    |
[INFO] [stdout] 43 | /// Apply Toxic Spikes - sets entry hazard that poisons switching Pokemon
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/hazards.rs:46:1
[INFO] [stdout]    |
[INFO] [stdout] 46 | /// Apply Sticky Web - sets entry hazard that lowers Speed of switching Pokemon
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BattleInstruction`
[INFO] [stdout]  --> src/engine/combat/moves/field/hazards.rs:9:33
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::core::instructions::{BattleInstruction, BattleInstructions};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HazardRemovalType` and `hazard_removal_move`
[INFO] [stdout]   --> src/engine/combat/moves/field/hazards.rs:13:61
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::engine::combat::core::field_system::{HazardType, HazardRemovalType, hazard_removal_move};
[INFO] [stdout]    |                                                             ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/screens.rs:37:1
[INFO] [stdout]    |
[INFO] [stdout] 37 | /// Apply Reflect - reduces physical damage
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/screens.rs:40:1
[INFO] [stdout]    |
[INFO] [stdout] 40 | /// Apply Light Screen - reduces special damage
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/screens.rs:61:1
[INFO] [stdout]    |
[INFO] [stdout] 61 | /// Apply Safeguard - prevents status conditions
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/screens.rs:64:1
[INFO] [stdout]    |
[INFO] [stdout] 64 | /// Apply Mist - prevents stat reduction
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/screens.rs:67:1
[INFO] [stdout]    |
[INFO] [stdout] 67 | /// Apply Lucky Chant - prevents critical hits against the team
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BattleInstruction`
[INFO] [stdout]  --> src/engine/combat/moves/field/screens.rs:9:33
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::core::instructions::{BattleInstruction, BattleInstructions, Weather};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SideCondition` and `Stat`
[INFO] [stdout]  --> src/engine/combat/moves/field/field_manipulation.rs:7:33
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::core::instructions::{SideCondition, VolatileStatus, Stat, Weather};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `StatsInstruction`
[INFO] [stdout]  --> src/engine/combat/moves/field/field_manipulation.rs:9:81
[INFO] [stdout]   |
[INFO] [stdout] 9 |     BattleInstruction, BattleInstructions, FieldInstruction, StatusInstruction, StatsInstruction,
[INFO] [stdout]   |                                                                                 ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SideReference`
[INFO] [stdout]   --> src/engine/combat/moves/field/field_manipulation.rs:11:50
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::core::battle_format::{BattlePosition, SideReference};
[INFO] [stdout]    |                                                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/engine/combat/moves/field/field_manipulation.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DamageModifiers` and `simple_damage_move`
[INFO] [stdout]   --> src/engine/combat/moves/damage/fixed_damage.rs:14:54
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::engine::combat::composers::damage_moves::{simple_damage_move, DamageModifiers};
[INFO] [stdout]    |                                                      ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::data::showdown_types::MoveData`
[INFO] [stdout]   --> src/engine/combat/moves/damage/fixed_damage.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::data::showdown_types::MoveData;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SideReference`
[INFO] [stdout]  --> src/engine/combat/moves/damage/multi_hit.rs:8:50
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::core::battle_format::{BattlePosition, SideReference};
[INFO] [stdout]   |                                                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DamageModifiers` and `simple_damage_move`
[INFO] [stdout]   --> src/engine/combat/moves/damage/multi_hit.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     simple_damage_move, DamageModifiers,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HitCountCalculator`
[INFO] [stdout]    --> src/engine/combat/moves/damage/multi_hit.rs:170:63
[INFO] [stdout]     |
[INFO] [stdout] 170 |         DamageCalculationContext, execute_multi_hit_sequence, HitCountCalculator,
[INFO] [stdout]     |                                                               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MoveCategory`
[INFO] [stdout]   --> src/engine/combat/moves/damage/variable_power.rs:10:46
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::core::battle_state::{BattleState, MoveCategory, Pokemon};
[INFO] [stdout]    |                                              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FieldInstruction`, `SideCondition`, `StatusInstruction`, `Terrain`, and `VolatileStatus`
[INFO] [stdout]   --> src/engine/combat/moves/damage/variable_power.rs:12:44
[INFO] [stdout]    |
[INFO] [stdout] 12 |     BattleInstruction, BattleInstructions, FieldInstruction, PokemonInstruction, PokemonStatus,
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 13 |     SideCondition, Stat, StatsInstruction, StatusInstruction, Terrain, VolatileStatus, Weather,
[INFO] [stdout]    |     ^^^^^^^^^^^^^                          ^^^^^^^^^^^^^^^^^  ^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `simple`
[INFO] [stdout]   --> src/engine/combat/moves/damage/variable_power.rs:16:36
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::engine::combat::moves::{simple, MoveContext};
[INFO] [stdout]    |                                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]     --> src/engine/combat/moves/damage/variable_power.rs:1030:45
[INFO] [stdout]      |
[INFO] [stdout] 1030 |             modified_move_data.base_power = (power as u16);
[INFO] [stdout]      |                                             ^            ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1030 -             modified_move_data.base_power = (power as u16);
[INFO] [stdout] 1030 +             modified_move_data.base_power = power as u16;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]     --> src/engine/combat/moves/damage/variable_power.rs:1098:37
[INFO] [stdout]      |
[INFO] [stdout] 1098 |     modified_move_data.base_power = (power.min(250) as u16); // Cap at reasonable power
[INFO] [stdout]      |                                     ^                     ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1098 -     modified_move_data.base_power = (power.min(250) as u16); // Cap at reasonable power
[INFO] [stdout] 1098 +     modified_move_data.base_power = power.min(250) as u16; // Cap at reasonable power
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]     --> src/engine/combat/moves/damage/variable_power.rs:1206:41
[INFO] [stdout]      |
[INFO] [stdout] 1206 |         modified_move_data.base_power = (power.min(250) as u16); // Cap at reasonable power
[INFO] [stdout]      |                                         ^                     ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1206 -         modified_move_data.base_power = (power.min(250) as u16); // Cap at reasonable power
[INFO] [stdout] 1206 +         modified_move_data.base_power = power.min(250) as u16; // Cap at reasonable power
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]     --> src/engine/combat/moves/damage/variable_power.rs:1412:41
[INFO] [stdout]      |
[INFO] [stdout] 1412 |         modified_move_data.base_power = (65); // Increased from base 40 power
[INFO] [stdout]      |                                         ^  ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1412 -         modified_move_data.base_power = (65); // Increased from base 40 power
[INFO] [stdout] 1412 +         modified_move_data.base_power = 65; // Increased from base 40 power
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: ambiguous glob re-exports
[INFO] [stdout]    --> src/engine/combat/moves/mod.rs:120:9
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub use damage::variable_power::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^ the name `apply_freeze_dry` in the value namespace is first re-exported here
[INFO] [stdout] ...
[INFO] [stdout] 153 | pub use secondary_effects::*;
[INFO] [stdout]     |         -------------------- but the name `apply_freeze_dry` in the value namespace is also re-exported here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PokemonInstruction`
[INFO] [stdout]   --> src/engine/combat/moves/special/two_turn.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     PokemonInstruction, FieldInstruction,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/engine/combat/moves/special/form_dependent.rs:110:49
[INFO] [stdout]     |
[INFO] [stdout] 110 |                 modified_move_data.base_power = ((modified_move_data.base_power as f32 * power_multiplier) as u16);
[INFO] [stdout]     |                                                 ^                                                                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 110 -                 modified_move_data.base_power = ((modified_move_data.base_power as f32 * power_multiplier) as u16);
[INFO] [stdout] 110 +                 modified_move_data.base_power = (modified_move_data.base_power as f32 * power_multiplier) as u16;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MoveCategory` and `Pokemon`
[INFO] [stdout]  --> src/engine/combat/moves/special/complex.rs:6:33
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::core::battle_state::{Pokemon, MoveCategory};
[INFO] [stdout]   |                                 ^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SideCondition`, `Terrain`, and `Weather`
[INFO] [stdout]  --> src/engine/combat/moves/special/complex.rs:8:70
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::core::instructions::{PokemonStatus, VolatileStatus, Stat, Weather, SideCondition, Terrain};
[INFO] [stdout]   |                                                                      ^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::engine::combat::type_effectiveness::TypeChart`
[INFO] [stdout]   --> src/engine/combat/moves/special/complex.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::engine::combat::type_effectiveness::TypeChart;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MoveCategory` and `Pokemon`
[INFO] [stdout]  --> src/engine/combat/moves/special/substitute.rs:5:33
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::core::battle_state::{Pokemon, MoveCategory};
[INFO] [stdout]   |                                 ^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PokemonStatus`, `SideCondition`, `Stat`, `Terrain`, and `Weather`
[INFO] [stdout]  --> src/engine/combat/moves/special/substitute.rs:7:33
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::core::instructions::{PokemonStatus, VolatileStatus, Stat, Weather, SideCondition, Terrain};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^                  ^^^^  ^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FieldInstruction` and `StatsInstruction`
[INFO] [stdout]   --> src/engine/combat/moves/special/substitute.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     FieldInstruction, StatsInstruction,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SideReference`
[INFO] [stdout]   --> src/engine/combat/moves/special/substitute.rs:12:50
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::core::battle_format::{BattlePosition, SideReference};
[INFO] [stdout]    |                                                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::engine::combat::type_effectiveness::TypeChart`
[INFO] [stdout]   --> src/engine/combat/moves/special/substitute.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::engine::combat::type_effectiveness::TypeChart;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::PokemonType`
[INFO] [stdout]   --> src/engine/combat/moves/special/substitute.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::types::PokemonType;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/engine/combat/moves/special/substitute.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BattleInstruction` and `PokemonInstruction`
[INFO] [stdout]  --> src/engine/combat/moves/special/type_changing.rs:8:53
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::core::instructions::{BattleInstructions, BattleInstruction, PokemonInstruction};
[INFO] [stdout]   |                                                     ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Stat`
[INFO] [stdout]  --> src/engine/combat/moves/special/utility.rs:6:64
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::core::instructions::{PokemonStatus, VolatileStatus, Stat};
[INFO] [stdout]   |                                                                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: ambiguous glob re-exports
[INFO] [stdout]    --> src/engine/combat/moves/mod.rs:139:9
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub use field::weather_accuracy::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^ the name `apply_blizzard` in the value namespace is first re-exported here
[INFO] [stdout] ...
[INFO] [stdout] 153 | pub use secondary_effects::*;
[INFO] [stdout]     |         -------------------- but the name `apply_blizzard` in the value namespace is also re-exported here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: ambiguous glob re-exports
[INFO] [stdout]    --> src/engine/combat/moves/mod.rs:139:9
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub use field::weather_accuracy::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^ the name `apply_thunder` in the value namespace is first re-exported here
[INFO] [stdout] ...
[INFO] [stdout] 153 | pub use secondary_effects::*;
[INFO] [stdout]     |         -------------------- but the name `apply_thunder` in the value namespace is also re-exported here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/engine/combat/moves/simple.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SideReference`
[INFO] [stdout]  --> src/engine/combat/moves/simple.rs:7:50
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::core::battle_format::{BattlePosition, SideReference};
[INFO] [stdout]   |                                                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MoveCategory` and `Pokemon`
[INFO] [stdout]  --> src/engine/combat/moves/simple.rs:8:46
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::core::battle_state::{BattleState, MoveCategory, Pokemon};
[INFO] [stdout]   |                                              ^^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PokemonStatus`, `StatsInstruction`, `Terrain`, and `Weather`
[INFO] [stdout]   --> src/engine/combat/moves/simple.rs:10:82
[INFO] [stdout]    |
[INFO] [stdout] 10 |     BattleInstruction, BattleInstructions, FieldInstruction, PokemonInstruction, PokemonStatus,
[INFO] [stdout]    |                                                                                  ^^^^^^^^^^^^^
[INFO] [stdout] 11 |     SideCondition, Stat, StatusInstruction, StatsInstruction, Terrain, VolatileStatus, Weather,
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^  ^^^^^^^                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::engine::combat::type_effectiveness::TypeChart`
[INFO] [stdout]   --> src/engine/combat/moves/simple.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::engine::combat::type_effectiveness::TypeChart;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::PokemonType`
[INFO] [stdout]   --> src/engine/combat/moves/simple.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::types::PokemonType;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DamageRolls`, `calculate_damage_with_positions`, and `critical_hit_probability`
[INFO] [stdout]   --> src/engine/combat/moves/special_combat.rs:14:37
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::engine::combat::damage::{calculate_damage_with_positions, DamageRolls, critical_hit_probability};
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BattleInstruction`
[INFO] [stdout]   --> src/engine/combat/moves/secondary_effects.rs:11:33
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::core::instructions::{BattleInstruction, BattleInstructions, PokemonStatus, Stat, VolatileStatus};
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Gender`, `MoveCategory`, `Move`, and `Pokemon`
[INFO] [stdout]  --> src/engine/combat/moves/registry.rs:8:46
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::core::battle_state::{BattleState, Pokemon, Move, Gender, MoveCategory};
[INFO] [stdout]   |                                              ^^^^^^^  ^^^^  ^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `apply_barrage`, `apply_bullet_seed`, `apply_comet_punch`, `apply_double_slap`, `apply_fury_attack`, `apply_pin_missile`, `apply_rock_blast`, `apply_scale_shot`, `apply_spike_cannon`, and `apply_tail_slap`
[INFO] [stdout]   --> src/engine/combat/moves/registry.rs:51:5
[INFO] [stdout]    |
[INFO] [stdout] 51 |     apply_double_slap, apply_fury_attack, apply_pin_missile, apply_spike_cannon,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 52 |     apply_barrage, apply_comet_punch, apply_bullet_seed,
[INFO] [stdout]    |     ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 53 |     apply_rock_blast, apply_tail_slap, apply_scale_shot
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `complex`
[INFO] [stdout]   --> src/engine/combat/moves/registry.rs:65:22
[INFO] [stdout]    |
[INFO] [stdout] 65 | use super::special::{complex, counter};
[INFO] [stdout]    |                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DamageRolls` and `calculate_damage_with_positions`
[INFO] [stdout]    --> src/engine/combat/moves/mod.rs:247:41
[INFO] [stdout]     |
[INFO] [stdout] 247 |     use crate::engine::combat::damage::{calculate_damage_with_positions, critical_hit_probability, DamageRolls};
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/engine/combat/moves/mod.rs:381:27
[INFO] [stdout]     |
[INFO] [stdout] 381 |     let normal_hit_prob = (1.0 - crit_chance);
[INFO] [stdout]     |                           ^                 ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 381 -     let normal_hit_prob = (1.0 - crit_chance);
[INFO] [stdout] 381 +     let normal_hit_prob = 1.0 - crit_chance;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PokemonInstruction`
[INFO] [stdout]    --> src/engine/combat/moves/mod.rs:552:56
[INFO] [stdout]     |
[INFO] [stdout] 552 |     use crate::core::instructions::{BattleInstruction, PokemonInstruction, StatsInstruction, StatusInstruction, Stat, PokemonStatus};
[INFO] [stdout]     |                                                        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> src/engine/combat/type_effectiveness.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TypeId`
[INFO] [stdout]  --> src/engine/combat/type_effectiveness.rs:9:41
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::types::identifiers::{MoveId, TypeId};
[INFO] [stdout]   |                                         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EffectType`, `get_effect_type_for_status_instruction`, and `should_block_effect`
[INFO] [stdout]   --> src/engine/combat/composers/damage_moves.rs:18:29
[INFO] [stdout]    |
[INFO] [stdout] 18 |     substitute_protection::{EffectType, should_block_effect, get_effect_type_for_status_instruction},
[INFO] [stdout]    |                             ^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `StatusInstruction` and `VolatileStatus`
[INFO] [stdout]   --> src/engine/combat/composers/damage_moves.rs:21:33
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::core::instructions::{StatusInstruction, VolatileStatus};
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::data::showdown_types::MoveData`
[INFO] [stdout]  --> src/engine/combat/composers/status_moves.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::data::showdown_types::MoveData;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `apply_multiple_status_effects`
[INFO] [stdout]   --> src/engine/combat/composers/status_moves.rs:11:24
[INFO] [stdout]    |
[INFO] [stdout] 11 |     StatusApplication, apply_multiple_status_effects, simple_status_move,
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MoveCategory`
[INFO] [stdout]  --> src/engine/combat/core/damage_system.rs:9:72
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::core::instructions::{BattleInstruction, PokemonInstruction, MoveCategory, Stat};
[INFO] [stdout]   |                                                                        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DamageContext`
[INFO] [stdout]   --> src/engine/combat/core/damage_system.rs:12:45
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::engine::combat::damage_context::{DamageContext, DamageResult};
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]    --> src/engine/combat/core/damage_system.rs:325:9
[INFO] [stdout]     |
[INFO] [stdout] 325 |     use std::str::FromStr;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::PokemonType`
[INFO] [stdout]    --> src/engine/combat/core/damage_system.rs:367:9
[INFO] [stdout]     |
[INFO] [stdout] 367 |     use crate::types::PokemonType;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]    --> src/engine/combat/core/damage_system.rs:368:9
[INFO] [stdout]     |
[INFO] [stdout] 368 |     use std::str::FromStr;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::data::showdown_types::MoveData`
[INFO] [stdout]   --> src/engine/combat/core/status_system.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::data::showdown_types::MoveData;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `StatusInstruction`
[INFO] [stdout]  --> src/engine/combat/core/contact_effects.rs:9:87
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::core::instructions::{BattleInstruction, PokemonInstruction, PokemonStatus, StatusInstruction, StatsInstruction, Stat};
[INFO] [stdout]   |                                                                                       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BattlePosition` and `SideReference`
[INFO] [stdout]   --> src/engine/combat/core/end_of_turn.rs:12:34
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::core::battle_format::{BattlePosition, SideReference};
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/engine/combat/core/end_of_turn.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BattleInstructions` and `VolatileStatus`
[INFO] [stdout]   --> src/engine/combat/core/ability_triggers.rs:9:24
[INFO] [stdout]    |
[INFO] [stdout] 9  |     BattleInstruction, BattleInstructions, PokemonInstruction, StatusInstruction,
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 10 |     StatsInstruction, PokemonStatus, VolatileStatus, Stat
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::battle_state::Pokemon`
[INFO] [stdout]  --> src/engine/mechanics/abilities.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::core::battle_state::Pokemon;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::engine::combat::damage_context::DamageContext`
[INFO] [stdout]  --> src/engine/mechanics/abilities.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::engine::combat::damage_context::DamageContext;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::battle_format::BattlePosition`
[INFO] [stdout]    --> src/engine/mechanics/abilities.rs:544:9
[INFO] [stdout]     |
[INFO] [stdout] 544 |     use crate::core::battle_format::BattlePosition;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `StatBoosts`
[INFO] [stdout]  --> src/engine/mechanics/items/choice_items.rs:6:27
[INFO] [stdout]   |
[INFO] [stdout] 6 | use super::{ItemModifier, StatBoosts};
[INFO] [stdout]   |                           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/engine/mechanics/items/stat_boosting_items.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PokemonStatus`, `Stat`, `StatsInstruction`, and `StatusInstruction`
[INFO] [stdout]   --> src/engine/mechanics/items/stat_boosting_items.rs:11:64
[INFO] [stdout]    |
[INFO] [stdout] 11 |     BattleInstruction, BattleInstructions, PokemonInstruction, PokemonStatus, Stat,
[INFO] [stdout]    |                                                                ^^^^^^^^^^^^^  ^^^^
[INFO] [stdout] 12 |     StatusInstruction, StatsInstruction,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PokemonRepository`
[INFO] [stdout]   --> src/engine/mechanics/items/stat_boosting_items.rs:14:53
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::data::repositories::{GameDataRepository, PokemonRepository};
[INFO] [stdout]    |                                                     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PokemonStatus` and `StatusInstruction`
[INFO] [stdout]   --> src/engine/mechanics/items/utility_items.rs:11:64
[INFO] [stdout]    |
[INFO] [stdout] 11 |     BattleInstruction, BattleInstructions, PokemonInstruction, PokemonStatus, Stat,
[INFO] [stdout]    |                                                                ^^^^^^^^^^^^^
[INFO] [stdout] 12 |     StatusInstruction, StatsInstruction,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `GenerationMechanics`
[INFO] [stdout]   --> src/engine/mechanics/items/mod.rs:24:25
[INFO] [stdout]    |
[INFO] [stdout] 24 | use crate::generation::{GenerationMechanics, GenerationBattleMechanics};
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PokemonStatus` and `Stat`
[INFO] [stdout]   --> src/engine/mechanics/items/mod.rs:27:33
[INFO] [stdout]    |
[INFO] [stdout] 27 | use crate::core::instructions::{Stat, PokemonStatus};
[INFO] [stdout]    |                                 ^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BattleInstruction`, `PokemonInstruction`, `StatsInstruction`, and `StatusInstruction`
[INFO] [stdout]   --> src/engine/mechanics/items/mod.rs:28:33
[INFO] [stdout]    |
[INFO] [stdout] 28 | use crate::core::instructions::{BattleInstruction, BattleInstructions, StatusInstruction, PokemonInstruction, StatsInstruction};
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^                      ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/engine/mechanics/items/mod.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/engine/turn.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PokemonStatus` and `Weather`
[INFO] [stdout]   --> src/engine/turn.rs:38:37
[INFO] [stdout]    |
[INFO] [stdout] 38 |     use crate::core::instructions::{PokemonStatus, Weather};
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BattleInstruction` and `PokemonInstruction`
[INFO] [stdout]   --> src/engine/turn.rs:39:37
[INFO] [stdout]    |
[INFO] [stdout] 39 |     use crate::core::instructions::{BattleInstruction, BattleInstructions, PokemonInstruction};
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^                      ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::battle_format::BattlePosition`
[INFO] [stdout]   --> src/engine/turn.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 |     use crate::core::battle_format::BattlePosition;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::generation::GenerationMechanics`
[INFO] [stdout]     --> src/engine/turn.rs:1032:9
[INFO] [stdout]      |
[INFO] [stdout] 1032 |     use crate::generation::GenerationMechanics;
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MoveCategory`
[INFO] [stdout]  --> src/data/generation_loader.rs:6:39
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::core::battle_state::{Move, MoveCategory};
[INFO] [stdout]   |                                       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::utils::target_from_string`
[INFO] [stdout]   --> src/data/generation_loader.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::utils::target_from_string;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TypeId`
[INFO] [stdout]  --> src/data/showdown_types.rs:6:31
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::types::{AbilityId, TypeId, PokemonType};
[INFO] [stdout]   |                               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DataError`
[INFO] [stdout]  --> src/simulator.rs:4:41
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::types::errors::{BattleError, DataError, SimulatorError};
[INFO] [stdout]   |                                         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/engine/combat/damage/generations/gen1.rs:201:19
[INFO] [stdout]     |
[INFO] [stdout] 201 |     base_damage = (base_damage.min(997.0) + 2.0);
[INFO] [stdout]     |                   ^                            ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 201 -     base_damage = (base_damage.min(997.0) + 2.0);
[INFO] [stdout] 201 +     base_damage = base_damage.min(997.0) + 2.0;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/engine/combat/damage/generations/modern.rs:334:12
[INFO] [stdout]     |
[INFO] [stdout] 334 |         if (move_type == PokemonType::Normal || move_type == PokemonType::Fighting) {
[INFO] [stdout]     |            ^                                                                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 334 -         if (move_type == PokemonType::Normal || move_type == PokemonType::Fighting) {
[INFO] [stdout] 334 +         if move_type == PokemonType::Normal || move_type == PokemonType::Fighting {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::battle_state::BattleState`
[INFO] [stdout]   --> src/engine/combat/damage_context.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::core::battle_state::BattleState;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]   --> src/engine/combat/damage_context.rs:15:13
[INFO] [stdout]    |
[INFO] [stdout] 15 | use serde::{Deserialize, Serialize};
[INFO] [stdout]    |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MoveCategory`
[INFO] [stdout]   --> src/engine/combat/move_effects.rs:18:42
[INFO] [stdout]    |
[INFO] [stdout] 18 | use crate::core::battle_state::{Pokemon, MoveCategory};
[INFO] [stdout]    |                                          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PokemonStatus`, `SideCondition`, `Stat`, `Terrain`, `VolatileStatus`, and `Weather`
[INFO] [stdout]   --> src/engine/combat/move_effects.rs:20:33
[INFO] [stdout]    |
[INFO] [stdout] 20 | use crate::core::instructions::{PokemonStatus, VolatileStatus, Stat, Weather, SideCondition, Terrain};
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^  ^^^^  ^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BattleInstruction`, `FieldInstruction`, `PokemonInstruction`, `StatsInstruction`, and `StatusInstruction`
[INFO] [stdout]   --> src/engine/combat/move_effects.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 |     BattleInstruction, BattleInstructions, StatusInstruction, PokemonInstruction,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^                      ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 24 |     FieldInstruction, StatsInstruction,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SideReference`
[INFO] [stdout]   --> src/engine/combat/move_effects.rs:26:50
[INFO] [stdout]    |
[INFO] [stdout] 26 | use crate::core::battle_format::{BattlePosition, SideReference};
[INFO] [stdout]    |                                                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::engine::combat::type_effectiveness::TypeChart`
[INFO] [stdout]   --> src/engine/combat/move_effects.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | use crate::engine::combat::type_effectiveness::TypeChart;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::PokemonType`
[INFO] [stdout]   --> src/engine/combat/move_effects.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use crate::types::PokemonType;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: private item shadows public glob re-export
[INFO] [stdout]   --> src/engine/combat/move_effects.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | use crate::engine::combat::moves::MoveContext;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] note: the name `MoveContext` in the type namespace is supposed to be publicly re-exported here
[INFO] [stdout]   --> src/engine/combat/move_effects.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use crate::engine::combat::moves::*;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: but the private item here shadows it
[INFO] [stdout]   --> src/engine/combat/move_effects.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | use crate::engine::combat::moves::MoveContext;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: `#[warn(hidden_glob_reexports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BattleError` and `BattleResult`
[INFO] [stdout]   --> src/engine/combat/move_effects.rs:31:20
[INFO] [stdout]    |
[INFO] [stdout] 31 | use crate::types::{BattleError, BattleResult};
[INFO] [stdout]    |                    ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/engine/combat/move_effects.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PokemonStatus`
[INFO] [stdout]  --> src/engine/combat/moves/status/status_effects.rs:7:53
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::core::instructions::{BattleInstructions, PokemonStatus};
[INFO] [stdout]   |                                                     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/stat_modifying.rs:62:1
[INFO] [stdout]    |
[INFO] [stdout] 62 | /// Apply Swords Dance - raises Attack by 2 stages
[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)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/stat_modifying.rs:65:1
[INFO] [stdout]    |
[INFO] [stdout] 65 | /// Apply Dragon Dance - raises Attack and Speed by 1 stage each
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/stat_modifying.rs:68:1
[INFO] [stdout]    |
[INFO] [stdout] 68 | /// Apply Nasty Plot - raises Special Attack by 2 stages
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/stat_modifying.rs:71:1
[INFO] [stdout]    |
[INFO] [stdout] 71 | /// Apply Calm Mind - raises Special Attack and Special Defense by 1 stage each
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/stat_modifying.rs:74:1
[INFO] [stdout]    |
[INFO] [stdout] 74 | /// Apply Iron Defense - raises Defense by 2 stages
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/stat_modifying.rs:77:1
[INFO] [stdout]    |
[INFO] [stdout] 77 | /// Apply Amnesia - raises Special Defense by 2 stages
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/stat_modifying.rs:80:1
[INFO] [stdout]    |
[INFO] [stdout] 80 | /// Apply Agility - raises Speed by 2 stages
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/stat_modifying.rs:83:1
[INFO] [stdout]    |
[INFO] [stdout] 83 | /// Apply Bulk Up - raises Attack and Defense by 1 stage each
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/stat_modifying.rs:86:1
[INFO] [stdout]    |
[INFO] [stdout] 86 | /// Apply Rock Polish - raises Speed by 2 stages
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/stat_modifying.rs:89:1
[INFO] [stdout]    |
[INFO] [stdout] 89 | /// Apply Hone Claws - raises Attack and Accuracy by 1 stage each
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/stat_modifying.rs:92:1
[INFO] [stdout]    |
[INFO] [stdout] 92 | /// Apply Curse (when used by non-Ghost type) - raises Attack and Defense, lowers Speed
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/stat_modifying.rs:99:1
[INFO] [stdout]    |
[INFO] [stdout] 99 | /// Apply Growl - lowers target's Attack by 1 stage
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/engine/combat/moves/status/stat_modifying.rs:102:1
[INFO] [stdout]     |
[INFO] [stdout] 102 | /// Apply Leer - lowers target's Defense by 1 stage
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/engine/combat/moves/status/stat_modifying.rs:105:1
[INFO] [stdout]     |
[INFO] [stdout] 105 | /// Apply Tail Whip - lowers target's Defense by 1 stage
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/engine/combat/moves/status/stat_modifying.rs:108:1
[INFO] [stdout]     |
[INFO] [stdout] 108 | /// Apply String Shot - lowers target's Speed by 2 stages
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/engine/combat/moves/status/stat_modifying.rs:111:1
[INFO] [stdout]     |
[INFO] [stdout] 111 | /// Apply Charm - lowers target's Attack by 2 stages
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/engine/combat/moves/status/stat_modifying.rs:114:1
[INFO] [stdout]     |
[INFO] [stdout] 114 | /// Apply Screech - lowers target's Defense by 2 stages
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/engine/combat/moves/status/stat_modifying.rs:117:1
[INFO] [stdout]     |
[INFO] [stdout] 117 | /// Apply Sweet Scent - lowers target's Evasion by 2 stages
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/engine/combat/moves/status/stat_modifying.rs:120:1
[INFO] [stdout]     |
[INFO] [stdout] 120 | /// Apply Sand Attack - lowers target's Accuracy by 1 stage
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/engine/combat/moves/status/stat_modifying.rs:123:1
[INFO] [stdout]     |
[INFO] [stdout] 123 | /// Apply Smokescreen - lowers target's Accuracy by 1 stage
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/engine/combat/moves/status/stat_modifying.rs:126:1
[INFO] [stdout]     |
[INFO] [stdout] 126 | /// Apply Intimidate (ability) - lowers target's Attack by 1 stage
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BattleInstruction`
[INFO] [stdout]  --> src/engine/combat/moves/status/stat_modifying.rs:9:33
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::core::instructions::{BattleInstruction, BattleInstructions, Stat, Weather};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/healing.rs:43:1
[INFO] [stdout]    |
[INFO] [stdout] 43 | /// Apply Recover - restores 50% of max HP
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/healing.rs:46:1
[INFO] [stdout]    |
[INFO] [stdout] 46 | /// Apply Roost - restores 50% of max HP
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/healing.rs:49:1
[INFO] [stdout]    |
[INFO] [stdout] 49 | /// Apply Slack Off - restores 50% of max HP
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/healing.rs:52:1
[INFO] [stdout]    |
[INFO] [stdout] 52 | /// Apply Soft Boiled - restores 50% of max HP
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/status/healing.rs:55:1
[INFO] [stdout]    |
[INFO] [stdout] 55 | /// Apply Milk Drink - restores 50% of max HP
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::battle_format::SideReference`
[INFO] [stdout]    --> src/engine/combat/moves/status/healing.rs:239:9
[INFO] [stdout]     |
[INFO] [stdout] 239 |     use crate::core::battle_format::SideReference;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/engine/combat/moves/status/item_interaction.rs:204:40
[INFO] [stdout]     |
[INFO] [stdout] 204 |             modified_move.base_power = (fling_power as u16);
[INFO] [stdout]     |                                        ^                  ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 204 -             modified_move.base_power = (fling_power as u16);
[INFO] [stdout] 204 +             modified_move.base_power = fling_power as u16;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/engine/combat/moves/status/item_interaction.rs:370:36
[INFO] [stdout]     |
[INFO] [stdout] 370 |         modified_move.base_power = ((modified_move.base_power as f32 * power_multiplier) as u16);
[INFO] [stdout]     |                                    ^                                                           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 370 -         modified_move.base_power = ((modified_move.base_power as f32 * power_multiplier) as u16);
[INFO] [stdout] 370 +         modified_move.base_power = (modified_move.base_power as f32 * power_multiplier) as u16;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: ambiguous glob re-exports
[INFO] [stdout]    --> src/engine/combat/moves/mod.rs:109:9
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub use status::healing::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ the name `apply_pain_split` in the value namespace is first re-exported here
[INFO] [stdout] ...
[INFO] [stdout] 146 | pub use simple::*;
[INFO] [stdout]     |         --------- but the name `apply_pain_split` in the value namespace is also re-exported here
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(ambiguous_glob_reexports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: ambiguous glob re-exports
[INFO] [stdout]    --> src/engine/combat/moves/mod.rs:109:9
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub use status::healing::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ the name `apply_heal_bell` in the value namespace is first re-exported here
[INFO] [stdout] ...
[INFO] [stdout] 134 | pub use special::utility::*;
[INFO] [stdout]     |         ------------------- but the name `apply_heal_bell` in the value namespace is also re-exported here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: ambiguous glob re-exports
[INFO] [stdout]    --> src/engine/combat/moves/mod.rs:109:9
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub use status::healing::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ the name `apply_aromatherapy` in the value namespace is first re-exported here
[INFO] [stdout] ...
[INFO] [stdout] 134 | pub use special::utility::*;
[INFO] [stdout]     |         ------------------- but the name `apply_aromatherapy` in the value namespace is also re-exported here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/weather.rs:36:1
[INFO] [stdout]    |
[INFO] [stdout] 36 | /// Apply Sunny Day - sets sun weather
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/weather.rs:39:1
[INFO] [stdout]    |
[INFO] [stdout] 39 | /// Apply Rain Dance - sets rain weather
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/weather.rs:42:1
[INFO] [stdout]    |
[INFO] [stdout] 42 | /// Apply Sandstorm - sets sandstorm weather
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/weather.rs:45:1
[INFO] [stdout]    |
[INFO] [stdout] 45 | /// Apply Hail - sets hail weather
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/weather.rs:48:1
[INFO] [stdout]    |
[INFO] [stdout] 48 | /// Apply Snow - sets snow weather (Gen 9)
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/weather.rs:55:1
[INFO] [stdout]    |
[INFO] [stdout] 55 | /// Apply Primordial Sea - sets heavy rain (primal weather)
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/weather.rs:58:1
[INFO] [stdout]    |
[INFO] [stdout] 58 | /// Apply Desolate Land - sets harsh sun (primal weather)
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/weather.rs:61:1
[INFO] [stdout]    |
[INFO] [stdout] 61 | /// Apply Delta Stream - sets strong winds (primal weather)
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/weather.rs:64:1
[INFO] [stdout]    |
[INFO] [stdout] 64 | /// Apply Clear Skies - removes all weather
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BattleInstruction`
[INFO] [stdout]  --> src/engine/combat/moves/field/weather.rs:9:33
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::core::instructions::{BattleInstruction, BattleInstructions, Weather};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::instructions::Weather`
[INFO] [stdout]  --> src/engine/combat/moves/field/weather_accuracy.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::core::instructions::Weather;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/engine/combat/moves/field/terrain_dependent.rs:223:36
[INFO] [stdout]     |
[INFO] [stdout] 223 |         modified_move.base_power = ((modified_move.base_power as f32 * power_multiplier) as u16);
[INFO] [stdout]     |                                    ^                                                           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 223 -         modified_move.base_power = ((modified_move.base_power as f32 * power_multiplier) as u16);
[INFO] [stdout] 223 +         modified_move.base_power = (modified_move.base_power as f32 * power_multiplier) as u16;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/hazards.rs:37:1
[INFO] [stdout]    |
[INFO] [stdout] 37 | /// Apply Spikes - sets entry hazard that damages grounded Pokemon
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/hazards.rs:40:1
[INFO] [stdout]    |
[INFO] [stdout] 40 | /// Apply Stealth Rock - sets entry hazard based on type effectiveness
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/hazards.rs:43:1
[INFO] [stdout]    |
[INFO] [stdout] 43 | /// Apply Toxic Spikes - sets entry hazard that poisons switching Pokemon
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/hazards.rs:46:1
[INFO] [stdout]    |
[INFO] [stdout] 46 | /// Apply Sticky Web - sets entry hazard that lowers Speed of switching Pokemon
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BattleInstruction`
[INFO] [stdout]  --> src/engine/combat/moves/field/hazards.rs:9:33
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::core::instructions::{BattleInstruction, BattleInstructions};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `HazardRemovalType` and `hazard_removal_move`
[INFO] [stdout]   --> src/engine/combat/moves/field/hazards.rs:13:61
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::engine::combat::core::field_system::{HazardType, HazardRemovalType, hazard_removal_move};
[INFO] [stdout]    |                                                             ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/screens.rs:37:1
[INFO] [stdout]    |
[INFO] [stdout] 37 | /// Apply Reflect - reduces physical damage
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/screens.rs:40:1
[INFO] [stdout]    |
[INFO] [stdout] 40 | /// Apply Light Screen - reduces special damage
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/screens.rs:61:1
[INFO] [stdout]    |
[INFO] [stdout] 61 | /// Apply Safeguard - prevents status conditions
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/screens.rs:64:1
[INFO] [stdout]    |
[INFO] [stdout] 64 | /// Apply Mist - prevents stat reduction
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/engine/combat/moves/field/screens.rs:67:1
[INFO] [stdout]    |
[INFO] [stdout] 67 | /// Apply Lucky Chant - prevents critical hits against the team
[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] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BattleInstruction`
[INFO] [stdout]  --> src/engine/combat/moves/field/screens.rs:9:33
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::core::instructions::{BattleInstruction, BattleInstructions, Weather};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SideCondition` and `Stat`
[INFO] [stdout]  --> src/engine/combat/moves/field/field_manipulation.rs:7:33
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::core::instructions::{SideCondition, VolatileStatus, Stat, Weather};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `StatsInstruction`
[INFO] [stdout]  --> src/engine/combat/moves/field/field_manipulation.rs:9:81
[INFO] [stdout]   |
[INFO] [stdout] 9 |     BattleInstruction, BattleInstructions, FieldInstruction, StatusInstruction, StatsInstruction,
[INFO] [stdout]   |                                                                                 ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SideReference`
[INFO] [stdout]   --> src/engine/combat/moves/field/field_manipulation.rs:11:50
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::core::battle_format::{BattlePosition, SideReference};
[INFO] [stdout]    |                                                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/engine/combat/moves/field/field_manipulation.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DamageModifiers` and `simple_damage_move`
[INFO] [stdout]   --> src/engine/combat/moves/damage/fixed_damage.rs:14:54
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::engine::combat::composers::damage_moves::{simple_damage_move, DamageModifiers};
[INFO] [stdout]    |                                                      ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::data::showdown_types::MoveData`
[INFO] [stdout]   --> src/engine/combat/moves/damage/fixed_damage.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::data::showdown_types::MoveData;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SideReference`
[INFO] [stdout]  --> src/engine/combat/moves/damage/multi_hit.rs:8:50
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::core::battle_format::{BattlePosition, SideReference};
[INFO] [stdout]   |                                                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DamageModifiers` and `simple_damage_move`
[INFO] [stdout]   --> src/engine/combat/moves/damage/multi_hit.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 |     simple_damage_move, DamageModifiers,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `HitCountCalculator`
[INFO] [stdout]    --> src/engine/combat/moves/damage/multi_hit.rs:170:63
[INFO] [stdout]     |
[INFO] [stdout] 170 |         DamageCalculationContext, execute_multi_hit_sequence, HitCountCalculator,
[INFO] [stdout]     |                                                               ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MoveCategory`
[INFO] [stdout]   --> src/engine/combat/moves/damage/variable_power.rs:10:46
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::core::battle_state::{BattleState, MoveCategory, Pokemon};
[INFO] [stdout]    |                                              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FieldInstruction`, `SideCondition`, `StatusInstruction`, `Terrain`, and `VolatileStatus`
[INFO] [stdout]   --> src/engine/combat/moves/damage/variable_power.rs:12:44
[INFO] [stdout]    |
[INFO] [stdout] 12 |     BattleInstruction, BattleInstructions, FieldInstruction, PokemonInstruction, PokemonStatus,
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 13 |     SideCondition, Stat, StatsInstruction, StatusInstruction, Terrain, VolatileStatus, Weather,
[INFO] [stdout]    |     ^^^^^^^^^^^^^                          ^^^^^^^^^^^^^^^^^  ^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `simple`
[INFO] [stdout]   --> src/engine/combat/moves/damage/variable_power.rs:16:36
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::engine::combat::moves::{simple, MoveContext};
[INFO] [stdout]    |                                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]     --> src/engine/combat/moves/damage/variable_power.rs:1030:45
[INFO] [stdout]      |
[INFO] [stdout] 1030 |             modified_move_data.base_power = (power as u16);
[INFO] [stdout]      |                                             ^            ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1030 -             modified_move_data.base_power = (power as u16);
[INFO] [stdout] 1030 +             modified_move_data.base_power = power as u16;
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]     --> src/engine/combat/moves/damage/variable_power.rs:1098:37
[INFO] [stdout]      |
[INFO] [stdout] 1098 |     modified_move_data.base_power = (power.min(250) as u16); // Cap at reasonable power
[INFO] [stdout]      |                                     ^                     ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1098 -     modified_move_data.base_power = (power.min(250) as u16); // Cap at reasonable power
[INFO] [stdout] 1098 +     modified_move_data.base_power = power.min(250) as u16; // Cap at reasonable power
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]     --> src/engine/combat/moves/damage/variable_power.rs:1206:41
[INFO] [stdout]      |
[INFO] [stdout] 1206 |         modified_move_data.base_power = (power.min(250) as u16); // Cap at reasonable power
[INFO] [stdout]      |                                         ^                     ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1206 -         modified_move_data.base_power = (power.min(250) as u16); // Cap at reasonable power
[INFO] [stdout] 1206 +         modified_move_data.base_power = power.min(250) as u16; // Cap at reasonable power
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]     --> src/engine/combat/moves/damage/variable_power.rs:1412:41
[INFO] [stdout]      |
[INFO] [stdout] 1412 |         modified_move_data.base_power = (65); // Increased from base 40 power
[INFO] [stdout]      |                                         ^  ^
[INFO] [stdout]      |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]      |
[INFO] [stdout] 1412 -         modified_move_data.base_power = (65); // Increased from base 40 power
[INFO] [stdout] 1412 +         modified_move_data.base_power = 65; // Increased from base 40 power
[INFO] [stdout]      |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: ambiguous glob re-exports
[INFO] [stdout]    --> src/engine/combat/moves/mod.rs:120:9
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub use damage::variable_power::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^ the name `apply_freeze_dry` in the value namespace is first re-exported here
[INFO] [stdout] ...
[INFO] [stdout] 153 | pub use secondary_effects::*;
[INFO] [stdout]     |         -------------------- but the name `apply_freeze_dry` in the value namespace is also re-exported here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PokemonInstruction`
[INFO] [stdout]   --> src/engine/combat/moves/special/two_turn.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     PokemonInstruction, FieldInstruction,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/engine/combat/moves/special/form_dependent.rs:110:49
[INFO] [stdout]     |
[INFO] [stdout] 110 |                 modified_move_data.base_power = ((modified_move_data.base_power as f32 * power_multiplier) as u16);
[INFO] [stdout]     |                                                 ^                                                                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 110 -                 modified_move_data.base_power = ((modified_move_data.base_power as f32 * power_multiplier) as u16);
[INFO] [stdout] 110 +                 modified_move_data.base_power = (modified_move_data.base_power as f32 * power_multiplier) as u16;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MoveCategory` and `Pokemon`
[INFO] [stdout]  --> src/engine/combat/moves/special/complex.rs:6:33
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::core::battle_state::{Pokemon, MoveCategory};
[INFO] [stdout]   |                                 ^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SideCondition`, `Terrain`, and `Weather`
[INFO] [stdout]  --> src/engine/combat/moves/special/complex.rs:8:70
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::core::instructions::{PokemonStatus, VolatileStatus, Stat, Weather, SideCondition, Terrain};
[INFO] [stdout]   |                                                                      ^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::engine::combat::type_effectiveness::TypeChart`
[INFO] [stdout]   --> src/engine/combat/moves/special/complex.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::engine::combat::type_effectiveness::TypeChart;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MoveCategory` and `Pokemon`
[INFO] [stdout]  --> src/engine/combat/moves/special/substitute.rs:5:33
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::core::battle_state::{Pokemon, MoveCategory};
[INFO] [stdout]   |                                 ^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PokemonStatus`, `SideCondition`, `Stat`, `Terrain`, and `Weather`
[INFO] [stdout]  --> src/engine/combat/moves/special/substitute.rs:7:33
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::core::instructions::{PokemonStatus, VolatileStatus, Stat, Weather, SideCondition, Terrain};
[INFO] [stdout]   |                                 ^^^^^^^^^^^^^                  ^^^^  ^^^^^^^  ^^^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `FieldInstruction` and `StatsInstruction`
[INFO] [stdout]   --> src/engine/combat/moves/special/substitute.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     FieldInstruction, StatsInstruction,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SideReference`
[INFO] [stdout]   --> src/engine/combat/moves/special/substitute.rs:12:50
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::core::battle_format::{BattlePosition, SideReference};
[INFO] [stdout]    |                                                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::engine::combat::type_effectiveness::TypeChart`
[INFO] [stdout]   --> src/engine/combat/moves/special/substitute.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::engine::combat::type_effectiveness::TypeChart;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::PokemonType`
[INFO] [stdout]   --> src/engine/combat/moves/special/substitute.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::types::PokemonType;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/engine/combat/moves/special/substitute.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BattleInstruction` and `PokemonInstruction`
[INFO] [stdout]  --> src/engine/combat/moves/special/type_changing.rs:8:53
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::core::instructions::{BattleInstructions, BattleInstruction, PokemonInstruction};
[INFO] [stdout]   |                                                     ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Stat`
[INFO] [stdout]  --> src/engine/combat/moves/special/utility.rs:6:64
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::core::instructions::{PokemonStatus, VolatileStatus, Stat};
[INFO] [stdout]   |                                                                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: ambiguous glob re-exports
[INFO] [stdout]    --> src/engine/combat/moves/mod.rs:139:9
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub use field::weather_accuracy::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^ the name `apply_blizzard` in the value namespace is first re-exported here
[INFO] [stdout] ...
[INFO] [stdout] 153 | pub use secondary_effects::*;
[INFO] [stdout]     |         -------------------- but the name `apply_blizzard` in the value namespace is also re-exported here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: ambiguous glob re-exports
[INFO] [stdout]    --> src/engine/combat/moves/mod.rs:139:9
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub use field::weather_accuracy::*;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^ the name `apply_thunder` in the value namespace is first re-exported here
[INFO] [stdout] ...
[INFO] [stdout] 153 | pub use secondary_effects::*;
[INFO] [stdout]     |         -------------------- but the name `apply_thunder` in the value namespace is also re-exported here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/engine/combat/moves/simple.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SideReference`
[INFO] [stdout]  --> src/engine/combat/moves/simple.rs:7:50
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::core::battle_format::{BattlePosition, SideReference};
[INFO] [stdout]   |                                                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MoveCategory` and `Pokemon`
[INFO] [stdout]  --> src/engine/combat/moves/simple.rs:8:46
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::core::battle_state::{BattleState, MoveCategory, Pokemon};
[INFO] [stdout]   |                                              ^^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PokemonStatus`, `StatsInstruction`, `Terrain`, and `Weather`
[INFO] [stdout]   --> src/engine/combat/moves/simple.rs:10:82
[INFO] [stdout]    |
[INFO] [stdout] 10 |     BattleInstruction, BattleInstructions, FieldInstruction, PokemonInstruction, PokemonStatus,
[INFO] [stdout]    |                                                                                  ^^^^^^^^^^^^^
[INFO] [stdout] 11 |     SideCondition, Stat, StatusInstruction, StatsInstruction, Terrain, VolatileStatus, Weather,
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^  ^^^^^^^                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::engine::combat::type_effectiveness::TypeChart`
[INFO] [stdout]   --> src/engine/combat/moves/simple.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::engine::combat::type_effectiveness::TypeChart;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::PokemonType`
[INFO] [stdout]   --> src/engine/combat/moves/simple.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::types::PokemonType;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DamageRolls`, `calculate_damage_with_positions`, and `critical_hit_probability`
[INFO] [stdout]   --> src/engine/combat/moves/special_combat.rs:14:37
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::engine::combat::damage::{calculate_damage_with_positions, DamageRolls, critical_hit_probability};
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `BattleInstruction`
[INFO] [stdout]   --> src/engine/combat/moves/secondary_effects.rs:11:33
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::core::instructions::{BattleInstruction, BattleInstructions, PokemonStatus, Stat, VolatileStatus};
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Gender`, `MoveCategory`, `Move`, and `Pokemon`
[INFO] [stdout]  --> src/engine/combat/moves/registry.rs:8:46
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::core::battle_state::{BattleState, Pokemon, Move, Gender, MoveCategory};
[INFO] [stdout]   |                                              ^^^^^^^  ^^^^  ^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `apply_barrage`, `apply_bullet_seed`, `apply_comet_punch`, `apply_double_slap`, `apply_fury_attack`, `apply_pin_missile`, `apply_rock_blast`, `apply_scale_shot`, `apply_spike_cannon`, and `apply_tail_slap`
[INFO] [stdout]   --> src/engine/combat/moves/registry.rs:51:5
[INFO] [stdout]    |
[INFO] [stdout] 51 |     apply_double_slap, apply_fury_attack, apply_pin_missile, apply_spike_cannon,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 52 |     apply_barrage, apply_comet_punch, apply_bullet_seed,
[INFO] [stdout]    |     ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 53 |     apply_rock_blast, apply_tail_slap, apply_scale_shot
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `complex`
[INFO] [stdout]   --> src/engine/combat/moves/registry.rs:65:22
[INFO] [stdout]    |
[INFO] [stdout] 65 | use super::special::{complex, counter};
[INFO] [stdout]    |                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DamageRolls` and `calculate_damage_with_positions`
[INFO] [stdout]    --> src/engine/combat/moves/mod.rs:247:41
[INFO] [stdout]     |
[INFO] [stdout] 247 |     use crate::engine::combat::damage::{calculate_damage_with_positions, critical_hit_probability, DamageRolls};
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/engine/combat/moves/mod.rs:381:27
[INFO] [stdout]     |
[INFO] [stdout] 381 |     let normal_hit_prob = (1.0 - crit_chance);
[INFO] [stdout]     |                           ^                 ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 381 -     let normal_hit_prob = (1.0 - crit_chance);
[INFO] [stdout] 381 +     let normal_hit_prob = 1.0 - crit_chance;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PokemonInstruction`
[INFO] [stdout]    --> src/engine/combat/moves/mod.rs:552:56
[INFO] [stdout]     |
[INFO] [stdout] 552 |     use crate::core::instructions::{BattleInstruction, PokemonInstruction, StatsInstruction, StatusInstruction, Stat, PokemonStatus};
[INFO] [stdout]     |                                                        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> src/engine/combat/type_effectiveness.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TypeId`
[INFO] [stdout]  --> src/engine/combat/type_effectiveness.rs:9:41
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::types::identifiers::{MoveId, TypeId};
[INFO] [stdout]   |                                         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `EffectType`, `get_effect_type_for_status_instruction`, and `should_block_effect`
[INFO] [stdout]   --> src/engine/combat/composers/damage_moves.rs:18:29
[INFO] [stdout]    |
[INFO] [stdout] 18 |     substitute_protection::{EffectType, should_block_effect, get_effect_type_for_status_instruction},
[INFO] [stdout]    |                             ^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `StatusInstruction` and `VolatileStatus`
[INFO] [stdout]   --> src/engine/combat/composers/damage_moves.rs:21:33
[INFO] [stdout]    |
[INFO] [stdout] 21 | use crate::core::instructions::{StatusInstruction, VolatileStatus};
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::data::showdown_types::MoveData`
[INFO] [stdout]  --> src/engine/combat/composers/status_moves.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::data::showdown_types::MoveData;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `apply_multiple_status_effects`
[INFO] [stdout]   --> src/engine/combat/composers/status_moves.rs:11:24
[INFO] [stdout]    |
[INFO] [stdout] 11 |     StatusApplication, apply_multiple_status_effects, simple_status_move,
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MoveCategory`
[INFO] [stdout]  --> src/engine/combat/core/damage_system.rs:9:72
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::core::instructions::{BattleInstruction, PokemonInstruction, MoveCategory, Stat};
[INFO] [stdout]   |                                                                        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DamageContext`
[INFO] [stdout]   --> src/engine/combat/core/damage_system.rs:12:45
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::engine::combat::damage_context::{DamageContext, DamageResult};
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]    --> src/engine/combat/core/damage_system.rs:325:9
[INFO] [stdout]     |
[INFO] [stdout] 325 |     use std::str::FromStr;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::types::PokemonType`
[INFO] [stdout]    --> src/engine/combat/core/damage_system.rs:367:9
[INFO] [stdout]     |
[INFO] [stdout] 367 |     use crate::types::PokemonType;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]    --> src/engine/combat/core/damage_system.rs:368:9
[INFO] [stdout]     |
[INFO] [stdout] 368 |     use std::str::FromStr;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::data::showdown_types::MoveData`
[INFO] [stdout]   --> src/engine/combat/core/status_system.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::data::showdown_types::MoveData;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `StatusInstruction`
[INFO] [stdout]  --> src/engine/combat/core/contact_effects.rs:9:87
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::core::instructions::{BattleInstruction, PokemonInstruction, PokemonStatus, StatusInstruction, StatsInstruction, Stat};
[INFO] [stdout]   |                                                                                       ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MoveCategory`
[INFO] [stdout]    --> src/engine/combat/core/move_prevention.rs:423:46
[INFO] [stdout]     |
[INFO] [stdout] 423 |     use crate::core::battle_state::{Pokemon, MoveCategory};
[INFO] [stdout]     |                                              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::instructions::Stat`
[INFO] [stdout]    --> src/engine/combat/core/move_prevention.rs:424:9
[INFO] [stdout]     |
[INFO] [stdout] 424 |     use crate::core::instructions::Stat;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BattlePosition` and `SideReference`
[INFO] [stdout]   --> src/engine/combat/core/end_of_turn.rs:12:34
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::core::battle_format::{BattlePosition, SideReference};
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/engine/combat/core/end_of_turn.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BattleInstructions` and `VolatileStatus`
[INFO] [stdout]   --> src/engine/combat/core/ability_triggers.rs:9:24
[INFO] [stdout]    |
[INFO] [stdout] 9  |     BattleInstruction, BattleInstructions, PokemonInstruction, StatusInstruction,
[INFO] [stdout]    |                        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 10 |     StatsInstruction, PokemonStatus, VolatileStatus, Stat
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::battle_state::Pokemon`
[INFO] [stdout]  --> src/engine/mechanics/abilities.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::core::battle_state::Pokemon;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::engine::combat::damage_context::DamageContext`
[INFO] [stdout]  --> src/engine/mechanics/abilities.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::engine::combat::damage_context::DamageContext;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::battle_format::BattlePosition`
[INFO] [stdout]    --> src/engine/mechanics/abilities.rs:544:9
[INFO] [stdout]     |
[INFO] [stdout] 544 |     use crate::core::battle_format::BattlePosition;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `StatBoosts`
[INFO] [stdout]  --> src/engine/mechanics/items/choice_items.rs:6:27
[INFO] [stdout]   |
[INFO] [stdout] 6 | use super::{ItemModifier, StatBoosts};
[INFO] [stdout]   |                           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/engine/mechanics/items/stat_boosting_items.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PokemonStatus`, `Stat`, `StatsInstruction`, and `StatusInstruction`
[INFO] [stdout]   --> src/engine/mechanics/items/stat_boosting_items.rs:11:64
[INFO] [stdout]    |
[INFO] [stdout] 11 |     BattleInstruction, BattleInstructions, PokemonInstruction, PokemonStatus, Stat,
[INFO] [stdout]    |                                                                ^^^^^^^^^^^^^  ^^^^
[INFO] [stdout] 12 |     StatusInstruction, StatsInstruction,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `PokemonRepository`
[INFO] [stdout]   --> src/engine/mechanics/items/stat_boosting_items.rs:14:53
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::data::repositories::{GameDataRepository, PokemonRepository};
[INFO] [stdout]    |                                                     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PokemonStatus` and `StatusInstruction`
[INFO] [stdout]   --> src/engine/mechanics/items/utility_items.rs:11:64
[INFO] [stdout]    |
[INFO] [stdout] 11 |     BattleInstruction, BattleInstructions, PokemonInstruction, PokemonStatus, Stat,
[INFO] [stdout]    |                                                                ^^^^^^^^^^^^^
[INFO] [stdout] 12 |     StatusInstruction, StatsInstruction,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `GenerationMechanics`
[INFO] [stdout]   --> src/engine/mechanics/items/mod.rs:24:25
[INFO] [stdout]    |
[INFO] [stdout] 24 | use crate::generation::{GenerationMechanics, GenerationBattleMechanics};
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PokemonStatus` and `Stat`
[INFO] [stdout]   --> src/engine/mechanics/items/mod.rs:27:33
[INFO] [stdout]    |
[INFO] [stdout] 27 | use crate::core::instructions::{Stat, PokemonStatus};
[INFO] [stdout]    |                                 ^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BattleInstruction`, `PokemonInstruction`, `StatsInstruction`, and `StatusInstruction`
[INFO] [stdout]   --> src/engine/mechanics/items/mod.rs:28:33
[INFO] [stdout]    |
[INFO] [stdout] 28 | use crate::core::instructions::{BattleInstruction, BattleInstructions, StatusInstruction, PokemonInstruction, StatsInstruction};
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^                      ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> src/engine/mechanics/items/mod.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/engine/turn.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `PokemonStatus` and `Weather`
[INFO] [stdout]   --> src/engine/turn.rs:38:37
[INFO] [stdout]    |
[INFO] [stdout] 38 |     use crate::core::instructions::{PokemonStatus, Weather};
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BattleInstruction` and `PokemonInstruction`
[INFO] [stdout]   --> src/engine/turn.rs:39:37
[INFO] [stdout]    |
[INFO] [stdout] 39 |     use crate::core::instructions::{BattleInstruction, BattleInstructions, PokemonInstruction};
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^                      ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::battle_format::BattlePosition`
[INFO] [stdout]   --> src/engine/turn.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 |     use crate::core::battle_format::BattlePosition;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::generation::GenerationMechanics`
[INFO] [stdout]     --> src/engine/turn.rs:1032:9
[INFO] [stdout]      |
[INFO] [stdout] 1032 |     use crate::generation::GenerationMechanics;
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MoveCategory`
[INFO] [stdout]  --> src/data/generation_loader.rs:6:39
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::core::battle_state::{Move, MoveCategory};
[INFO] [stdout]   |                                       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::utils::target_from_string`
[INFO] [stdout]   --> src/data/generation_loader.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::utils::target_from_string;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TypeId`
[INFO] [stdout]  --> src/data/showdown_types.rs:6:31
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::types::{AbilityId, TypeId, PokemonType};
[INFO] [stdout]   |                               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DataError`
[INFO] [stdout]  --> src/simulator.rs:4:41
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::types::errors::{BattleError, DataError, SimulatorError};
[INFO] [stdout]   |                                         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `position`
[INFO] [stdout]    --> src/core/battle_state/pokemon.rs:261:9
[INFO] [stdout]     |
[INFO] [stdout] 261 |         position: BattlePosition,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `side_index`
[INFO] [stdout]     --> src/core/battle_state/mod.rs:1168:46
[INFO] [stdout]      |
[INFO] [stdout] 1168 |     fn format_side(&self, side: &BattleSide, side_index: usize) -> String {
[INFO] [stdout]      |                                              ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_side_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `attacker`
[INFO] [stdout]   --> src/engine/combat/damage/generations/gen2.rs:18:38
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn critical_hit_probability_gen2(attacker: &Pokemon, move_data: &MoveData) -> f32 {
[INFO] [stdout]    |                                      ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_attacker`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `attacker`
[INFO] [stdout]    --> src/engine/combat/damage/critical.rs:167:38
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub fn critical_hit_probability_gen2(attacker: &Pokemon, move_data: &MoveData) -> f32 {
[INFO] [stdout]     |                                      ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_attacker`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]    --> src/engine/combat/damage/utils.rs:104:5
[INFO] [stdout]     |
[INFO] [stdout] 104 |     generation: crate::generation::Generation,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `move_data`
[INFO] [stdout]    --> src/engine/combat/moves/status/stat_modifying.rs:159:5
[INFO] [stdout]     |
[INFO] [stdout] 159 |     move_data: &MoveData,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_move_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]    --> src/engine/combat/moves/status/stat_modifying.rs:162:5
[INFO] [stdout]     |
[INFO] [stdout] 162 |     generation: &GenerationMechanics,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `duration`
[INFO] [stdout]   --> src/engine/combat/moves/field/advanced_hazards.rs:45:21
[INFO] [stdout]    |
[INFO] [stdout] 45 |         if let Some(duration) = user_side.side_conditions.get(&condition) {
[INFO] [stdout]    |                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_duration`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_position`
[INFO] [stdout]   --> src/engine/combat/moves/field/hazard_removal.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 57 |     user_position: BattlePosition,
[INFO] [stdout]    |     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_position`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `branch_on_damage`
[INFO] [stdout]   --> src/engine/combat/moves/damage/variable_power.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 38 |     branch_on_damage: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_branch_on_damage`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `branch_on_damage`
[INFO] [stdout]   --> src/engine/combat/moves/damage/variable_power.rs:88:5
[INFO] [stdout]    |
[INFO] [stdout] 88 |     branch_on_damage: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_branch_on_damage`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]     --> src/engine/combat/moves/damage/variable_power.rs:1548:46
[INFO] [stdout]      |
[INFO] [stdout] 1548 | pub fn is_immune_to_poison(target: &Pokemon, generation: &GenerationMechanics) -> bool {
[INFO] [stdout]      |                                              ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `move_data`
[INFO] [stdout]     --> src/engine/combat/moves/damage/variable_power.rs:1583:5
[INFO] [stdout]      |
[INFO] [stdout] 1583 |     move_data: &MoveData,
[INFO] [stdout]      |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_move_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `damage`
[INFO] [stdout]    --> src/engine/combat/moves/special/two_turn.rs:419:9
[INFO] [stdout]     |
[INFO] [stdout] 419 |     let damage = calculate_damage_with_positions(
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_damage`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]    --> src/engine/combat/moves/special/two_turn.rs:396:5
[INFO] [stdout]     |
[INFO] [stdout] 396 |     generation: &GenerationMechanics,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `branch_on_damage`
[INFO] [stdout]    --> src/engine/combat/moves/special/two_turn.rs:397:5
[INFO] [stdout]     |
[INFO] [stdout] 397 |     branch_on_damage: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_branch_on_damage`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_position`
[INFO] [stdout]   --> src/engine/combat/moves/special/utility.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 59 |     user_position: BattlePosition,
[INFO] [stdout]    |     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_position`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `normal_non_kill_rolls` is assigned to, but never used
[INFO] [stdout]    --> src/engine/combat/moves/mod.rs:382:13
[INFO] [stdout]     |
[INFO] [stdout] 382 |     let mut normal_non_kill_rolls = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_normal_non_kill_rolls` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `normal_kill_rolls` is assigned to, but never used
[INFO] [stdout]    --> src/engine/combat/moves/mod.rs:383:13
[INFO] [stdout]     |
[INFO] [stdout] 383 |     let mut normal_kill_rolls = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_normal_kill_rolls` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/engine/combat/moves/mod.rs:545:5
[INFO] [stdout]     |
[INFO] [stdout] 545 |     state: &BattleState,
[INFO] [stdout]     |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_position`
[INFO] [stdout]    --> src/engine/combat/moves/mod.rs:547:5
[INFO] [stdout]     |
[INFO] [stdout] 547 |     user_position: BattlePosition,
[INFO] [stdout]     |     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_position`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]    --> src/engine/combat/moves/mod.rs:637:5
[INFO] [stdout]     |
[INFO] [stdout] 637 |     generation: &GenerationMechanics,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/engine/combat/composers/damage_moves.rs:534:9
[INFO] [stdout]     |
[INFO] [stdout] 534 |     let mut instructions = Vec::new();
[INFO] [stdout]     |         ----^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/engine/combat/composers/damage_moves.rs:566:13
[INFO] [stdout]     |
[INFO] [stdout] 566 |         let mut context = DamageCalculationContext::new(
[INFO] [stdout]     |             ----^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `source`
[INFO] [stdout]   --> src/engine/combat/composers/status_moves.rs:81:5
[INFO] [stdout]    |
[INFO] [stdout] 81 |     source: Option<BattlePosition>,
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_source`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `source`
[INFO] [stdout]    --> src/engine/combat/composers/status_moves.rs:134:5
[INFO] [stdout]     |
[INFO] [stdout] 134 |     source: Option<BattlePosition>,
[INFO] [stdout]     |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_source`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `source`
[INFO] [stdout]    --> src/engine/combat/composers/status_moves.rs:153:5
[INFO] [stdout]     |
[INFO] [stdout] 153 |     source: Option<BattlePosition>,
[INFO] [stdout]     |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_source`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `source`
[INFO] [stdout]    --> src/engine/combat/composers/status_moves.rs:270:5
[INFO] [stdout]     |
[INFO] [stdout] 270 |     source: BattlePosition,
[INFO] [stdout]     |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_source`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `status`
[INFO] [stdout]    --> src/engine/combat/core/status_system.rs:283:5
[INFO] [stdout]     |
[INFO] [stdout] 283 |     status: &PokemonStatus,
[INFO] [stdout]     |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_status`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user`
[INFO] [stdout]   --> src/engine/combat/core/contact_effects.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 |     let user = state.get_pokemon_at_position(user_position);
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `target`
[INFO] [stdout]   --> src/engine/combat/core/contact_effects.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 |     let target = state.get_pokemon_at_position(target_position);
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/engine/combat/core/contact_effects.rs:318:5
[INFO] [stdout]     |
[INFO] [stdout] 318 |     state: &BattleState,
[INFO] [stdout]     |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/engine/combat/core/contact_effects.rs:341:5
[INFO] [stdout]     |
[INFO] [stdout] 341 |     state: &BattleState,
[INFO] [stdout]     |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]   --> src/engine/combat/core/field_system.rs:86:5
[INFO] [stdout]    |
[INFO] [stdout] 86 |     state: &BattleState,
[INFO] [stdout]    |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/engine/combat/core/field_system.rs:106:5
[INFO] [stdout]     |
[INFO] [stdout] 106 |     state: &BattleState,
[INFO] [stdout]     |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/engine/combat/core/substitute_protection.rs:72:46
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub fn get_effect_type_for_stats_instruction(instruction: &StatsInstruction) -> EffectType {
[INFO] [stdout]    |                                              ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]    --> src/engine/mechanics/abilities.rs:472:21
[INFO] [stdout]     |
[INFO] [stdout] 472 | fn apply_skill_link(context: AbilityContext) -> AbilityEffectResult {
[INFO] [stdout]     |                     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]    --> src/engine/mechanics/abilities.rs:651:20
[INFO] [stdout]     |
[INFO] [stdout] 651 | fn apply_normalize(context: AbilityContext) -> AbilityEffectResult {
[INFO] [stdout]     |                    ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `target_type`
[INFO] [stdout]    --> src/engine/mechanics/abilities.rs:657:47
[INFO] [stdout]     |
[INFO] [stdout] 657 | fn apply_type_change(context: AbilityContext, target_type: &str, power_multiplier: f32) -> AbilityEffectResult {
[INFO] [stdout]     |                                               ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `move_id`
[INFO] [stdout]   --> src/engine/mechanics/items/stat_boosting_items.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 |     move_id: &MoveId,
[INFO] [stdout]    |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_move_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]   --> src/engine/mechanics/items/stat_boosting_items.rs:95:5
[INFO] [stdout]    |
[INFO] [stdout] 95 |     generation: &dyn GenerationBattleMechanics,
[INFO] [stdout]    |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `move_category`
[INFO] [stdout]    --> src/engine/mechanics/items/stat_boosting_items.rs:210:24
[INFO] [stdout]     |
[INFO] [stdout] 210 | fn assault_vest_effect(move_category: MoveCategory) -> ItemModifier {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_move_category`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `move_id`
[INFO] [stdout]   --> src/engine/mechanics/items/berry_items.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     move_id: &MoveId,
[INFO] [stdout]    |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_move_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `move_category`
[INFO] [stdout]   --> src/engine/mechanics/items/berry_items.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     move_category: MoveCategory,
[INFO] [stdout]    |     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_move_category`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `attacker`
[INFO] [stdout]   --> src/engine/mechanics/items/utility_items.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     attacker: &Pokemon,
[INFO] [stdout]    |     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_attacker`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `move_type_id`
[INFO] [stdout]   --> src/engine/mechanics/items/utility_items.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     move_type_id: &TypeId,
[INFO] [stdout]    |     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_move_type_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `move_category`
[INFO] [stdout]   --> src/engine/mechanics/items/utility_items.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 |     move_category: MoveCategory,
[INFO] [stdout]    |     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_move_category`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]   --> src/engine/mechanics/items/species_items.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     context: &DamageContext,
[INFO] [stdout]    |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]    --> src/engine/mechanics/items/mod.rs:463:82
[INFO] [stdout]     |
[INFO] [stdout] 463 | pub fn apply_expert_belt_boost(context: &DamageContext, type_effectiveness: f32, generation: u8) -> f32 {
[INFO] [stdout]     |                                                                                  ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]    --> src/engine/mechanics/switch_effects.rs:359:5
[INFO] [stdout]     |
[INFO] [stdout] 359 |     generation: &GenerationMechanics,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]    --> src/engine/mechanics/switch_effects.rs:447:5
[INFO] [stdout]     |
[INFO] [stdout] 447 |     generation: &GenerationMechanics,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/engine/mechanics/switch_effects.rs:788:25
[INFO] [stdout]     |
[INFO] [stdout] 787 |                         crate::core::instructions::VolatileStatus::PartiallyTrapped |
[INFO] [stdout]     |                         ----------------------------------------------------------- matches all the relevant values
[INFO] [stdout] 788 |                         crate::core::instructions::VolatileStatus::PartiallyTrapped |
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/engine/mechanics/switch_effects.rs:789:25
[INFO] [stdout]     |
[INFO] [stdout] 787 |                         crate::core::instructions::VolatileStatus::PartiallyTrapped |
[INFO] [stdout]     |                         ----------------------------------------------------------- matches all the relevant values
[INFO] [stdout] 788 |                         crate::core::instructions::VolatileStatus::PartiallyTrapped |
[INFO] [stdout] 789 |                         crate::core::instructions::VolatileStatus::PartiallyTrapped |
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/engine/mechanics/switch_effects.rs:790:25
[INFO] [stdout]     |
[INFO] [stdout] 787 |                         crate::core::instructions::VolatileStatus::PartiallyTrapped |
[INFO] [stdout]     |                         ----------------------------------------------------------- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 790 |                         crate::core::instructions::VolatileStatus::PartiallyTrapped |
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/engine/mechanics/switch_effects.rs:791:25
[INFO] [stdout]     |
[INFO] [stdout] 787 |                         crate::core::instructions::VolatileStatus::PartiallyTrapped |
[INFO] [stdout]     |                         ----------------------------------------------------------- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 791 |                         crate::core::instructions::VolatileStatus::PartiallyTrapped |
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]    --> src/engine/mechanics/switch_effects.rs:717:5
[INFO] [stdout]     |
[INFO] [stdout] 717 |     generation: &GenerationMechanics,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]    --> src/engine/mechanics/switch_effects.rs:877:5
[INFO] [stdout]     |
[INFO] [stdout] 877 |     generation: &GenerationMechanics,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]     --> src/engine/mechanics/switch_effects.rs:1005:5
[INFO] [stdout]      |
[INFO] [stdout] 1005 |     state: &BattleState,
[INFO] [stdout]      |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]     --> src/engine/mechanics/switch_effects.rs:1064:47
[INFO] [stdout]      |
[INFO] [stdout] 1064 | fn is_immune_to_intimidate(pokemon: &Pokemon, generation: &GenerationMechanics) -> bool {
[INFO] [stdout]      |                                               ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]     --> src/engine/mechanics/switch_effects.rs:1074:40
[INFO] [stdout]      |
[INFO] [stdout] 1074 | fn is_ability_traceable(ability: &str, generation: &GenerationMechanics) -> bool {
[INFO] [stdout]      |                                        ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]     --> src/engine/turn.rs:1149:33
[INFO] [stdout]      |
[INFO] [stdout] 1149 | fn create_generation_repository(generation: &crate::generation::GenerationMechanics) -> crate::types::BattleResult<crate::data::GameDataR...
[INFO] [stdout]      |                                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `position`
[INFO] [stdout]    --> src/core/battle_state/pokemon.rs:261:9
[INFO] [stdout]     |
[INFO] [stdout] 261 |         position: BattlePosition,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `side_index`
[INFO] [stdout]     --> src/core/battle_state/mod.rs:1168:46
[INFO] [stdout]      |
[INFO] [stdout] 1168 |     fn format_side(&self, side: &BattleSide, side_index: usize) -> String {
[INFO] [stdout]      |                                              ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_side_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/config.rs:128:23
[INFO] [stdout]     |
[INFO] [stdout] 128 |             .map_err(|e| ConfigError::FileNotFound { path: path.to_path_buf() })?;
[INFO] [stdout]     |                       ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/config.rs:138:23
[INFO] [stdout]     |
[INFO] [stdout] 138 |             .map_err(|e| ConfigError::FileNotFound { path: path.as_ref().to_path_buf() })?;
[INFO] [stdout]     |                       ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/simulator.rs:391:31
[INFO] [stdout]     |
[INFO] [stdout] 391 |     fn choose_move(&mut self, state: &BattleState, valid_moves: &[usize]) -> usize {
[INFO] [stdout]     |                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/builders/battle.rs:229:13
[INFO] [stdout]     |
[INFO] [stdout] 229 |         let mut state = battle.state;
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/builders/team.rs:98:20
[INFO] [stdout]    |
[INFO] [stdout] 98 |     pub fn pokemon(mut self, species: impl Into<SpeciesId>) -> TeamPokemonContext<'a> {
[INFO] [stdout]    |                    ----^^^^
[INFO] [stdout]    |                    |
[INFO] [stdout]    |                    help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]    --> src/builders/team.rs:264:28
[INFO] [stdout]     |
[INFO] [stdout] 264 |     pub fn validate(&self, data: &GameDataRepository) -> Result<(), BuilderError> {
[INFO] [stdout]     |                            ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/builders/team.rs:370:13
[INFO] [stdout]     |
[INFO] [stdout] 370 |         let mut team_builder = self.finish();
[INFO] [stdout]     |             ----^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `convert_tera_type` is never used
[INFO] [stdout]     --> src/engine/combat/moves/damage/variable_power.rs:1447:4
[INFO] [stdout]      |
[INFO] [stdout] 1447 | fn convert_tera_type(tera: crate::core::move_choice::PokemonType) -> PokemonType {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_attack_instructions` is never used
[INFO] [stdout]    --> src/engine/turn.rs:233:4
[INFO] [stdout]     |
[INFO] [stdout] 233 | fn generate_attack_instructions(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_damage_instructions` is never used
[INFO] [stdout]    --> src/engine/turn.rs:320:4
[INFO] [stdout]     |
[INFO] [stdout] 320 | fn generate_damage_instructions(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `combine_move_instructions` is never used
[INFO] [stdout]    --> src/engine/turn.rs:505:4
[INFO] [stdout]     |
[INFO] [stdout] 505 | fn combine_move_instructions(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `determine_move_order` is never used
[INFO] [stdout]    --> src/engine/turn.rs:646:4
[INFO] [stdout]     |
[INFO] [stdout] 646 | fn determine_move_order<'a>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `attacker`
[INFO] [stdout]   --> src/engine/combat/damage/generations/gen2.rs:18:38
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn critical_hit_probability_gen2(attacker: &Pokemon, move_data: &MoveData) -> f32 {
[INFO] [stdout]    |                                      ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_attacker`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `attacker`
[INFO] [stdout]    --> src/engine/combat/damage/critical.rs:167:38
[INFO] [stdout]     |
[INFO] [stdout] 167 | pub fn critical_hit_probability_gen2(attacker: &Pokemon, move_data: &MoveData) -> f32 {
[INFO] [stdout]     |                                      ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_attacker`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]    --> src/engine/combat/damage/utils.rs:104:5
[INFO] [stdout]     |
[INFO] [stdout] 104 |     generation: crate::generation::Generation,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `move_data`
[INFO] [stdout]    --> src/engine/combat/moves/status/stat_modifying.rs:159:5
[INFO] [stdout]     |
[INFO] [stdout] 159 |     move_data: &MoveData,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_move_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]    --> src/engine/combat/moves/status/stat_modifying.rs:162:5
[INFO] [stdout]     |
[INFO] [stdout] 162 |     generation: &GenerationMechanics,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `duration`
[INFO] [stdout]   --> src/engine/combat/moves/field/advanced_hazards.rs:45:21
[INFO] [stdout]    |
[INFO] [stdout] 45 |         if let Some(duration) = user_side.side_conditions.get(&condition) {
[INFO] [stdout]    |                     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_duration`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_position`
[INFO] [stdout]   --> src/engine/combat/moves/field/hazard_removal.rs:57:5
[INFO] [stdout]    |
[INFO] [stdout] 57 |     user_position: BattlePosition,
[INFO] [stdout]    |     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_position`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `branch_on_damage`
[INFO] [stdout]   --> src/engine/combat/moves/damage/variable_power.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 38 |     branch_on_damage: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_branch_on_damage`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `branch_on_damage`
[INFO] [stdout]   --> src/engine/combat/moves/damage/variable_power.rs:88:5
[INFO] [stdout]    |
[INFO] [stdout] 88 |     branch_on_damage: bool,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_branch_on_damage`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]     --> src/engine/combat/moves/damage/variable_power.rs:1548:46
[INFO] [stdout]      |
[INFO] [stdout] 1548 | pub fn is_immune_to_poison(target: &Pokemon, generation: &GenerationMechanics) -> bool {
[INFO] [stdout]      |                                              ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `move_data`
[INFO] [stdout]     --> src/engine/combat/moves/damage/variable_power.rs:1583:5
[INFO] [stdout]      |
[INFO] [stdout] 1583 |     move_data: &MoveData,
[INFO] [stdout]      |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_move_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `damage`
[INFO] [stdout]    --> src/engine/combat/moves/special/two_turn.rs:419:9
[INFO] [stdout]     |
[INFO] [stdout] 419 |     let damage = calculate_damage_with_positions(
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_damage`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]    --> src/engine/combat/moves/special/two_turn.rs:396:5
[INFO] [stdout]     |
[INFO] [stdout] 396 |     generation: &GenerationMechanics,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `branch_on_damage`
[INFO] [stdout]    --> src/engine/combat/moves/special/two_turn.rs:397:5
[INFO] [stdout]     |
[INFO] [stdout] 397 |     branch_on_damage: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_branch_on_damage`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_position`
[INFO] [stdout]   --> src/engine/combat/moves/special/utility.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 59 |     user_position: BattlePosition,
[INFO] [stdout]    |     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_position`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `normal_non_kill_rolls` is assigned to, but never used
[INFO] [stdout]    --> src/engine/combat/moves/mod.rs:382:13
[INFO] [stdout]     |
[INFO] [stdout] 382 |     let mut normal_non_kill_rolls = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_normal_non_kill_rolls` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `normal_kill_rolls` is assigned to, but never used
[INFO] [stdout]    --> src/engine/combat/moves/mod.rs:383:13
[INFO] [stdout]     |
[INFO] [stdout] 383 |     let mut normal_kill_rolls = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_normal_kill_rolls` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/engine/combat/moves/mod.rs:545:5
[INFO] [stdout]     |
[INFO] [stdout] 545 |     state: &BattleState,
[INFO] [stdout]     |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user_position`
[INFO] [stdout]    --> src/engine/combat/moves/mod.rs:547:5
[INFO] [stdout]     |
[INFO] [stdout] 547 |     user_position: BattlePosition,
[INFO] [stdout]     |     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_user_position`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]    --> src/engine/combat/moves/mod.rs:637:5
[INFO] [stdout]     |
[INFO] [stdout] 637 |     generation: &GenerationMechanics,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/engine/combat/composers/damage_moves.rs:534:9
[INFO] [stdout]     |
[INFO] [stdout] 534 |     let mut instructions = Vec::new();
[INFO] [stdout]     |         ----^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/engine/combat/composers/damage_moves.rs:566:13
[INFO] [stdout]     |
[INFO] [stdout] 566 |         let mut context = DamageCalculationContext::new(
[INFO] [stdout]     |             ----^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `source`
[INFO] [stdout]   --> src/engine/combat/composers/status_moves.rs:81:5
[INFO] [stdout]    |
[INFO] [stdout] 81 |     source: Option<BattlePosition>,
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_source`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `source`
[INFO] [stdout]    --> src/engine/combat/composers/status_moves.rs:134:5
[INFO] [stdout]     |
[INFO] [stdout] 134 |     source: Option<BattlePosition>,
[INFO] [stdout]     |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_source`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `source`
[INFO] [stdout]    --> src/engine/combat/composers/status_moves.rs:153:5
[INFO] [stdout]     |
[INFO] [stdout] 153 |     source: Option<BattlePosition>,
[INFO] [stdout]     |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_source`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `source`
[INFO] [stdout]    --> src/engine/combat/composers/status_moves.rs:270:5
[INFO] [stdout]     |
[INFO] [stdout] 270 |     source: BattlePosition,
[INFO] [stdout]     |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_source`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `status`
[INFO] [stdout]    --> src/engine/combat/core/status_system.rs:283:5
[INFO] [stdout]     |
[INFO] [stdout] 283 |     status: &PokemonStatus,
[INFO] [stdout]     |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_status`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user`
[INFO] [stdout]   --> src/engine/combat/core/contact_effects.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 |     let user = state.get_pokemon_at_position(user_position);
[INFO] [stdout]    |         ^^^^ help: if this is intentional, prefix it with an underscore: `_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `target`
[INFO] [stdout]   --> src/engine/combat/core/contact_effects.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 |     let target = state.get_pokemon_at_position(target_position);
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/engine/combat/core/contact_effects.rs:318:5
[INFO] [stdout]     |
[INFO] [stdout] 318 |     state: &BattleState,
[INFO] [stdout]     |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/engine/combat/core/contact_effects.rs:341:5
[INFO] [stdout]     |
[INFO] [stdout] 341 |     state: &BattleState,
[INFO] [stdout]     |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]   --> src/engine/combat/core/field_system.rs:86:5
[INFO] [stdout]    |
[INFO] [stdout] 86 |     state: &BattleState,
[INFO] [stdout]    |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/engine/combat/core/field_system.rs:106:5
[INFO] [stdout]     |
[INFO] [stdout] 106 |     state: &BattleState,
[INFO] [stdout]     |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `instruction`
[INFO] [stdout]   --> src/engine/combat/core/substitute_protection.rs:72:46
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub fn get_effect_type_for_stats_instruction(instruction: &StatsInstruction) -> EffectType {
[INFO] [stdout]    |                                              ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_instruction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]    --> src/engine/mechanics/abilities.rs:472:21
[INFO] [stdout]     |
[INFO] [stdout] 472 | fn apply_skill_link(context: AbilityContext) -> AbilityEffectResult {
[INFO] [stdout]     |                     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]    --> src/engine/mechanics/abilities.rs:651:20
[INFO] [stdout]     |
[INFO] [stdout] 651 | fn apply_normalize(context: AbilityContext) -> AbilityEffectResult {
[INFO] [stdout]     |                    ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `target_type`
[INFO] [stdout]    --> src/engine/mechanics/abilities.rs:657:47
[INFO] [stdout]     |
[INFO] [stdout] 657 | fn apply_type_change(context: AbilityContext, target_type: &str, power_multiplier: f32) -> AbilityEffectResult {
[INFO] [stdout]     |                                               ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_target_type`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `move_id`
[INFO] [stdout]   --> src/engine/mechanics/items/stat_boosting_items.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 |     move_id: &MoveId,
[INFO] [stdout]    |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_move_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]   --> src/engine/mechanics/items/stat_boosting_items.rs:95:5
[INFO] [stdout]    |
[INFO] [stdout] 95 |     generation: &dyn GenerationBattleMechanics,
[INFO] [stdout]    |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `move_category`
[INFO] [stdout]    --> src/engine/mechanics/items/stat_boosting_items.rs:210:24
[INFO] [stdout]     |
[INFO] [stdout] 210 | fn assault_vest_effect(move_category: MoveCategory) -> ItemModifier {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_move_category`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `move_id`
[INFO] [stdout]   --> src/engine/mechanics/items/berry_items.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     move_id: &MoveId,
[INFO] [stdout]    |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_move_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `move_category`
[INFO] [stdout]   --> src/engine/mechanics/items/berry_items.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     move_category: MoveCategory,
[INFO] [stdout]    |     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_move_category`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `attacker`
[INFO] [stdout]   --> src/engine/mechanics/items/utility_items.rs:24:5
[INFO] [stdout]    |
[INFO] [stdout] 24 |     attacker: &Pokemon,
[INFO] [stdout]    |     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_attacker`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `move_type_id`
[INFO] [stdout]   --> src/engine/mechanics/items/utility_items.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 |     move_type_id: &TypeId,
[INFO] [stdout]    |     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_move_type_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `move_category`
[INFO] [stdout]   --> src/engine/mechanics/items/utility_items.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 |     move_category: MoveCategory,
[INFO] [stdout]    |     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_move_category`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `context`
[INFO] [stdout]   --> src/engine/mechanics/items/species_items.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     context: &DamageContext,
[INFO] [stdout]    |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_context`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]    --> src/engine/mechanics/items/mod.rs:463:82
[INFO] [stdout]     |
[INFO] [stdout] 463 | pub fn apply_expert_belt_boost(context: &DamageContext, type_effectiveness: f32, generation: u8) -> f32 {
[INFO] [stdout]     |                                                                                  ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]    --> src/engine/mechanics/switch_effects.rs:359:5
[INFO] [stdout]     |
[INFO] [stdout] 359 |     generation: &GenerationMechanics,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]    --> src/engine/mechanics/switch_effects.rs:447:5
[INFO] [stdout]     |
[INFO] [stdout] 447 |     generation: &GenerationMechanics,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/engine/mechanics/switch_effects.rs:788:25
[INFO] [stdout]     |
[INFO] [stdout] 787 |                         crate::core::instructions::VolatileStatus::PartiallyTrapped |
[INFO] [stdout]     |                         ----------------------------------------------------------- matches all the relevant values
[INFO] [stdout] 788 |                         crate::core::instructions::VolatileStatus::PartiallyTrapped |
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/engine/mechanics/switch_effects.rs:789:25
[INFO] [stdout]     |
[INFO] [stdout] 787 |                         crate::core::instructions::VolatileStatus::PartiallyTrapped |
[INFO] [stdout]     |                         ----------------------------------------------------------- matches all the relevant values
[INFO] [stdout] 788 |                         crate::core::instructions::VolatileStatus::PartiallyTrapped |
[INFO] [stdout] 789 |                         crate::core::instructions::VolatileStatus::PartiallyTrapped |
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/engine/mechanics/switch_effects.rs:790:25
[INFO] [stdout]     |
[INFO] [stdout] 787 |                         crate::core::instructions::VolatileStatus::PartiallyTrapped |
[INFO] [stdout]     |                         ----------------------------------------------------------- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 790 |                         crate::core::instructions::VolatileStatus::PartiallyTrapped |
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/engine/mechanics/switch_effects.rs:791:25
[INFO] [stdout]     |
[INFO] [stdout] 787 |                         crate::core::instructions::VolatileStatus::PartiallyTrapped |
[INFO] [stdout]     |                         ----------------------------------------------------------- matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 791 |                         crate::core::instructions::VolatileStatus::PartiallyTrapped |
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ no value can reach this
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]    --> src/engine/mechanics/switch_effects.rs:717:5
[INFO] [stdout]     |
[INFO] [stdout] 717 |     generation: &GenerationMechanics,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]    --> src/engine/mechanics/switch_effects.rs:877:5
[INFO] [stdout]     |
[INFO] [stdout] 877 |     generation: &GenerationMechanics,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]     --> src/engine/mechanics/switch_effects.rs:1005:5
[INFO] [stdout]      |
[INFO] [stdout] 1005 |     state: &BattleState,
[INFO] [stdout]      |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]     --> src/engine/mechanics/switch_effects.rs:1064:47
[INFO] [stdout]      |
[INFO] [stdout] 1064 | fn is_immune_to_intimidate(pokemon: &Pokemon, generation: &GenerationMechanics) -> bool {
[INFO] [stdout]      |                                               ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]     --> src/engine/mechanics/switch_effects.rs:1074:40
[INFO] [stdout]      |
[INFO] [stdout] 1074 | fn is_ability_traceable(ability: &str, generation: &GenerationMechanics) -> bool {
[INFO] [stdout]      |                                        ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `generation`
[INFO] [stdout]     --> src/engine/turn.rs:1149:33
[INFO] [stdout]      |
[INFO] [stdout] 1149 | fn create_generation_repository(generation: &crate::generation::GenerationMechanics) -> crate::types::BattleResult<crate::data::GameDataR...
[INFO] [stdout]      |                                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_generation`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MoveId` and `SpeciesId`
[INFO] [stdout]    --> tests/utils/framework.rs:249:32
[INFO] [stdout]     |
[INFO] [stdout] 249 |         use tapu_simu::types::{MoveId, SpeciesId};
[INFO] [stdout]     |                                ^^^^^^  ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BattleTest`, `ExpectedOutcome`, `SetupAction`, `TapuTestFramework`, `TeamSpec`, and `TestResult`
[INFO] [stdout]   --> tests/utils/mod.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     TapuTestFramework, BattleTest, TeamSpec, PokemonSpec, 
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 13 |     SetupAction, ExpectedOutcome, TestResult
[INFO] [stdout]    |     ^^^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TestScenarios`
[INFO] [stdout]   --> tests/utils/mod.rs:17:18
[INFO] [stdout]    |
[INFO] [stdout] 17 |     TestBuilder, TestScenarios, Positions, StatChanges
[INFO] [stdout]    |                  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BattleAssertions` and `convenience`
[INFO] [stdout]   --> tests/utils/mod.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     BattleAssertions, convenience
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ability_test`, `assert_battle_state`, `assert_damage_range`, `assert_stat_changes`, `damage_test`, and `status_test`
[INFO] [stdout]   --> tests/utils/mod.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     damage_test, status_test, ability_test,
[INFO] [stdout]    |     ^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 27 |     assert_battle_state, assert_damage_range, assert_stat_changes
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]   --> tests/secondary_effects.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::collections::HashMap;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BattlePosition` and `SideReference`
[INFO] [stdout]   --> tests/secondary_effects.rs:14:38
[INFO] [stdout]    |
[INFO] [stdout] 14 | use tapu_simu::core::battle_format::{BattlePosition, SideReference};
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BattleInstruction`, `BattleInstructions`, `PokemonInstruction`, `SideCondition`, `StatusInstruction`, and `Weather`
[INFO] [stdout]   --> tests/secondary_effects.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 16 |     BattleInstruction, BattleInstructions, PokemonInstruction, PokemonStatus, SideCondition, Stat,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^                 ^^^^^^^^^^^^^
[INFO] [stdout] 17 |     StatusInstruction, Terrain, VolatileStatus, Weather,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tapu_simu::core::move_choice::MoveChoice`
[INFO] [stdout]   --> tests/secondary_effects.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use tapu_simu::core::move_choice::MoveChoice;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MoveId` and `SpeciesId`
[INFO] [stdout]    --> tests/utils/framework.rs:249:32
[INFO] [stdout]     |
[INFO] [stdout] 249 |         use tapu_simu::types::{MoveId, SpeciesId};
[INFO] [stdout]     |                                ^^^^^^  ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BattleTest`, `ExpectedOutcome`, `SetupAction`, `TapuTestFramework`, `TeamSpec`, and `TestResult`
[INFO] [stdout]   --> tests/utils/mod.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     TapuTestFramework, BattleTest, TeamSpec, PokemonSpec, 
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 13 |     SetupAction, ExpectedOutcome, TestResult
[INFO] [stdout]    |     ^^^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `StatChanges` and `TestScenarios`
[INFO] [stdout]   --> tests/utils/mod.rs:17:18
[INFO] [stdout]    |
[INFO] [stdout] 17 |     TestBuilder, TestScenarios, Positions, StatChanges
[INFO] [stdout]    |                  ^^^^^^^^^^^^^             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BattleAssertions` and `convenience`
[INFO] [stdout]   --> tests/utils/mod.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     BattleAssertions, convenience
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ability_test`, `assert_battle_state`, `assert_damage_range`, `assert_stat_changes`, `damage_test`, and `status_test`
[INFO] [stdout]   --> tests/utils/mod.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     damage_test, status_test, ability_test,
[INFO] [stdout]    |     ^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 27 |     assert_battle_state, assert_damage_range, assert_stat_changes
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MoveId` and `SpeciesId`
[INFO] [stdout]    --> tests/utils/framework.rs:249:32
[INFO] [stdout]     |
[INFO] [stdout] 249 |         use tapu_simu::types::{MoveId, SpeciesId};
[INFO] [stdout]     |                                ^^^^^^  ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BattleTest`, `ExpectedOutcome`, `SetupAction`, `TapuTestFramework`, `TeamSpec`, and `TestResult`
[INFO] [stdout]   --> tests/utils/mod.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     TapuTestFramework, BattleTest, TeamSpec, PokemonSpec, 
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 13 |     SetupAction, ExpectedOutcome, TestResult
[INFO] [stdout]    |     ^^^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `StatChanges` and `TestScenarios`
[INFO] [stdout]   --> tests/utils/mod.rs:17:18
[INFO] [stdout]    |
[INFO] [stdout] 17 |     TestBuilder, TestScenarios, Positions, StatChanges
[INFO] [stdout]    |                  ^^^^^^^^^^^^^             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BattleAssertions` and `convenience`
[INFO] [stdout]   --> tests/utils/mod.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     BattleAssertions, convenience
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ability_test`, `assert_battle_state`, `assert_damage_range`, `assert_stat_changes`, `damage_test`, and `status_test`
[INFO] [stdout]   --> tests/utils/mod.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     damage_test, status_test, ability_test,
[INFO] [stdout]    |     ^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 27 |     assert_battle_state, assert_damage_range, assert_stat_changes
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BattlePosition` and `SideReference`
[INFO] [stdout]   --> tests/accuracy_miss.rs:19:38
[INFO] [stdout]    |
[INFO] [stdout] 19 | use tapu_simu::core::battle_format::{BattlePosition, SideReference};
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MoveId` and `SpeciesId`
[INFO] [stdout]    --> tests/utils/framework.rs:249:32
[INFO] [stdout]     |
[INFO] [stdout] 249 |         use tapu_simu::types::{MoveId, SpeciesId};
[INFO] [stdout]     |                                ^^^^^^  ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BattleTest`, `ExpectedOutcome`, `SetupAction`, `TapuTestFramework`, `TeamSpec`, and `TestResult`
[INFO] [stdout]   --> tests/utils/mod.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 |     TapuTestFramework, BattleTest, TeamSpec, PokemonSpec, 
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^  ^^^^^^^^^^  ^^^^^^^^
[INFO] [stdout] 13 |     SetupAction, ExpectedOutcome, TestResult
[INFO] [stdout]    |     ^^^^^^^^^^^  ^^^^^^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `StatChanges` and `TestScenarios`
[INFO] [stdout]   --> tests/utils/mod.rs:17:18
[INFO] [stdout]    |
[INFO] [stdout] 17 |     TestBuilder, TestScenarios, Positions, StatChanges
[INFO] [stdout]    |                  ^^^^^^^^^^^^^             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BattleAssertions` and `convenience`
[INFO] [stdout]   --> tests/utils/mod.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     BattleAssertions, convenience
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ability_test`, `assert_battle_state`, `assert_damage_range`, `assert_stat_changes`, `damage_test`, and `status_test`
[INFO] [stdout]   --> tests/utils/mod.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     damage_test, status_test, ability_test,
[INFO] [stdout]    |     ^^^^^^^^^^^  ^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 27 |     assert_battle_state, assert_damage_range, assert_stat_changes
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Positions`
[INFO] [stdout]   --> tests/basic_damage.rs:28:26
[INFO] [stdout]    |
[INFO] [stdout] 28 | use utils::{PokemonSpec, Positions, TestBuilder};
[INFO] [stdout]    |                          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:231:13
[INFO] [stdout]     |
[INFO] [stdout] 231 |         let mut state = BattleState::new_with_teams(format.clone(), team_one, team_two);
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `debug_stats` is never used
[INFO] [stdout]    --> src/main.rs:346:4
[INFO] [stdout]     |
[INFO] [stdout] 346 | fn debug_stats() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:231:13
[INFO] [stdout]     |
[INFO] [stdout] 231 |         let mut state = BattleState::new_with_teams(format.clone(), team_one, team_two);
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `debug_stats` is never used
[INFO] [stdout]    --> src/main.rs:346:4
[INFO] [stdout]     |
[INFO] [stdout] 346 | fn debug_stats() -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> tests/utils/framework.rs:36:85
[INFO] [stdout]    |
[INFO] [stdout] 36 |             GenerationRepository::load_from_directory("data/ps-extracted").map_err(|e| {
[INFO] [stdout]    |                                                                                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> tests/utils/framework.rs:54:85
[INFO] [stdout]    |
[INFO] [stdout] 54 |             GenerationRepository::load_from_directory("data/ps-extracted").map_err(|e| {
[INFO] [stdout]    |                                                                                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> tests/utils/framework.rs:84:85
[INFO] [stdout]    |
[INFO] [stdout] 84 |             GenerationRepository::load_from_directory("data/ps-extracted").map_err(|e| {
[INFO] [stdout]    |                                                                                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> tests/utils/framework.rs:36:85
[INFO] [stdout]    |
[INFO] [stdout] 36 |             GenerationRepository::load_from_directory("data/ps-extracted").map_err(|e| {
[INFO] [stdout]    |                                                                                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> tests/utils/framework.rs:54:85
[INFO] [stdout]    |
[INFO] [stdout] 54 |             GenerationRepository::load_from_directory("data/ps-extracted").map_err(|e| {
[INFO] [stdout]    |                                                                                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> tests/utils/framework.rs:84:85
[INFO] [stdout]    |
[INFO] [stdout] 84 |             GenerationRepository::load_from_directory("data/ps-extracted").map_err(|e| {
[INFO] [stdout]    |                                                                                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> tests/utils/framework.rs:36:85
[INFO] [stdout]    |
[INFO] [stdout] 36 |             GenerationRepository::load_from_directory("data/ps-extracted").map_err(|e| {
[INFO] [stdout]    |                                                                                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> tests/utils/framework.rs:54:85
[INFO] [stdout]    |
[INFO] [stdout] 54 |             GenerationRepository::load_from_directory("data/ps-extracted").map_err(|e| {
[INFO] [stdout]    |                                                                                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> tests/utils/framework.rs:84:85
[INFO] [stdout]    |
[INFO] [stdout] 84 |             GenerationRepository::load_from_directory("data/ps-extracted").map_err(|e| {
[INFO] [stdout]    |                                                                                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> tests/utils/framework.rs:36:85
[INFO] [stdout]    |
[INFO] [stdout] 36 |             GenerationRepository::load_from_directory("data/ps-extracted").map_err(|e| {
[INFO] [stdout]    |                                                                                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> tests/utils/framework.rs:54:85
[INFO] [stdout]    |
[INFO] [stdout] 54 |             GenerationRepository::load_from_directory("data/ps-extracted").map_err(|e| {
[INFO] [stdout]    |                                                                                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]   --> tests/utils/framework.rs:84:85
[INFO] [stdout]    |
[INFO] [stdout] 84 |             GenerationRepository::load_from_directory("data/ps-extracted").map_err(|e| {
[INFO] [stdout]    |                                                                                     ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `repository` is never read
[INFO] [stdout]   --> tests/utils/framework.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct TapuTestFramework {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] 26 |     repository: Arc<GameDataRepository>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `with_format`, `repository`, and `format` are never used
[INFO] [stdout]    --> tests/utils/framework.rs:81:12
[INFO] [stdout]     |
[INFO] [stdout] 31  | impl TapuTestFramework {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 81  |     pub fn with_format(format: BattleFormat) -> DataResult<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99  |     pub fn repository(&self) -> &GameDataRepository {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn format(&self) -> &BattleFormat {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `MultiPokemon` is never constructed
[INFO] [stdout]    --> tests/utils/framework.rs:773:5
[INFO] [stdout]     |
[INFO] [stdout] 771 | pub enum TeamSpec {
[INFO] [stdout]     |          -------- variant in this enum
[INFO] [stdout] 772 |     Pokemon(PokemonSpec),
[INFO] [stdout] 773 |     MultiPokemon(Vec<PokemonSpec>),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TeamSpec` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `nature` is never read
[INFO] [stdout]    --> tests/utils/framework.rs:784:9
[INFO] [stdout]     |
[INFO] [stdout] 778 | pub struct PokemonSpec {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 784 |     pub nature: Option<&'static str>,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PokemonSpec` 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: variants `SetWeather`, `ApplyStatus`, `SetHP`, and `AddSideCondition` are never constructed
[INFO] [stdout]    --> tests/utils/framework.rs:811:5
[INFO] [stdout]     |
[INFO] [stdout] 810 | pub enum SetupAction {
[INFO] [stdout]     |          ----------- variants in this enum
[INFO] [stdout] 811 |     SetWeather(Weather),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 812 |     SetTerrain(Terrain),
[INFO] [stdout] 813 |     ApplyStatus(BattlePosition, PokemonStatus),
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 814 |     ModifyStats(BattlePosition, HashMap<Stat, i8>),
[INFO] [stdout] 815 |     SetHP(BattlePosition, u16),
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 816 |     AddSideCondition(SideReference, SideCondition),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SetupAction` 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: multiple variants are never constructed
[INFO] [stdout]    --> tests/utils/framework.rs:823:5
[INFO] [stdout]     |
[INFO] [stdout] 822 | pub enum ExpectedOutcome {
[INFO] [stdout]     |          --------------- variants in this enum
[INFO] [stdout] 823 |     Damage(BattlePosition, u16),
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 826 |     WeatherSet(Weather),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 827 |     TerrainSet(Terrain),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 828 |     SideCondition(SideReference, SideCondition),
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 829 |     Faint(BattlePosition),
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 830 |     Switch(BattlePosition, usize),
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 831 |     NoEffect(BattlePosition),
[INFO] [stdout] 832 |     Instructions(Vec<BattleInstructions>),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ExpectedOutcome` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]    --> tests/utils/framework.rs:840:9
[INFO] [stdout]     |
[INFO] [stdout] 839 | pub struct BattleTest {
[INFO] [stdout]     |            ---------- field in this struct
[INFO] [stdout] 840 |     pub name: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `BattleTest` 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_success` and `failure_message` are never used
[INFO] [stdout]    --> tests/utils/framework.rs:875:12
[INFO] [stdout]     |
[INFO] [stdout] 873 | impl TestResult {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 874 |     /// Check if the test was successful
[INFO] [stdout] 875 |     pub fn is_success(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 880 |     pub fn failure_message(&self) -> Option<&str> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/utils/builders.rs:43:12
[INFO] [stdout]     |
[INFO] [stdout] 25  | impl TestBuilder {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 43  |     pub fn new_with_format(name: &str, format: BattleFormat) -> DataResult<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57  |     pub fn team_one_multi(mut self, specs: Vec<PokemonSpec>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69  |     pub fn team_two_multi(mut self, specs: Vec<PokemonSpec>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81  |     pub fn with_weather(self, weather: Weather) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91  |     pub fn with_status(self, position: BattlePosition, status: PokemonStatus) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn with_hp(self, position: BattlePosition, hp: u16) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn with_side_condition(self, side: SideReference, condition: SideCondition) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn turn_one_move(self, move_one: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn turn_two_move(self, move_two: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn turn_moves(self, move_one: &str, move_two: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn expect_damage(self, position: BattlePosition, damage: u16) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn expect_weather(self, weather: Weather) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     pub fn expect_terrain(self, terrain: Terrain) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn expect_side_condition(self, side: SideReference, condition: SideCondition) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn expect_faint(self, position: BattlePosition) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 204 |     pub fn expect_instructions(mut self, instructions: Vec<BattleInstructions>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> tests/utils/builders.rs:291:12
[INFO] [stdout]     |
[INFO] [stdout] 273 | impl PokemonSpec {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub fn level(mut self, level: u8) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub fn move_slot(mut self, move_name: &'static str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 323 |     pub fn nature(mut self, nature: &'static str) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 329 |     pub fn evs(mut self, evs: Stats) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 335 |     pub fn ev_spread(mut self, hp: u8, atk: u8, def: u8, spa: u8, spd: u8, spe: u8) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn ivs(mut self, ivs: Stats) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 354 |     pub fn perfect_ivs(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     pub fn hp(mut self, hp: u16) -> Self {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 379 |     pub fn base_stats_all(mut self, stat_value: u8) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 392 |     pub fn types(mut self, type1: &'static str, type2: Option<&'static str>) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 404 |     pub fn weight(mut self, _weight_kg: f32) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 413 |     pub fn max_hp(mut self, max_hp: i16) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TestScenarios` is never constructed
[INFO] [stdout]    --> tests/utils/builders.rs:430:12
[INFO] [stdout]     |
[INFO] [stdout] 430 | pub struct TestScenarios;
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `damage_test`, `status_test`, `ability_test`, and `item_test` are never used
[INFO] [stdout]    --> tests/utils/builders.rs:434:12
[INFO] [stdout]     |
[INFO] [stdout] 432 | impl TestScenarios {
[INFO] [stdout]     | ------------------ associated functions in this implementation
[INFO] [stdout] 433 |     /// Create a basic damage test scenario
[INFO] [stdout] 434 |     pub fn damage_test(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 451 |     pub fn status_test(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 468 |     pub fn ability_test(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 481 |     pub fn item_test(
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constants `SIDE_ONE_0`, `SIDE_ONE_1`, and `SIDE_TWO_1` are never used
[INFO] [stdout]    --> tests/utils/builders.rs:532:15
[INFO] [stdout]     |
[INFO] [stdout] 530 | impl Positions {
[INFO] [stdout]     | -------------- associated constants in this implementation
[INFO] [stdout] 531 |     /// Side one, slot 0 (first Pokemon on side one)
[INFO] [stdout] 532 |     pub const SIDE_ONE_0: BattlePosition = BattlePosition {
[INFO] [stdout]     |               ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 538 |     pub const SIDE_ONE_1: BattlePosition = BattlePosition {
[INFO] [stdout]     |               ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 550 |     pub const SIDE_TWO_1: BattlePosition = BattlePosition {
[INFO] [stdout]     |               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `multiple`, `defense_boost`, and `speed_boost` are never used
[INFO] [stdout]    --> tests/utils/builders.rs:568:12
[INFO] [stdout]     |
[INFO] [stdout] 559 | impl StatChanges {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 568 |     pub fn multiple(changes: &[(Stat, i8)]) -> HashMap<Stat, i8> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 578 |     pub fn defense_boost(change: i8) -> HashMap<Stat, i8> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 583 |     pub fn speed_boost(change: i8) -> HashMap<Stat, i8> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BattleAssertions` is never constructed
[INFO] [stdout]   --> tests/utils/assertions.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct BattleAssertions;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> tests/utils/assertions.rs:16:12
[INFO] [stdout]     |
[INFO] [stdout] 14  | impl BattleAssertions {
[INFO] [stdout]     | --------------------- associated functions in this implementation
[INFO] [stdout] 15  |     /// Assert that a Pokemon took the expected amount of damage
[INFO] [stdout] 16  |     pub fn assert_damage(
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37  |     pub fn assert_status(
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56  |     pub fn assert_no_status(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64  |     pub fn assert_stat_changes(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86  |     pub fn assert_stat_change(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98  |     pub fn assert_no_stat_changes(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn assert_fainted(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn assert_not_fainted(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn assert_hp(
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn assert_weather(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn assert_terrain(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub fn assert_side_condition(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn assert_side_condition_value(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     pub fn assert_instructions_exact(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     pub fn assert_contains_instruction(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn assert_not_contains_instruction(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 314 |     pub fn assert_total_probability(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_attack_damage` is never used
[INFO] [stdout]    --> tests/utils/assertions.rs:335:12
[INFO] [stdout]     |
[INFO] [stdout] 335 |     pub fn assert_attack_damage(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_attack_status` is never used
[INFO] [stdout]    --> tests/utils/assertions.rs:344:12
[INFO] [stdout]     |
[INFO] [stdout] 344 |     pub fn assert_attack_status(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_stat_boost` is never used
[INFO] [stdout]    --> tests/utils/assertions.rs:353:12
[INFO] [stdout]     |
[INFO] [stdout] 353 |     pub fn assert_stat_boost(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_no_effect` is never used
[INFO] [stdout]    --> tests/utils/assertions.rs:363:12
[INFO] [stdout]     |
[INFO] [stdout] 363 |     pub fn assert_no_effect(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_immunity` is never used
[INFO] [stdout]    --> tests/utils/assertions.rs:389:12
[INFO] [stdout]     |
[INFO] [stdout] 389 |     pub fn assert_immunity(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_critical_hit` is never used
[INFO] [stdout]    --> tests/utils/assertions.rs:398:12
[INFO] [stdout]     |
[INFO] [stdout] 398 |     pub fn assert_critical_hit(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `repository` is never read
[INFO] [stdout]   --> tests/utils/framework.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct TapuTestFramework {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] 26 |     repository: Arc<GameDataRepository>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `with_generation`, `with_format`, `repository`, and `format` are never used
[INFO] [stdout]    --> tests/utils/framework.rs:51:12
[INFO] [stdout]     |
[INFO] [stdout] 31  | impl TapuTestFramework {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 51  |     pub fn with_generation(gen: Generation) -> DataResult<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81  |     pub fn with_format(format: BattleFormat) -> DataResult<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99  |     pub fn repository(&self) -> &GameDataRepository {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn format(&self) -> &BattleFormat {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `MultiPokemon` is never constructed
[INFO] [stdout]    --> tests/utils/framework.rs:773:5
[INFO] [stdout]     |
[INFO] [stdout] 771 | pub enum TeamSpec {
[INFO] [stdout]     |          -------- variant in this enum
[INFO] [stdout] 772 |     Pokemon(PokemonSpec),
[INFO] [stdout] 773 |     MultiPokemon(Vec<PokemonSpec>),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TeamSpec` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `nature` is never read
[INFO] [stdout]    --> tests/utils/framework.rs:784:9
[INFO] [stdout]     |
[INFO] [stdout] 778 | pub struct PokemonSpec {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 784 |     pub nature: Option<&'static str>,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PokemonSpec` 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: variants `ApplyStatus`, `SetHP`, and `AddSideCondition` are never constructed
[INFO] [stdout]    --> tests/utils/framework.rs:813:5
[INFO] [stdout]     |
[INFO] [stdout] 810 | pub enum SetupAction {
[INFO] [stdout]     |          ----------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 813 |     ApplyStatus(BattlePosition, PokemonStatus),
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 814 |     ModifyStats(BattlePosition, HashMap<Stat, i8>),
[INFO] [stdout] 815 |     SetHP(BattlePosition, u16),
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 816 |     AddSideCondition(SideReference, SideCondition),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SetupAction` 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: multiple variants are never constructed
[INFO] [stdout]    --> tests/utils/framework.rs:823:5
[INFO] [stdout]     |
[INFO] [stdout] 822 | pub enum ExpectedOutcome {
[INFO] [stdout]     |          --------------- variants in this enum
[INFO] [stdout] 823 |     Damage(BattlePosition, u16),
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 824 |     Status(BattlePosition, PokemonStatus),
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 825 |     StatChange(BattlePosition, Stat, i8),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 826 |     WeatherSet(Weather),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 827 |     TerrainSet(Terrain),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 828 |     SideCondition(SideReference, SideCondition),
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 829 |     Faint(BattlePosition),
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 830 |     Switch(BattlePosition, usize),
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 831 |     NoEffect(BattlePosition),
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 832 |     Instructions(Vec<BattleInstructions>),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 833 |     SubstituteHealth(BattlePosition, i16),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 834 |     VolatileStatus(BattlePosition, VolatileStatus),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ExpectedOutcome` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]    --> tests/utils/framework.rs:840:9
[INFO] [stdout]     |
[INFO] [stdout] 839 | pub struct BattleTest {
[INFO] [stdout]     |            ---------- field in this struct
[INFO] [stdout] 840 |     pub name: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `BattleTest` 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_success` and `failure_message` are never used
[INFO] [stdout]    --> tests/utils/framework.rs:875:12
[INFO] [stdout]     |
[INFO] [stdout] 873 | impl TestResult {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 874 |     /// Check if the test was successful
[INFO] [stdout] 875 |     pub fn is_success(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 880 |     pub fn failure_message(&self) -> Option<&str> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/utils/builders.rs:35:12
[INFO] [stdout]     |
[INFO] [stdout] 25  | impl TestBuilder {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 35  |     pub fn new_with_generation(name: &str, gen: Generation) -> DataResult<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43  |     pub fn new_with_format(name: &str, format: BattleFormat) -> DataResult<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57  |     pub fn team_one_multi(mut self, specs: Vec<PokemonSpec>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69  |     pub fn team_two_multi(mut self, specs: Vec<PokemonSpec>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91  |     pub fn with_status(self, position: BattlePosition, status: PokemonStatus) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn with_hp(self, position: BattlePosition, hp: u16) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn with_side_condition(self, side: SideReference, condition: SideCondition) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn turn_two_move(self, move_two: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn turn_moves(self, move_one: &str, move_two: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn expect(mut self, outcome: ExpectedOutcome) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn expect_damage(self, position: BattlePosition, damage: u16) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn expect_status(self, position: BattlePosition, status: PokemonStatus) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn expect_stat_change(self, position: BattlePosition, stat: Stat, change: i8) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn expect_weather(self, weather: Weather) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     pub fn expect_terrain(self, terrain: Terrain) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn expect_side_condition(self, side: SideReference, condition: SideCondition) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn expect_faint(self, position: BattlePosition) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn expect_no_effect(self, position: BattlePosition) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn expect_substitute_health(self, position: BattlePosition, health: i16) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn expect_volatile_status(self, position: BattlePosition, status: VolatileStatus) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |     pub fn branch_on_damage(mut self, branch: bool) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> tests/utils/builders.rs:315:12
[INFO] [stdout]     |
[INFO] [stdout] 273 | impl PokemonSpec {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub fn move_slot(mut self, move_name: &'static str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 323 |     pub fn nature(mut self, nature: &'static str) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 329 |     pub fn evs(mut self, evs: Stats) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 335 |     pub fn ev_spread(mut self, hp: u8, atk: u8, def: u8, spa: u8, spd: u8, spe: u8) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn ivs(mut self, ivs: Stats) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 354 |     pub fn perfect_ivs(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 379 |     pub fn base_stats_all(mut self, stat_value: u8) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 392 |     pub fn types(mut self, type1: &'static str, type2: Option<&'static str>) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 404 |     pub fn weight(mut self, _weight_kg: f32) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 413 |     pub fn max_hp(mut self, max_hp: i16) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TestScenarios` is never constructed
[INFO] [stdout]    --> tests/utils/builders.rs:430:12
[INFO] [stdout]     |
[INFO] [stdout] 430 | pub struct TestScenarios;
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `damage_test`, `status_test`, `ability_test`, and `item_test` are never used
[INFO] [stdout]    --> tests/utils/builders.rs:434:12
[INFO] [stdout]     |
[INFO] [stdout] 432 | impl TestScenarios {
[INFO] [stdout]     | ------------------ associated functions in this implementation
[INFO] [stdout] 433 |     /// Create a basic damage test scenario
[INFO] [stdout] 434 |     pub fn damage_test(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 451 |     pub fn status_test(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 468 |     pub fn ability_test(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 481 |     pub fn item_test(
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constants `SIDE_ONE_1` and `SIDE_TWO_1` are never used
[INFO] [stdout]    --> tests/utils/builders.rs:538:15
[INFO] [stdout]     |
[INFO] [stdout] 530 | impl Positions {
[INFO] [stdout]     | -------------- associated constants in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 538 |     pub const SIDE_ONE_1: BattlePosition = BattlePosition {
[INFO] [stdout]     |               ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 550 |     pub const SIDE_TWO_1: BattlePosition = BattlePosition {
[INFO] [stdout]     |               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StatChanges` is never constructed
[INFO] [stdout]    --> tests/utils/builders.rs:557:12
[INFO] [stdout]     |
[INFO] [stdout] 557 | pub struct StatChanges;
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `single`, `multiple`, `attack_boost`, `defense_boost`, and `speed_boost` are never used
[INFO] [stdout]    --> tests/utils/builders.rs:561:12
[INFO] [stdout]     |
[INFO] [stdout] 559 | impl StatChanges {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout] 560 |     /// Create a single stat change
[INFO] [stdout] 561 |     pub fn single(stat: Stat, change: i8) -> HashMap<Stat, i8> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 568 |     pub fn multiple(changes: &[(Stat, i8)]) -> HashMap<Stat, i8> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 573 |     pub fn attack_boost(change: i8) -> HashMap<Stat, i8> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 578 |     pub fn defense_boost(change: i8) -> HashMap<Stat, i8> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 583 |     pub fn speed_boost(change: i8) -> HashMap<Stat, i8> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BattleAssertions` is never constructed
[INFO] [stdout]   --> tests/utils/assertions.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct BattleAssertions;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> tests/utils/assertions.rs:16:12
[INFO] [stdout]     |
[INFO] [stdout] 14  | impl BattleAssertions {
[INFO] [stdout]     | --------------------- associated functions in this implementation
[INFO] [stdout] 15  |     /// Assert that a Pokemon took the expected amount of damage
[INFO] [stdout] 16  |     pub fn assert_damage(
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37  |     pub fn assert_status(
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56  |     pub fn assert_no_status(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64  |     pub fn assert_stat_changes(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86  |     pub fn assert_stat_change(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98  |     pub fn assert_no_stat_changes(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn assert_fainted(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn assert_not_fainted(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn assert_hp(
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn assert_weather(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn assert_terrain(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub fn assert_side_condition(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn assert_side_condition_value(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     pub fn assert_instructions_exact(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     pub fn assert_contains_instruction(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn assert_not_contains_instruction(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 314 |     pub fn assert_total_probability(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_attack_damage` is never used
[INFO] [stdout]    --> tests/utils/assertions.rs:335:12
[INFO] [stdout]     |
[INFO] [stdout] 335 |     pub fn assert_attack_damage(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_attack_status` is never used
[INFO] [stdout]    --> tests/utils/assertions.rs:344:12
[INFO] [stdout]     |
[INFO] [stdout] 344 |     pub fn assert_attack_status(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_stat_boost` is never used
[INFO] [stdout]    --> tests/utils/assertions.rs:353:12
[INFO] [stdout]     |
[INFO] [stdout] 353 |     pub fn assert_stat_boost(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_no_effect` is never used
[INFO] [stdout]    --> tests/utils/assertions.rs:363:12
[INFO] [stdout]     |
[INFO] [stdout] 363 |     pub fn assert_no_effect(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_immunity` is never used
[INFO] [stdout]    --> tests/utils/assertions.rs:389:12
[INFO] [stdout]     |
[INFO] [stdout] 389 |     pub fn assert_immunity(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_critical_hit` is never used
[INFO] [stdout]    --> tests/utils/assertions.rs:398:12
[INFO] [stdout]     |
[INFO] [stdout] 398 |     pub fn assert_critical_hit(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `repository` is never read
[INFO] [stdout]   --> tests/utils/framework.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct TapuTestFramework {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] 26 |     repository: Arc<GameDataRepository>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `with_format`, `repository`, and `format` are never used
[INFO] [stdout]    --> tests/utils/framework.rs:81:12
[INFO] [stdout]     |
[INFO] [stdout] 31  | impl TapuTestFramework {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 81  |     pub fn with_format(format: BattleFormat) -> DataResult<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99  |     pub fn repository(&self) -> &GameDataRepository {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn format(&self) -> &BattleFormat {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `MultiPokemon` is never constructed
[INFO] [stdout]    --> tests/utils/framework.rs:773:5
[INFO] [stdout]     |
[INFO] [stdout] 771 | pub enum TeamSpec {
[INFO] [stdout]     |          -------- variant in this enum
[INFO] [stdout] 772 |     Pokemon(PokemonSpec),
[INFO] [stdout] 773 |     MultiPokemon(Vec<PokemonSpec>),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TeamSpec` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `nature` is never read
[INFO] [stdout]    --> tests/utils/framework.rs:784:9
[INFO] [stdout]     |
[INFO] [stdout] 778 | pub struct PokemonSpec {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 784 |     pub nature: Option<&'static str>,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PokemonSpec` 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: variants `SetWeather`, `SetTerrain`, `ApplyStatus`, `SetHP`, and `AddSubstitute` are never constructed
[INFO] [stdout]    --> tests/utils/framework.rs:811:5
[INFO] [stdout]     |
[INFO] [stdout] 810 | pub enum SetupAction {
[INFO] [stdout]     |          ----------- variants in this enum
[INFO] [stdout] 811 |     SetWeather(Weather),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 812 |     SetTerrain(Terrain),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 813 |     ApplyStatus(BattlePosition, PokemonStatus),
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 814 |     ModifyStats(BattlePosition, HashMap<Stat, i8>),
[INFO] [stdout] 815 |     SetHP(BattlePosition, u16),
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 816 |     AddSideCondition(SideReference, SideCondition),
[INFO] [stdout] 817 |     AddSubstitute(BattlePosition, i16),
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SetupAction` 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: multiple variants are never constructed
[INFO] [stdout]    --> tests/utils/framework.rs:823:5
[INFO] [stdout]     |
[INFO] [stdout] 822 | pub enum ExpectedOutcome {
[INFO] [stdout]     |          --------------- variants in this enum
[INFO] [stdout] 823 |     Damage(BattlePosition, u16),
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 824 |     Status(BattlePosition, PokemonStatus),
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 825 |     StatChange(BattlePosition, Stat, i8),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 826 |     WeatherSet(Weather),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 827 |     TerrainSet(Terrain),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 828 |     SideCondition(SideReference, SideCondition),
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 829 |     Faint(BattlePosition),
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 830 |     Switch(BattlePosition, usize),
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 831 |     NoEffect(BattlePosition),
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 832 |     Instructions(Vec<BattleInstructions>),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 833 |     SubstituteHealth(BattlePosition, i16),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 834 |     VolatileStatus(BattlePosition, VolatileStatus),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ExpectedOutcome` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]    --> tests/utils/framework.rs:840:9
[INFO] [stdout]     |
[INFO] [stdout] 839 | pub struct BattleTest {
[INFO] [stdout]     |            ---------- field in this struct
[INFO] [stdout] 840 |     pub name: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `BattleTest` 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_success` and `failure_message` are never used
[INFO] [stdout]    --> tests/utils/framework.rs:875:12
[INFO] [stdout]     |
[INFO] [stdout] 873 | impl TestResult {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 874 |     /// Check if the test was successful
[INFO] [stdout] 875 |     pub fn is_success(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 880 |     pub fn failure_message(&self) -> Option<&str> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/utils/builders.rs:43:12
[INFO] [stdout]     |
[INFO] [stdout] 25  | impl TestBuilder {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 43  |     pub fn new_with_format(name: &str, format: BattleFormat) -> DataResult<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57  |     pub fn team_one_multi(mut self, specs: Vec<PokemonSpec>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69  |     pub fn team_two_multi(mut self, specs: Vec<PokemonSpec>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81  |     pub fn with_weather(self, weather: Weather) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86  |     pub fn with_terrain(self, terrain: Terrain) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91  |     pub fn with_status(self, position: BattlePosition, status: PokemonStatus) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn with_hp(self, position: BattlePosition, hp: u16) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn with_substitute(self, position: BattlePosition, health: i16) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn turn_two_move(self, move_two: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn turn_moves(self, move_one: &str, move_two: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn expect(mut self, outcome: ExpectedOutcome) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn expect_damage(self, position: BattlePosition, damage: u16) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn expect_status(self, position: BattlePosition, status: PokemonStatus) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn expect_stat_change(self, position: BattlePosition, stat: Stat, change: i8) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn expect_weather(self, weather: Weather) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     pub fn expect_terrain(self, terrain: Terrain) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn expect_side_condition(self, side: SideReference, condition: SideCondition) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn expect_faint(self, position: BattlePosition) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn expect_no_effect(self, position: BattlePosition) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn expect_substitute_health(self, position: BattlePosition, health: i16) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn expect_volatile_status(self, position: BattlePosition, status: VolatileStatus) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> tests/utils/builders.rs:291:12
[INFO] [stdout]     |
[INFO] [stdout] 273 | impl PokemonSpec {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub fn level(mut self, level: u8) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 303 |     pub fn item(mut self, item: &'static str) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub fn move_slot(mut self, move_name: &'static str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 323 |     pub fn nature(mut self, nature: &'static str) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 329 |     pub fn evs(mut self, evs: Stats) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 335 |     pub fn ev_spread(mut self, hp: u8, atk: u8, def: u8, spa: u8, spd: u8, spe: u8) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn ivs(mut self, ivs: Stats) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 354 |     pub fn perfect_ivs(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 367 |     pub fn status(mut self, status: PokemonStatus) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 379 |     pub fn base_stats_all(mut self, stat_value: u8) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 392 |     pub fn types(mut self, type1: &'static str, type2: Option<&'static str>) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 404 |     pub fn weight(mut self, _weight_kg: f32) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 413 |     pub fn max_hp(mut self, max_hp: i16) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TestScenarios` is never constructed
[INFO] [stdout]    --> tests/utils/builders.rs:430:12
[INFO] [stdout]     |
[INFO] [stdout] 430 | pub struct TestScenarios;
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `damage_test`, `status_test`, `ability_test`, and `item_test` are never used
[INFO] [stdout]    --> tests/utils/builders.rs:434:12
[INFO] [stdout]     |
[INFO] [stdout] 432 | impl TestScenarios {
[INFO] [stdout]     | ------------------ associated functions in this implementation
[INFO] [stdout] 433 |     /// Create a basic damage test scenario
[INFO] [stdout] 434 |     pub fn damage_test(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 451 |     pub fn status_test(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 468 |     pub fn ability_test(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 481 |     pub fn item_test(
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Positions` is never constructed
[INFO] [stdout]    --> tests/utils/builders.rs:528:12
[INFO] [stdout]     |
[INFO] [stdout] 528 | pub struct Positions;
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constants `SIDE_ONE_0`, `SIDE_ONE_1`, `SIDE_TWO_0`, and `SIDE_TWO_1` are never used
[INFO] [stdout]    --> tests/utils/builders.rs:532:15
[INFO] [stdout]     |
[INFO] [stdout] 530 | impl Positions {
[INFO] [stdout]     | -------------- associated constants in this implementation
[INFO] [stdout] 531 |     /// Side one, slot 0 (first Pokemon on side one)
[INFO] [stdout] 532 |     pub const SIDE_ONE_0: BattlePosition = BattlePosition {
[INFO] [stdout]     |               ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 538 |     pub const SIDE_ONE_1: BattlePosition = BattlePosition {
[INFO] [stdout]     |               ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 544 |     pub const SIDE_TWO_0: BattlePosition = BattlePosition {
[INFO] [stdout]     |               ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 550 |     pub const SIDE_TWO_1: BattlePosition = BattlePosition {
[INFO] [stdout]     |               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StatChanges` is never constructed
[INFO] [stdout]    --> tests/utils/builders.rs:557:12
[INFO] [stdout]     |
[INFO] [stdout] 557 | pub struct StatChanges;
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `single`, `multiple`, `attack_boost`, `defense_boost`, and `speed_boost` are never used
[INFO] [stdout]    --> tests/utils/builders.rs:561:12
[INFO] [stdout]     |
[INFO] [stdout] 559 | impl StatChanges {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout] 560 |     /// Create a single stat change
[INFO] [stdout] 561 |     pub fn single(stat: Stat, change: i8) -> HashMap<Stat, i8> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 568 |     pub fn multiple(changes: &[(Stat, i8)]) -> HashMap<Stat, i8> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 573 |     pub fn attack_boost(change: i8) -> HashMap<Stat, i8> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 578 |     pub fn defense_boost(change: i8) -> HashMap<Stat, i8> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 583 |     pub fn speed_boost(change: i8) -> HashMap<Stat, i8> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BattleAssertions` is never constructed
[INFO] [stdout]   --> tests/utils/assertions.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct BattleAssertions;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> tests/utils/assertions.rs:16:12
[INFO] [stdout]     |
[INFO] [stdout] 14  | impl BattleAssertions {
[INFO] [stdout]     | --------------------- associated functions in this implementation
[INFO] [stdout] 15  |     /// Assert that a Pokemon took the expected amount of damage
[INFO] [stdout] 16  |     pub fn assert_damage(
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37  |     pub fn assert_status(
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56  |     pub fn assert_no_status(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64  |     pub fn assert_stat_changes(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86  |     pub fn assert_stat_change(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98  |     pub fn assert_no_stat_changes(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn assert_fainted(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn assert_not_fainted(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn assert_hp(
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn assert_weather(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn assert_terrain(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub fn assert_side_condition(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn assert_side_condition_value(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     pub fn assert_instructions_exact(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     pub fn assert_contains_instruction(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn assert_not_contains_instruction(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 314 |     pub fn assert_total_probability(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_attack_damage` is never used
[INFO] [stdout]    --> tests/utils/assertions.rs:335:12
[INFO] [stdout]     |
[INFO] [stdout] 335 |     pub fn assert_attack_damage(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_attack_status` is never used
[INFO] [stdout]    --> tests/utils/assertions.rs:344:12
[INFO] [stdout]     |
[INFO] [stdout] 344 |     pub fn assert_attack_status(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_stat_boost` is never used
[INFO] [stdout]    --> tests/utils/assertions.rs:353:12
[INFO] [stdout]     |
[INFO] [stdout] 353 |     pub fn assert_stat_boost(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_no_effect` is never used
[INFO] [stdout]    --> tests/utils/assertions.rs:363:12
[INFO] [stdout]     |
[INFO] [stdout] 363 |     pub fn assert_no_effect(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_immunity` is never used
[INFO] [stdout]    --> tests/utils/assertions.rs:389:12
[INFO] [stdout]     |
[INFO] [stdout] 389 |     pub fn assert_immunity(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_critical_hit` is never used
[INFO] [stdout]    --> tests/utils/assertions.rs:398:12
[INFO] [stdout]     |
[INFO] [stdout] 398 |     pub fn assert_critical_hit(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `repository` is never read
[INFO] [stdout]   --> tests/utils/framework.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub struct TapuTestFramework {
[INFO] [stdout]    |            ----------------- field in this struct
[INFO] [stdout] 26 |     repository: Arc<GameDataRepository>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `with_generation`, `with_format`, `repository`, and `format` are never used
[INFO] [stdout]    --> tests/utils/framework.rs:51:12
[INFO] [stdout]     |
[INFO] [stdout] 31  | impl TapuTestFramework {
[INFO] [stdout]     | ---------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 51  |     pub fn with_generation(gen: Generation) -> DataResult<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 81  |     pub fn with_format(format: BattleFormat) -> DataResult<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 99  |     pub fn repository(&self) -> &GameDataRepository {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn format(&self) -> &BattleFormat {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `MultiPokemon` is never constructed
[INFO] [stdout]    --> tests/utils/framework.rs:773:5
[INFO] [stdout]     |
[INFO] [stdout] 771 | pub enum TeamSpec {
[INFO] [stdout]     |          -------- variant in this enum
[INFO] [stdout] 772 |     Pokemon(PokemonSpec),
[INFO] [stdout] 773 |     MultiPokemon(Vec<PokemonSpec>),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TeamSpec` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `nature` is never read
[INFO] [stdout]    --> tests/utils/framework.rs:784:9
[INFO] [stdout]     |
[INFO] [stdout] 778 | pub struct PokemonSpec {
[INFO] [stdout]     |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 784 |     pub nature: Option<&'static str>,
[INFO] [stdout]     |         ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PokemonSpec` 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: variants `SetTerrain`, `ApplyStatus`, `ModifyStats`, `SetHP`, `AddSideCondition`, and `AddSubstitute` are never constructed
[INFO] [stdout]    --> tests/utils/framework.rs:812:5
[INFO] [stdout]     |
[INFO] [stdout] 810 | pub enum SetupAction {
[INFO] [stdout]     |          ----------- variants in this enum
[INFO] [stdout] 811 |     SetWeather(Weather),
[INFO] [stdout] 812 |     SetTerrain(Terrain),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 813 |     ApplyStatus(BattlePosition, PokemonStatus),
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 814 |     ModifyStats(BattlePosition, HashMap<Stat, i8>),
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 815 |     SetHP(BattlePosition, u16),
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 816 |     AddSideCondition(SideReference, SideCondition),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 817 |     AddSubstitute(BattlePosition, i16),
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SetupAction` 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: multiple variants are never constructed
[INFO] [stdout]    --> tests/utils/framework.rs:823:5
[INFO] [stdout]     |
[INFO] [stdout] 822 | pub enum ExpectedOutcome {
[INFO] [stdout]     |          --------------- variants in this enum
[INFO] [stdout] 823 |     Damage(BattlePosition, u16),
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 824 |     Status(BattlePosition, PokemonStatus),
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 825 |     StatChange(BattlePosition, Stat, i8),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 826 |     WeatherSet(Weather),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 827 |     TerrainSet(Terrain),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 828 |     SideCondition(SideReference, SideCondition),
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 829 |     Faint(BattlePosition),
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 830 |     Switch(BattlePosition, usize),
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] 831 |     NoEffect(BattlePosition),
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 832 |     Instructions(Vec<BattleInstructions>),
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 833 |     SubstituteHealth(BattlePosition, i16),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 834 |     VolatileStatus(BattlePosition, VolatileStatus),
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ExpectedOutcome` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `name` is never read
[INFO] [stdout]    --> tests/utils/framework.rs:840:9
[INFO] [stdout]     |
[INFO] [stdout] 839 | pub struct BattleTest {
[INFO] [stdout]     |            ---------- field in this struct
[INFO] [stdout] 840 |     pub name: String,
[INFO] [stdout]     |         ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `BattleTest` 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_success` and `failure_message` are never used
[INFO] [stdout]    --> tests/utils/framework.rs:875:12
[INFO] [stdout]     |
[INFO] [stdout] 873 | impl TestResult {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] 874 |     /// Check if the test was successful
[INFO] [stdout] 875 |     pub fn is_success(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 880 |     pub fn failure_message(&self) -> Option<&str> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> tests/utils/builders.rs:35:12
[INFO] [stdout]     |
[INFO] [stdout] 25  | impl TestBuilder {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 35  |     pub fn new_with_generation(name: &str, gen: Generation) -> DataResult<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43  |     pub fn new_with_format(name: &str, format: BattleFormat) -> DataResult<Self> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57  |     pub fn team_one_multi(mut self, specs: Vec<PokemonSpec>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69  |     pub fn team_two_multi(mut self, specs: Vec<PokemonSpec>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86  |     pub fn with_terrain(self, terrain: Terrain) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 91  |     pub fn with_status(self, position: BattlePosition, status: PokemonStatus) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 96  |     pub fn with_stat_changes(self, position: BattlePosition, changes: HashMap<Stat, i8>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn with_hp(self, position: BattlePosition, hp: u16) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn with_side_condition(self, side: SideReference, condition: SideCondition) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn with_substitute(self, position: BattlePosition, health: i16) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn turn_two_move(self, move_two: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn turn_moves(self, move_one: &str, move_two: &str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn expect(mut self, outcome: ExpectedOutcome) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn expect_damage(self, position: BattlePosition, damage: u16) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn expect_status(self, position: BattlePosition, status: PokemonStatus) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn expect_stat_change(self, position: BattlePosition, stat: Stat, change: i8) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn expect_weather(self, weather: Weather) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 174 |     pub fn expect_terrain(self, terrain: Terrain) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn expect_side_condition(self, side: SideReference, condition: SideCondition) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn expect_faint(self, position: BattlePosition) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn expect_no_effect(self, position: BattlePosition) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn expect_substitute_health(self, position: BattlePosition, health: i16) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 199 |     pub fn expect_volatile_status(self, position: BattlePosition, status: VolatileStatus) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> tests/utils/builders.rs:291:12
[INFO] [stdout]     |
[INFO] [stdout] 273 | impl PokemonSpec {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub fn level(mut self, level: u8) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 315 |     pub fn move_slot(mut self, move_name: &'static str) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 323 |     pub fn nature(mut self, nature: &'static str) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 329 |     pub fn evs(mut self, evs: Stats) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 348 |     pub fn ivs(mut self, ivs: Stats) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 354 |     pub fn perfect_ivs(mut self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 373 |     pub fn hp(mut self, hp: u16) -> Self {
[INFO] [stdout]     |            ^^
[INFO] [stdout] ...
[INFO] [stdout] 379 |     pub fn base_stats_all(mut self, stat_value: u8) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 392 |     pub fn types(mut self, type1: &'static str, type2: Option<&'static str>) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 404 |     pub fn weight(mut self, _weight_kg: f32) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 413 |     pub fn max_hp(mut self, max_hp: i16) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TestScenarios` is never constructed
[INFO] [stdout]    --> tests/utils/builders.rs:430:12
[INFO] [stdout]     |
[INFO] [stdout] 430 | pub struct TestScenarios;
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `damage_test`, `status_test`, `ability_test`, and `item_test` are never used
[INFO] [stdout]    --> tests/utils/builders.rs:434:12
[INFO] [stdout]     |
[INFO] [stdout] 432 | impl TestScenarios {
[INFO] [stdout]     | ------------------ associated functions in this implementation
[INFO] [stdout] 433 |     /// Create a basic damage test scenario
[INFO] [stdout] 434 |     pub fn damage_test(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 451 |     pub fn status_test(
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 468 |     pub fn ability_test(
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 481 |     pub fn item_test(
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constants `SIDE_ONE_1` and `SIDE_TWO_1` are never used
[INFO] [stdout]    --> tests/utils/builders.rs:538:15
[INFO] [stdout]     |
[INFO] [stdout] 530 | impl Positions {
[INFO] [stdout]     | -------------- associated constants in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 538 |     pub const SIDE_ONE_1: BattlePosition = BattlePosition {
[INFO] [stdout]     |               ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 550 |     pub const SIDE_TWO_1: BattlePosition = BattlePosition {
[INFO] [stdout]     |               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StatChanges` is never constructed
[INFO] [stdout]    --> tests/utils/builders.rs:557:12
[INFO] [stdout]     |
[INFO] [stdout] 557 | pub struct StatChanges;
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `single`, `multiple`, `attack_boost`, `defense_boost`, and `speed_boost` are never used
[INFO] [stdout]    --> tests/utils/builders.rs:561:12
[INFO] [stdout]     |
[INFO] [stdout] 559 | impl StatChanges {
[INFO] [stdout]     | ---------------- associated functions in this implementation
[INFO] [stdout] 560 |     /// Create a single stat change
[INFO] [stdout] 561 |     pub fn single(stat: Stat, change: i8) -> HashMap<Stat, i8> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 568 |     pub fn multiple(changes: &[(Stat, i8)]) -> HashMap<Stat, i8> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 573 |     pub fn attack_boost(change: i8) -> HashMap<Stat, i8> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 578 |     pub fn defense_boost(change: i8) -> HashMap<Stat, i8> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 583 |     pub fn speed_boost(change: i8) -> HashMap<Stat, i8> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BattleAssertions` is never constructed
[INFO] [stdout]   --> tests/utils/assertions.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct BattleAssertions;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> tests/utils/assertions.rs:16:12
[INFO] [stdout]     |
[INFO] [stdout] 14  | impl BattleAssertions {
[INFO] [stdout]     | --------------------- associated functions in this implementation
[INFO] [stdout] 15  |     /// Assert that a Pokemon took the expected amount of damage
[INFO] [stdout] 16  |     pub fn assert_damage(
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37  |     pub fn assert_status(
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56  |     pub fn assert_no_status(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64  |     pub fn assert_stat_changes(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 86  |     pub fn assert_stat_change(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98  |     pub fn assert_no_stat_changes(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn assert_fainted(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 136 |     pub fn assert_not_fainted(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn assert_hp(
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn assert_weather(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn assert_terrain(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub fn assert_side_condition(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn assert_side_condition_value(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 245 |     pub fn assert_instructions_exact(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     pub fn assert_contains_instruction(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn assert_not_contains_instruction(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 314 |     pub fn assert_total_probability(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_attack_damage` is never used
[INFO] [stdout]    --> tests/utils/assertions.rs:335:12
[INFO] [stdout]     |
[INFO] [stdout] 335 |     pub fn assert_attack_damage(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_attack_status` is never used
[INFO] [stdout]    --> tests/utils/assertions.rs:344:12
[INFO] [stdout]     |
[INFO] [stdout] 344 |     pub fn assert_attack_status(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_stat_boost` is never used
[INFO] [stdout]    --> tests/utils/assertions.rs:353:12
[INFO] [stdout]     |
[INFO] [stdout] 353 |     pub fn assert_stat_boost(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_no_effect` is never used
[INFO] [stdout]    --> tests/utils/assertions.rs:363:12
[INFO] [stdout]     |
[INFO] [stdout] 363 |     pub fn assert_no_effect(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_immunity` is never used
[INFO] [stdout]    --> tests/utils/assertions.rs:389:12
[INFO] [stdout]     |
[INFO] [stdout] 389 |     pub fn assert_immunity(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `assert_critical_hit` is never used
[INFO] [stdout]    --> tests/utils/assertions.rs:398:12
[INFO] [stdout]     |
[INFO] [stdout] 398 |     pub fn assert_critical_hit(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/config.rs:128:23
[INFO] [stdout]     |
[INFO] [stdout] 128 |             .map_err(|e| ConfigError::FileNotFound { path: path.to_path_buf() })?;
[INFO] [stdout]     |                       ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `e`
[INFO] [stdout]    --> src/config.rs:138:23
[INFO] [stdout]     |
[INFO] [stdout] 138 |             .map_err(|e| ConfigError::FileNotFound { path: path.as_ref().to_path_buf() })?;
[INFO] [stdout]     |                       ^ help: if this is intentional, prefix it with an underscore: `_e`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/simulator.rs:391:31
[INFO] [stdout]     |
[INFO] [stdout] 391 |     fn choose_move(&mut self, state: &BattleState, valid_moves: &[usize]) -> usize {
[INFO] [stdout]     |                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/builders/battle.rs:229:13
[INFO] [stdout]     |
[INFO] [stdout] 229 |         let mut state = battle.state;
[INFO] [stdout]     |             ----^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/builders/team.rs:98:20
[INFO] [stdout]    |
[INFO] [stdout] 98 |     pub fn pokemon(mut self, species: impl Into<SpeciesId>) -> TeamPokemonContext<'a> {
[INFO] [stdout]    |                    ----^^^^
[INFO] [stdout]    |                    |
[INFO] [stdout]    |                    help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `data`
[INFO] [stdout]    --> src/builders/team.rs:264:28
[INFO] [stdout]     |
[INFO] [stdout] 264 |     pub fn validate(&self, data: &GameDataRepository) -> Result<(), BuilderError> {
[INFO] [stdout]     |                            ^^^^ help: if this is intentional, prefix it with an underscore: `_data`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/builders/team.rs:370:13
[INFO] [stdout]     |
[INFO] [stdout] 370 |         let mut team_builder = self.finish();
[INFO] [stdout]     |             ----^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `convert_tera_type` is never used
[INFO] [stdout]     --> src/engine/combat/moves/damage/variable_power.rs:1447:4
[INFO] [stdout]      |
[INFO] [stdout] 1447 | fn convert_tera_type(tera: crate::core::move_choice::PokemonType) -> PokemonType {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_attack_instructions` is never used
[INFO] [stdout]    --> src/engine/turn.rs:233:4
[INFO] [stdout]     |
[INFO] [stdout] 233 | fn generate_attack_instructions(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_damage_instructions` is never used
[INFO] [stdout]    --> src/engine/turn.rs:320:4
[INFO] [stdout]     |
[INFO] [stdout] 320 | fn generate_damage_instructions(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `combine_move_instructions` is never used
[INFO] [stdout]    --> src/engine/turn.rs:505:4
[INFO] [stdout]     |
[INFO] [stdout] 505 | fn combine_move_instructions(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `determine_move_order` is never used
[INFO] [stdout]    --> src/engine/turn.rs:646:4
[INFO] [stdout]     |
[INFO] [stdout] 646 | fn determine_move_order<'a>(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 43.31s
[INFO] running `Command { std: "docker" "inspect" "6400c28c4435149555d8d82c7a314dca0a827b13c70e721593c02c66f0e622e7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6400c28c4435149555d8d82c7a314dca0a827b13c70e721593c02c66f0e622e7", kill_on_drop: false }`
[INFO] [stdout] 6400c28c4435149555d8d82c7a314dca0a827b13c70e721593c02c66f0e622e7
