[INFO] cloning repository https://github.com/ahwuoc/GameNro
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ahwuoc/GameNro" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fahwuoc%2FGameNro", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fahwuoc%2FGameNro'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f77b000adcf23802dc4020be1efe981c49cc7a9c
[INFO] checking ahwuoc/GameNro against master#c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38 for pr-146470
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fahwuoc%2FGameNro" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] [stderr] Updating files:   3% (2587/65339)
Updating files:   4% (2614/65339)
Updating files:   5% (3267/65339)
Updating files:   6% (3921/65339)
Updating files:   7% (4574/65339)
Updating files:   8% (5228/65339)
Updating files:   9% (5881/65339)
Updating files:   9% (6097/65339)
Updating files:  10% (6534/65339)
Updating files:  11% (7188/65339)
Updating files:  12% (7841/65339)
Updating files:  13% (8495/65339)
Updating files:  14% (9148/65339)
Updating files:  14% (9671/65339)
Updating files:  15% (9801/65339)
Updating files:  16% (10455/65339)
Updating files:  17% (11108/65339)
Updating files:  18% (11762/65339)
Updating files:  18% (12327/65339)
Updating files:  19% (12415/65339)
Updating files:  20% (13068/65339)
Updating files:  21% (13722/65339)
Updating files:  22% (14375/65339)
Updating files:  23% (15028/65339)
Updating files:  24% (15682/65339)
Updating files:  25% (16335/65339)
Updating files:  26% (16989/65339)
Updating files:  26% (17464/65339)
Updating files:  27% (17642/65339)
Updating files:  28% (18295/65339)
Updating files:  29% (18949/65339)
Updating files:  30% (19602/65339)
Updating files:  31% (20256/65339)
Updating files:  32% (20909/65339)
Updating files:  33% (21562/65339)
Updating files:  34% (22216/65339)
Updating files:  35% (22869/65339)
Updating files:  36% (23523/65339)
Updating files:  37% (24176/65339)
Updating files:  38% (24829/65339)
Updating files:  38% (24959/65339)
Updating files:  39% (25483/65339)
Updating files:  40% (26136/65339)
Updating files:  41% (26789/65339)
Updating files:  42% (27443/65339)
Updating files:  43% (28096/65339)
Updating files:  44% (28750/65339)
Updating files:  45% (29403/65339)
Updating files:  46% (30056/65339)
Updating files:  47% (30710/65339)
Updating files:  48% (31363/65339)
Updating files:  49% (32017/65339)
Updating files:  50% (32670/65339)
Updating files:  50% (33223/65339)
Updating files:  51% (33323/65339)
Updating files:  52% (33977/65339)
Updating files:  53% (34630/65339)
Updating files:  54% (35284/65339)
Updating files:  55% (35937/65339)
Updating files:  56% (36590/65339)
Updating files:  57% (37244/65339)
Updating files:  58% (37897/65339)
Updating files:  58% (38243/65339)
Updating files:  59% (38551/65339)
Updating files:  60% (39204/65339)
Updating files:  61% (39857/65339)
Updating files:  62% (40511/65339)
Updating files:  63% (41164/65339)
Updating files:  64% (41817/65339)
Updating files:  65% (42471/65339)
Updating files:  66% (43124/65339)
Updating files:  67% (43778/65339)
Updating files:  68% (44431/65339)
Updating files:  68% (45059/65339)
Updating files:  69% (45084/65339)
Updating files:  70% (45738/65339)
Updating files:  71% (46391/65339)
Updating files:  72% (47045/65339)
Updating files:  73% (47698/65339)
Updating files:  73% (48247/65339)
Updating files:  74% (48351/65339)
Updating files:  75% (49005/65339)
Updating files:  76% (49658/65339)
Updating files:  77% (50312/65339)
Updating files:  78% (50965/65339)
Updating files:  79% (51618/65339)
Updating files:  80% (52272/65339)
Updating files:  81% (52925/65339)
Updating files:  82% (53578/65339)
Updating files:  83% (54232/65339)
Updating files:  84% (54885/65339)
Updating files:  85% (55539/65339)
Updating files:  86% (56192/65339)
Updating files:  87% (56845/65339)
Updating files:  87% (56924/65339)
Updating files:  88% (57499/65339)
Updating files:  89% (58152/65339)
Updating files:  89% (58659/65339)
Updating files:  90% (58806/65339)
Updating files:  90% (59416/65339)
Updating files:  91% (59459/65339)
Updating files:  92% (60112/65339)
Updating files:  93% (60766/65339)
Updating files:  94% (61419/65339)
Updating files:  95% (62073/65339)
Updating files:  96% (62726/65339)
Updating files:  97% (63379/65339)
Updating files:  98% (64033/65339)
Updating files:  99% (64686/65339)
Updating files:  99% (65098/65339)
Updating files: 100% (65339/65339)
Updating files: 100% (65339/65339), done.
[INFO] removed /workspace/builds/worker-6-tc1/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/ahwuoc/GameNro
[INFO] finished tweaking git repo https://github.com/ahwuoc/GameNro
[INFO] tweaked toml for git repo https://github.com/ahwuoc/GameNro written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/ahwuoc/GameNro on toolchain c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/ahwuoc/GameNro 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" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded rkyv_derive v0.7.45
[INFO] [stderr]   Downloaded bytecheck_derive v0.6.12
[INFO] [stderr]   Downloaded sea-bae v0.2.1
[INFO] [stderr]   Downloaded sea-query-binder v0.5.0
[INFO] [stderr]   Downloaded bytecheck v0.6.12
[INFO] [stderr]   Downloaded rend v0.4.2
[INFO] [stderr]   Downloaded sea-orm-macros v0.12.15
[INFO] [stderr]   Downloaded simdutf8 v0.1.5
[INFO] [stderr]   Downloaded inherent v1.0.12
[INFO] [stderr]   Downloaded rkyv v0.7.45
[INFO] [stderr]   Downloaded ordered-float v3.9.2
[INFO] [stderr]   Downloaded whoami v1.6.0
[INFO] [stderr]   Downloaded rust_decimal v1.37.2
[INFO] [stderr]   Downloaded sea-query v0.30.7
[INFO] [stderr]   Downloaded sea-orm v0.12.15
[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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] f71877df89bf8cb0f92ca7e9fcb73c51a92fff9a847827deef3e3b52c105a69c
[INFO] running `Command { std: "docker" "start" "-a" "f71877df89bf8cb0f92ca7e9fcb73c51a92fff9a847827deef3e3b52c105a69c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f71877df89bf8cb0f92ca7e9fcb73c51a92fff9a847827deef3e3b52c105a69c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f71877df89bf8cb0f92ca7e9fcb73c51a92fff9a847827deef3e3b52c105a69c", kill_on_drop: false }`
[INFO] [stdout] f71877df89bf8cb0f92ca7e9fcb73c51a92fff9a847827deef3e3b52c105a69c
[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:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+c90bcb9571b7aab0d8beaa2ce8a998ffaf079d38" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] b1fddbe81014c3dab3bc1676f3a10fb290ed2de0c2ef48118a51c37ada84aa93
[INFO] running `Command { std: "docker" "start" "-a" "b1fddbe81014c3dab3bc1676f3a10fb290ed2de0c2ef48118a51c37ada84aa93", kill_on_drop: false }`
[INFO] [stderr]    Compiling libm v0.2.15
[INFO] [stderr]    Compiling stable_deref_trait v1.2.0
[INFO] [stderr]    Compiling const-oid v0.9.6
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling cc v1.2.31
[INFO] [stderr]    Compiling libc v0.2.174
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]     Checking smallvec v1.15.1
[INFO] [stderr]    Compiling syn v2.0.104
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]    Compiling zerocopy v0.8.26
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling writeable v0.6.1
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling litemap v0.8.0
[INFO] [stderr]    Compiling serde_json v1.0.142
[INFO] [stderr]    Compiling digest v0.10.7
[INFO] [stderr]    Compiling time-core v0.1.4
[INFO] [stderr]    Compiling rust_decimal v1.37.2
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]    Compiling zeroize v1.8.1
[INFO] [stderr]    Compiling time-macros v0.2.22
[INFO] [stderr]    Compiling base64ct v1.8.0
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling rustls v0.21.12
[INFO] [stderr]    Compiling icu_properties_data v2.0.1
[INFO] [stderr]    Compiling icu_normalizer_data v2.0.0
[INFO] [stderr]    Compiling pin-project-lite v0.2.16
[INFO] [stderr]    Compiling untrusted v0.9.0
[INFO] [stderr]    Compiling futures-core v0.3.31
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling pem-rfc7468 v0.7.0
[INFO] [stderr]    Compiling heck v0.4.1
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking parking_lot_core v0.9.11
[INFO] [stderr]    Compiling bytes v1.10.1
[INFO] [stderr]    Compiling socket2 v0.6.0
[INFO] [stderr]    Compiling der v0.7.10
[INFO] [stderr]    Compiling mio v1.0.4
[INFO] [stderr]    Compiling lock_api v0.4.13
[INFO] [stderr]    Compiling utf8_iter v1.0.4
[INFO] [stderr]    Compiling futures-sink v0.3.31
[INFO] [stderr]    Compiling byteorder v1.5.0
[INFO] [stderr]    Compiling tinyvec_macros v0.1.1
[INFO] [stderr]    Compiling spin v0.9.8
[INFO] [stderr]    Compiling allocator-api2 v0.2.21
[INFO] [stderr]    Compiling percent-encoding v2.3.1
[INFO] [stderr]    Compiling powerfmt v0.2.0
[INFO] [stderr]    Compiling lazy_static v1.5.0
[INFO] [stderr]    Compiling tokio v1.47.1
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling deranged v0.4.0
[INFO] [stderr]    Compiling tinyvec v1.9.0
[INFO] [stderr]    Compiling parking_lot v0.12.4
[INFO] [stderr]    Compiling form_urlencoded v1.2.1
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]    Compiling tracing-core v0.1.34
[INFO] [stderr]    Compiling futures-io v0.3.31
[INFO] [stderr]    Compiling spki v0.7.3
[INFO] [stderr]    Compiling hashbrown v0.14.5
[INFO] [stderr]    Compiling unicode_categories v0.1.1
[INFO] [stderr]    Compiling pkcs8 v0.10.2
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling num-bigint v0.4.6
[INFO] [stderr]    Compiling num-iter v0.1.45
[INFO] [stderr]    Compiling base64 v0.21.7
[INFO] [stderr]    Compiling rustix v1.0.8
[INFO] [stderr]    Compiling arrayvec v0.7.6
[INFO] [stderr]    Compiling crc-catalog v2.4.0
[INFO] [stderr]    Compiling futures-task v0.3.31
[INFO] [stderr]    Compiling iana-time-zone v0.1.63
[INFO] [stderr]    Compiling pin-utils v0.1.0
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling slab v0.4.10
[INFO] [stderr]    Compiling hashlink v0.8.4
[INFO] [stderr]    Compiling rustls-pemfile v1.0.4
[INFO] [stderr]    Compiling chrono v0.4.41
[INFO] [stderr]    Compiling crc v3.3.0
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling unicode-normalization v0.1.24
[INFO] [stderr]    Compiling indexmap v2.10.0
[INFO] [stderr]    Compiling pkcs1 v0.7.5
[INFO] [stderr]    Compiling time v0.3.41
[INFO] [stderr]     Checking futures-channel v0.3.31
[INFO] [stderr]    Compiling crossbeam-queue v0.3.12
[INFO] [stderr]    Compiling atoi v2.0.0
[INFO] [stderr]    Compiling futures-intrusive v0.5.0
[INFO] [stderr]    Compiling sha2 v0.10.9
[INFO] [stderr]    Compiling signature v2.2.0
[INFO] [stderr]    Compiling sqlformat v0.2.6
[INFO] [stderr]    Compiling num-bigint-dig v0.8.4
[INFO] [stderr]    Compiling hmac v0.12.1
[INFO] [stderr]     Checking signal-hook-registry v1.4.5
[INFO] [stderr]    Compiling uuid v1.17.0
[INFO] [stderr]    Compiling linux-raw-sys v0.9.4
[INFO] [stderr]    Compiling bigdecimal v0.3.1
[INFO] [stderr]    Compiling webpki-roots v0.25.4
[INFO] [stderr]    Compiling unicode-bidi v0.3.18
[INFO] [stderr]    Compiling event-listener v2.5.3
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling unicode-properties v0.1.3
[INFO] [stderr]    Compiling stringprep v0.1.5
[INFO] [stderr]    Compiling hkdf v0.12.4
[INFO] [stderr]    Compiling rsa v0.9.8
[INFO] [stderr]    Compiling sha1 v0.10.6
[INFO] [stderr]    Compiling md-5 v0.10.6
[INFO] [stderr]    Compiling fastrand v2.3.0
[INFO] [stderr]     Checking hashbrown v0.15.4
[INFO] [stderr]    Compiling dotenvy v0.15.7
[INFO] [stderr]    Compiling whoami v1.6.0
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling tokio-stream v0.1.17
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling rustls-webpki v0.101.7
[INFO] [stderr]    Compiling sct v0.7.1
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.0
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling proc-macro-error-attr2 v2.0.0
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]    Compiling derivative v2.2.0
[INFO] [stderr]    Compiling zerovec v0.11.4
[INFO] [stderr]    Compiling zerotrie v0.2.2
[INFO] [stderr]    Compiling inherent v1.0.12
[INFO] [stderr]     Checking ordered-float v3.9.2
[INFO] [stderr]    Compiling ouroboros_macro v0.17.2
[INFO] [stderr]    Compiling tracing v0.1.41
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]    Compiling proc-macro-error2 v2.0.1
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking aliasable v0.1.3
[INFO] [stderr]     Checking futures v0.3.31
[INFO] [stderr]    Compiling async-trait v0.1.88
[INFO] [stderr]     Checking strum v0.25.0
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]    Compiling sea-bae v0.2.1
[INFO] [stderr]    Compiling tinystr v0.8.1
[INFO] [stderr]    Compiling potential_utf v0.1.2
[INFO] [stderr]     Checking async-stream v0.3.6
[INFO] [stderr]    Compiling icu_collections v2.0.0
[INFO] [stderr]    Compiling icu_locale_core v2.0.0
[INFO] [stderr]    Compiling sea-orm-macros v0.12.15
[INFO] [stderr]     Checking serde v1.0.219
[INFO] [stderr]     Checking ouroboros v0.17.2
[INFO] [stderr]    Compiling icu_provider v2.0.0
[INFO] [stderr]    Compiling icu_normalizer v2.0.0
[INFO] [stderr]    Compiling icu_properties v2.0.1
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.0.3
[INFO] [stderr]    Compiling url v2.5.4
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]     Checking bitflags v2.9.1
[INFO] [stderr]    Compiling sqlx-core v0.7.4
[INFO] [stderr]     Checking sea-query v0.30.7
[INFO] [stderr]    Compiling tempfile v3.20.0
[INFO] [stderr]    Compiling sqlx-mysql v0.7.4
[INFO] [stderr]    Compiling sqlx-macros-core v0.7.4
[INFO] [stderr]    Compiling sqlx-macros v0.7.4
[INFO] [stderr]     Checking sqlx v0.7.4
[INFO] [stderr]     Checking sea-query-binder v0.5.0
[INFO] [stderr]     Checking sea-orm v0.12.15
[INFO] [stderr]     Checking gamenro v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `super::account::Entity as Account`
[INFO] [stdout]  --> src/entities/prelude.rs:3:9
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub use super::account::Entity as Account;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::achievement_template::Entity as AchievementTemplate`
[INFO] [stdout]  --> src/entities/prelude.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub use super::achievement_template::Entity as AchievementTemplate;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::array_head_2_frames::Entity as ArrayHead2Frames`
[INFO] [stdout]  --> src/entities/prelude.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use super::array_head_2_frames::Entity as ArrayHead2Frames;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::bank_accounts::Entity as BankAccounts`
[INFO] [stdout]  --> src/entities/prelude.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use super::bank_accounts::Entity as BankAccounts;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::bg_item_template::Entity as BgItemTemplate`
[INFO] [stdout]  --> src/entities/prelude.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use super::bg_item_template::Entity as BgItemTemplate;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::box_item_actions::Entity as BoxItemActions`
[INFO] [stdout]  --> src/entities/prelude.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use super::box_item_actions::Entity as BoxItemActions;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::box_item_drop_options::Entity as BoxItemDropOptions`
[INFO] [stdout]  --> src/entities/prelude.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use super::box_item_drop_options::Entity as BoxItemDropOptions;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::box_item_drops::Entity as BoxItemDrops`
[INFO] [stdout]   --> src/entities/prelude.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use super::box_item_drops::Entity as BoxItemDrops;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::caption::Entity as Caption`
[INFO] [stdout]   --> src/entities/prelude.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use super::caption::Entity as Caption;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::categories_news::Entity as CategoriesNews`
[INFO] [stdout]   --> src/entities/prelude.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use super::categories_news::Entity as CategoriesNews;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::clan_sv1::Entity as ClanSv1`
[INFO] [stdout]   --> src/entities/prelude.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use super::clan_sv1::Entity as ClanSv1;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::clan_sv2::Entity as ClanSv2`
[INFO] [stdout]   --> src/entities/prelude.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use super::clan_sv2::Entity as ClanSv2;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::comment::Entity as Comment`
[INFO] [stdout]   --> src/entities/prelude.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use super::comment::Entity as Comment;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::comments::Entity as Comments`
[INFO] [stdout]   --> src/entities/prelude.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use super::comments::Entity as Comments;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::cpanel::Entity as Cpanel`
[INFO] [stdout]   --> src/entities/prelude.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use super::cpanel::Entity as Cpanel;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::dhvt_template::Entity as DhvtTemplate`
[INFO] [stdout]   --> src/entities/prelude.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use super::dhvt_template::Entity as DhvtTemplate;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::account::Entity as Account`
[INFO] [stdout]  --> src/entities/prelude.rs:3:9
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub use super::account::Entity as Account;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::achievement_template::Entity as AchievementTemplate`
[INFO] [stdout]  --> src/entities/prelude.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub use super::achievement_template::Entity as AchievementTemplate;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::array_head_2_frames::Entity as ArrayHead2Frames`
[INFO] [stdout]  --> src/entities/prelude.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use super::array_head_2_frames::Entity as ArrayHead2Frames;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::bank_accounts::Entity as BankAccounts`
[INFO] [stdout]  --> src/entities/prelude.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use super::bank_accounts::Entity as BankAccounts;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::bg_item_template::Entity as BgItemTemplate`
[INFO] [stdout]  --> src/entities/prelude.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use super::bg_item_template::Entity as BgItemTemplate;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::box_item_actions::Entity as BoxItemActions`
[INFO] [stdout]  --> src/entities/prelude.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use super::box_item_actions::Entity as BoxItemActions;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::box_item_drop_options::Entity as BoxItemDropOptions`
[INFO] [stdout]  --> src/entities/prelude.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use super::box_item_drop_options::Entity as BoxItemDropOptions;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::box_item_drops::Entity as BoxItemDrops`
[INFO] [stdout]   --> src/entities/prelude.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub use super::box_item_drops::Entity as BoxItemDrops;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::caption::Entity as Caption`
[INFO] [stdout]   --> src/entities/prelude.rs:11:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub use super::caption::Entity as Caption;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::categories_news::Entity as CategoriesNews`
[INFO] [stdout]   --> src/entities/prelude.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use super::categories_news::Entity as CategoriesNews;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::clan_sv1::Entity as ClanSv1`
[INFO] [stdout]   --> src/entities/prelude.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub use super::clan_sv1::Entity as ClanSv1;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::clan_sv2::Entity as ClanSv2`
[INFO] [stdout]   --> src/entities/prelude.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use super::clan_sv2::Entity as ClanSv2;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::comment::Entity as Comment`
[INFO] [stdout]   --> src/entities/prelude.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use super::comment::Entity as Comment;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::comments::Entity as Comments`
[INFO] [stdout]   --> src/entities/prelude.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use super::comments::Entity as Comments;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::cpanel::Entity as Cpanel`
[INFO] [stdout]   --> src/entities/prelude.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use super::cpanel::Entity as Cpanel;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::dhvt_template::Entity as DhvtTemplate`
[INFO] [stdout]   --> src/entities/prelude.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use super::dhvt_template::Entity as DhvtTemplate;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::flag_bag::Entity as FlagBag`
[INFO] [stdout]   --> src/entities/prelude.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use super::flag_bag::Entity as FlagBag;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::giftcode::Entity as Giftcode`
[INFO] [stdout]   --> src/entities/prelude.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub use super::giftcode::Entity as Giftcode;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::giftcode_item_options::Entity as GiftcodeItemOptions`
[INFO] [stdout]   --> src/entities/prelude.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub use super::giftcode_item_options::Entity as GiftcodeItemOptions;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::giftcode_items::Entity as GiftcodeItems`
[INFO] [stdout]   --> src/entities/prelude.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub use super::giftcode_items::Entity as GiftcodeItems;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::head_avatar::Entity as HeadAvatar`
[INFO] [stdout]   --> src/entities/prelude.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub use super::head_avatar::Entity as HeadAvatar;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::history_event::Entity as HistoryEvent`
[INFO] [stdout]   --> src/entities/prelude.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub use super::history_event::Entity as HistoryEvent;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::history_giftcode::Entity as HistoryGiftcode`
[INFO] [stdout]   --> src/entities/prelude.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub use super::history_giftcode::Entity as HistoryGiftcode;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::history_gold::Entity as HistoryGold`
[INFO] [stdout]   --> src/entities/prelude.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub use super::history_gold::Entity as HistoryGold;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::img_by_name::Entity as ImgByName`
[INFO] [stdout]   --> src/entities/prelude.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub use super::img_by_name::Entity as ImgByName;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::intrinsic::Entity as Intrinsic`
[INFO] [stdout]   --> src/entities/prelude.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub use super::intrinsic::Entity as Intrinsic;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::item_option_template::Entity as ItemOptionTemplate`
[INFO] [stdout]   --> src/entities/prelude.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub use super::item_option_template::Entity as ItemOptionTemplate;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::item_shop::Entity as ItemShop`
[INFO] [stdout]   --> src/entities/prelude.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub use super::item_shop::Entity as ItemShop;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::item_shop_option::Entity as ItemShopOption`
[INFO] [stdout]   --> src/entities/prelude.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use super::item_shop_option::Entity as ItemShopOption;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::item_template::Entity as ItemTemplate`
[INFO] [stdout]   --> src/entities/prelude.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub use super::item_template::Entity as ItemTemplate;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::map_template::Entity as MapTemplate`
[INFO] [stdout]   --> src/entities/prelude.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub use super::map_template::Entity as MapTemplate;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::market_item_options::Entity as MarketItemOptions`
[INFO] [stdout]   --> src/entities/prelude.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub use super::market_item_options::Entity as MarketItemOptions;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::market_items::Entity as MarketItems`
[INFO] [stdout]   --> src/entities/prelude.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub use super::market_items::Entity as MarketItems;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::mob_template::Entity as MobTemplate`
[INFO] [stdout]   --> src/entities/prelude.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub use super::mob_template::Entity as MobTemplate;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::naptien::Entity as Naptien`
[INFO] [stdout]   --> src/entities/prelude.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub use super::naptien::Entity as Naptien;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::nclass::Entity as Nclass`
[INFO] [stdout]   --> src/entities/prelude.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub use super::nclass::Entity as Nclass;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::news::Entity as News`
[INFO] [stdout]   --> src/entities/prelude.rs:39:9
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub use super::news::Entity as News;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::npc_template::Entity as NpcTemplate`
[INFO] [stdout]   --> src/entities/prelude.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub use super::npc_template::Entity as NpcTemplate;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::orders::Entity as Orders`
[INFO] [stdout]   --> src/entities/prelude.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub use super::orders::Entity as Orders;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::player::Entity as Player`
[INFO] [stdout]   --> src/entities/prelude.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub use super::player::Entity as Player;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::post_question::Entity as PostQuestion`
[INFO] [stdout]   --> src/entities/prelude.rs:43:9
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub use super::post_question::Entity as PostQuestion;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::posts::Entity as Posts`
[INFO] [stdout]   --> src/entities/prelude.rs:44:9
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub use super::posts::Entity as Posts;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::radar::Entity as Radar`
[INFO] [stdout]   --> src/entities/prelude.rs:45:9
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub use super::radar::Entity as Radar;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::received_items::Entity as ReceivedItems`
[INFO] [stdout]   --> src/entities/prelude.rs:46:9
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub use super::received_items::Entity as ReceivedItems;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::received_items_options::Entity as ReceivedItemsOptions`
[INFO] [stdout]   --> src/entities/prelude.rs:47:9
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub use super::received_items_options::Entity as ReceivedItemsOptions;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::recharge_card::Entity as RechargeCard`
[INFO] [stdout]   --> src/entities/prelude.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub use super::recharge_card::Entity as RechargeCard;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::resources::Entity as Resources`
[INFO] [stdout]   --> src/entities/prelude.rs:49:9
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub use super::resources::Entity as Resources;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::server_bank_accounts::Entity as ServerBankAccounts`
[INFO] [stdout]   --> src/entities/prelude.rs:50:9
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub use super::server_bank_accounts::Entity as ServerBankAccounts;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::shared_images::Entity as SharedImages`
[INFO] [stdout]   --> src/entities/prelude.rs:51:9
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub use super::shared_images::Entity as SharedImages;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::shop::Entity as Shop`
[INFO] [stdout]   --> src/entities/prelude.rs:52:9
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub use super::shop::Entity as Shop;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::shop_ky_gui::Entity as ShopKyGui`
[INFO] [stdout]   --> src/entities/prelude.rs:53:9
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub use super::shop_ky_gui::Entity as ShopKyGui;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::side_task_template::Entity as SideTaskTemplate`
[INFO] [stdout]   --> src/entities/prelude.rs:54:9
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub use super::side_task_template::Entity as SideTaskTemplate;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::skill_template::Entity as SkillTemplate`
[INFO] [stdout]   --> src/entities/prelude.rs:55:9
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub use super::skill_template::Entity as SkillTemplate;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::small_version::Entity as SmallVersion`
[INFO] [stdout]   --> src/entities/prelude.rs:56:9
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub use super::small_version::Entity as SmallVersion;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::tab_shop::Entity as TabShop`
[INFO] [stdout]   --> src/entities/prelude.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub use super::tab_shop::Entity as TabShop;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::task_main_template::Entity as TaskMainTemplate`
[INFO] [stdout]   --> src/entities/prelude.rs:58:9
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub use super::task_main_template::Entity as TaskMainTemplate;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::tb_transactions::Entity as TbTransactions`
[INFO] [stdout]   --> src/entities/prelude.rs:59:9
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub use super::tb_transactions::Entity as TbTransactions;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::type_item::Entity as TypeItem`
[INFO] [stdout]   --> src/entities/prelude.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub use super::type_item::Entity as TypeItem;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::type_map::Entity as TypeMap`
[INFO] [stdout]   --> src/entities/prelude.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub use super::type_map::Entity as TypeMap;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::type_sell_item_shop::Entity as TypeSellItemShop`
[INFO] [stdout]   --> src/entities/prelude.rs:62:9
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub use super::type_sell_item_shop::Entity as TypeSellItemShop;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::withdrawals::Entity as Withdrawals`
[INFO] [stdout]   --> src/entities/prelude.rs:63:9
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub use super::withdrawals::Entity as Withdrawals;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::flag_bag::Entity as FlagBag`
[INFO] [stdout]   --> src/entities/prelude.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use super::flag_bag::Entity as FlagBag;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::giftcode::Entity as Giftcode`
[INFO] [stdout]   --> src/entities/prelude.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub use super::giftcode::Entity as Giftcode;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::giftcode_item_options::Entity as GiftcodeItemOptions`
[INFO] [stdout]   --> src/entities/prelude.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub use super::giftcode_item_options::Entity as GiftcodeItemOptions;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::giftcode_items::Entity as GiftcodeItems`
[INFO] [stdout]   --> src/entities/prelude.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub use super::giftcode_items::Entity as GiftcodeItems;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::head_avatar::Entity as HeadAvatar`
[INFO] [stdout]   --> src/entities/prelude.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub use super::head_avatar::Entity as HeadAvatar;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::history_event::Entity as HistoryEvent`
[INFO] [stdout]   --> src/entities/prelude.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub use super::history_event::Entity as HistoryEvent;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::history_giftcode::Entity as HistoryGiftcode`
[INFO] [stdout]   --> src/entities/prelude.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub use super::history_giftcode::Entity as HistoryGiftcode;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::history_gold::Entity as HistoryGold`
[INFO] [stdout]   --> src/entities/prelude.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub use super::history_gold::Entity as HistoryGold;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::img_by_name::Entity as ImgByName`
[INFO] [stdout]   --> src/entities/prelude.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub use super::img_by_name::Entity as ImgByName;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::intrinsic::Entity as Intrinsic`
[INFO] [stdout]   --> src/entities/prelude.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub use super::intrinsic::Entity as Intrinsic;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::item_option_template::Entity as ItemOptionTemplate`
[INFO] [stdout]   --> src/entities/prelude.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub use super::item_option_template::Entity as ItemOptionTemplate;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::item_shop::Entity as ItemShop`
[INFO] [stdout]   --> src/entities/prelude.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub use super::item_shop::Entity as ItemShop;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::item_shop_option::Entity as ItemShopOption`
[INFO] [stdout]   --> src/entities/prelude.rs:31:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub use super::item_shop_option::Entity as ItemShopOption;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::item_template::Entity as ItemTemplate`
[INFO] [stdout]   --> src/entities/prelude.rs:32:9
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub use super::item_template::Entity as ItemTemplate;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::map_template::Entity as MapTemplate`
[INFO] [stdout]   --> src/entities/prelude.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub use super::map_template::Entity as MapTemplate;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::market_item_options::Entity as MarketItemOptions`
[INFO] [stdout]   --> src/entities/prelude.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub use super::market_item_options::Entity as MarketItemOptions;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::market_items::Entity as MarketItems`
[INFO] [stdout]   --> src/entities/prelude.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub use super::market_items::Entity as MarketItems;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::mob_template::Entity as MobTemplate`
[INFO] [stdout]   --> src/entities/prelude.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub use super::mob_template::Entity as MobTemplate;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::naptien::Entity as Naptien`
[INFO] [stdout]   --> src/entities/prelude.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub use super::naptien::Entity as Naptien;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::nclass::Entity as Nclass`
[INFO] [stdout]   --> src/entities/prelude.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub use super::nclass::Entity as Nclass;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::news::Entity as News`
[INFO] [stdout]   --> src/entities/prelude.rs:39:9
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub use super::news::Entity as News;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::npc_template::Entity as NpcTemplate`
[INFO] [stdout]   --> src/entities/prelude.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub use super::npc_template::Entity as NpcTemplate;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::orders::Entity as Orders`
[INFO] [stdout]   --> src/entities/prelude.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub use super::orders::Entity as Orders;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::player::Entity as Player`
[INFO] [stdout]   --> src/entities/prelude.rs:42:9
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub use super::player::Entity as Player;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::post_question::Entity as PostQuestion`
[INFO] [stdout]   --> src/entities/prelude.rs:43:9
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub use super::post_question::Entity as PostQuestion;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::posts::Entity as Posts`
[INFO] [stdout]   --> src/entities/prelude.rs:44:9
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub use super::posts::Entity as Posts;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::radar::Entity as Radar`
[INFO] [stdout]   --> src/entities/prelude.rs:45:9
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub use super::radar::Entity as Radar;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::received_items::Entity as ReceivedItems`
[INFO] [stdout]   --> src/entities/prelude.rs:46:9
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub use super::received_items::Entity as ReceivedItems;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::received_items_options::Entity as ReceivedItemsOptions`
[INFO] [stdout]   --> src/entities/prelude.rs:47:9
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub use super::received_items_options::Entity as ReceivedItemsOptions;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::recharge_card::Entity as RechargeCard`
[INFO] [stdout]   --> src/entities/prelude.rs:48:9
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub use super::recharge_card::Entity as RechargeCard;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::resources::Entity as Resources`
[INFO] [stdout]   --> src/entities/prelude.rs:49:9
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub use super::resources::Entity as Resources;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::server_bank_accounts::Entity as ServerBankAccounts`
[INFO] [stdout]   --> src/entities/prelude.rs:50:9
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub use super::server_bank_accounts::Entity as ServerBankAccounts;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::shared_images::Entity as SharedImages`
[INFO] [stdout]   --> src/entities/prelude.rs:51:9
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub use super::shared_images::Entity as SharedImages;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::shop::Entity as Shop`
[INFO] [stdout]   --> src/entities/prelude.rs:52:9
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub use super::shop::Entity as Shop;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::shop_ky_gui::Entity as ShopKyGui`
[INFO] [stdout]   --> src/entities/prelude.rs:53:9
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub use super::shop_ky_gui::Entity as ShopKyGui;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::side_task_template::Entity as SideTaskTemplate`
[INFO] [stdout]   --> src/entities/prelude.rs:54:9
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub use super::side_task_template::Entity as SideTaskTemplate;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `io`
[INFO] [stdout]  --> src/network/mod.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::{env, io};
[INFO] [stdout]   |                ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::skill_template::Entity as SkillTemplate`
[INFO] [stdout]   --> src/entities/prelude.rs:55:9
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub use super::skill_template::Entity as SkillTemplate;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::small_version::Entity as SmallVersion`
[INFO] [stdout]   --> src/entities/prelude.rs:56:9
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub use super::small_version::Entity as SmallVersion;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::player::Player as RtPlayer`
[INFO] [stdout]  --> src/network/async_net/controller.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::player::Player as RtPlayer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::tab_shop::Entity as TabShop`
[INFO] [stdout]   --> src/entities/prelude.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub use super::tab_shop::Entity as TabShop;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::map::zone_manager::ZoneManager`
[INFO] [stdout]  --> src/network/async_net/controller.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::map::zone_manager::ZoneManager;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::task_main_template::Entity as TaskMainTemplate`
[INFO] [stdout]   --> src/entities/prelude.rs:58:9
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub use super::task_main_template::Entity as TaskMainTemplate;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]   --> src/network/async_net/controller.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::io;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::tb_transactions::Entity as TbTransactions`
[INFO] [stdout]   --> src/entities/prelude.rs:59:9
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub use super::tb_transactions::Entity as TbTransactions;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::type_item::Entity as TypeItem`
[INFO] [stdout]   --> src/entities/prelude.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub use super::type_item::Entity as TypeItem;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::type_map::Entity as TypeMap`
[INFO] [stdout]   --> src/entities/prelude.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub use super::type_map::Entity as TypeMap;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::type_sell_item_shop::Entity as TypeSellItemShop`
[INFO] [stdout]   --> src/entities/prelude.rs:62:9
[INFO] [stdout]    |
[INFO] [stdout] 62 | pub use super::type_sell_item_shop::Entity as TypeSellItemShop;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::withdrawals::Entity as Withdrawals`
[INFO] [stdout]   --> src/entities/prelude.rs:63:9
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub use super::withdrawals::Entity as Withdrawals;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/player/player.rs:5:30
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::item::inventory::{self, Inventory};
[INFO] [stdout]   |                              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::network::async_net::session::AsyncSession`
[INFO] [stdout]  --> src/player/player_service.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::network::async_net::session::AsyncSession;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::map::Zone`
[INFO] [stdout]  --> src/player/player_service.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::map::Zone;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `player_dao as PlayerDao`
[INFO] [stdout]   --> src/player/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use player_dao as PlayerDao;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `player_service::PlayerService`
[INFO] [stdout]   --> src/player/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use player_service::PlayerService;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `player_skill::PlayerSkill`
[INFO] [stdout]   --> src/player/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use player_skill::PlayerSkill;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `player_friend::Friend as PlayerFriend`
[INFO] [stdout]   --> src/player/mod.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use player_friend::Friend as PlayerFriend;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `n_point::NPoint`
[INFO] [stdout]   --> src/player/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use n_point::NPoint;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `player_intrinsic::PlayerIntrinsic`
[INFO] [stdout]   --> src/player/mod.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub use player_intrinsic::PlayerIntrinsic;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `player_item_time::PlayerItemTime`
[INFO] [stdout]   --> src/player/mod.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub use player_item_time::PlayerItemTime;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `once_cell::sync::Lazy`
[INFO] [stdout]  --> src/map/map.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use once_cell::sync::Lazy;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `once_cell::sync::Lazy`
[INFO] [stdout]  --> src/map/zone.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use once_cell::sync::Lazy;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::item::item::Item`
[INFO] [stdout]  --> src/map/item_map.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::item::item::Item;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::item::item::Item`
[INFO] [stdout]  --> src/map/item_map_service.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::item::item::Item;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::item::item_option::ItemOption`
[INFO] [stdout]  --> src/map/item_map_service.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::item::item_option::ItemOption;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `map_service::MapService`
[INFO] [stdout]   --> src/map/mod.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub use map_service::MapService;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `map_manager::MapManager`
[INFO] [stdout]   --> src/map/mod.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub use map_manager::MapManager;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `zone_manager::ZoneManager`
[INFO] [stdout]   --> src/map/mod.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub use zone_manager::ZoneManager;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `item_map_service::ItemMapService`
[INFO] [stdout]   --> src/map/mod.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub use item_map_service::ItemMapService;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `map_utils::MapUtils`
[INFO] [stdout]   --> src/map/mod.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub use map_utils::MapUtils;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tile_loader::TileLoader`
[INFO] [stdout]   --> src/map/mod.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub use tile_loader::TileLoader;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::entities::item_option_template::Model as ItemOptionTemplate`
[INFO] [stdout]  --> src/item/item.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::entities::item_option_template::Model as ItemOptionTemplate;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/item/item.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::item::item`
[INFO] [stdout]  --> src/item/item_dao.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::item::item;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::item::Item`
[INFO] [stdout]  --> src/item/item_dao.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::item::Item;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::item::ItemOption`
[INFO] [stdout]  --> src/item/item_dao.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::item::ItemOption;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/item/item_service.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::item::item_option::ItemOption`
[INFO] [stdout]  --> src/item/item_service.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::item::item_option::ItemOption;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::entities::item_option_template::Model as ItemOptionTemplate`
[INFO] [stdout]  --> src/item/item_manager.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::entities::item_option_template::Model as ItemOptionTemplate;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::item`
[INFO] [stdout]  --> src/item/item_manager.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::item;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::item::Item`
[INFO] [stdout]  --> src/item/item_manager.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::item::Item;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/item/inventory.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/item/inventory_service.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `inventory::Inventory`
[INFO] [stdout]   --> src/item/mod.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub use inventory::Inventory;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `inventory_service::InventoryService`
[INFO] [stdout]   --> src/item/mod.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub use inventory_service::InventoryService;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `item_time::ItemTime`
[INFO] [stdout]   --> src/item/mod.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub use item_time::ItemTime;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `item_time_service::ItemTimeService`
[INFO] [stdout]   --> src/item/mod.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub use item_time_service::ItemTimeService;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `item_utils::ItemUtils`
[INFO] [stdout]   --> src/item/mod.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub use item_utils::ItemUtils;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `item_validator::ItemValidator`
[INFO] [stdout]   --> src/item/mod.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub use item_validator::ItemValidator;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::item::ItemManager`
[INFO] [stdout]  --> src/services/manager.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::item::ItemManager;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::item::item_dao::ItemDao`
[INFO] [stdout]  --> src/services/manager.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::item::item_dao::ItemDao;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/services/message_service.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::RwLock`
[INFO] [stdout]  --> src/services/message_service.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use tokio::sync::RwLock;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `player_info_service::PlayerInfoService`
[INFO] [stdout]  --> src/services/mod.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use player_info_service::PlayerInfoService;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `services::ServiceHandles`
[INFO] [stdout]   --> src/services/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use services::ServiceHandles;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]  --> src/data/data_game.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::io;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::time::Duration`
[INFO] [stdout]  --> src/data/data_game.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `array_head_2_frames`, `item_option_template`, and `item_template`
[INFO] [stdout]  --> src/data/data_game.rs:6:23
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::entities::{array_head_2_frames, item_option_template, item_template};
[INFO] [stdout]   |                       ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `nclass` and `skill_template`
[INFO] [stdout]  --> src/data/data_game.rs:7:23
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::entities::{nclass, skill_template};
[INFO] [stdout]   |                       ^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::utils::Database as DbUtil`
[INFO] [stdout]   --> src/data/data_game.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::utils::Database as DbUtil;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sea_orm::EntityTrait`
[INFO] [stdout]   --> src/data/data_game.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use sea_orm::EntityTrait;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `item_option_template` and `item_template`
[INFO] [stdout]  --> src/data/item_data.rs:4:44
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::entities::{array_head_2_frames, item_option_template, item_template};
[INFO] [stdout]   |                                            ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::Value`
[INFO] [stdout]  --> src/data/item_data.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde_json::Value;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `game_session::AntiLogin`
[INFO] [stdout]  --> src/data/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use game_session::AntiLogin;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `waypoint::WayPoint`
[INFO] [stdout]  --> src/data/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use waypoint::WayPoint;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `skill_model::Skill as SkillModel`
[INFO] [stdout]  --> src/models/mod.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub use skill_model::Skill as SkillModel;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `task_player::TaskPlayer`
[INFO] [stdout]  --> src/features/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use task_player::TaskPlayer;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `side_task_template::SideTaskTemplate`
[INFO] [stdout]  --> src/features/mod.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use side_task_template::SideTaskTemplate;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `option_card::OptionCard`
[INFO] [stdout]  --> src/features/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use option_card::OptionCard;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `io`
[INFO] [stdout]  --> src/network/mod.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::{env, io};
[INFO] [stdout]   |                ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::player::Player as RtPlayer`
[INFO] [stdout]  --> src/network/async_net/controller.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::player::Player as RtPlayer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::map::zone_manager::ZoneManager`
[INFO] [stdout]  --> src/network/async_net/controller.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::map::zone_manager::ZoneManager;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]   --> src/network/async_net/controller.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use std::io;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/player/player.rs:5:30
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::item::inventory::{self, Inventory};
[INFO] [stdout]   |                              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::network::async_net::session::AsyncSession`
[INFO] [stdout]  --> src/player/player_service.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::network::async_net::session::AsyncSession;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::map::Zone`
[INFO] [stdout]  --> src/player/player_service.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::map::Zone;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `player_dao as PlayerDao`
[INFO] [stdout]   --> src/player/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use player_dao as PlayerDao;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `player_service::PlayerService`
[INFO] [stdout]   --> src/player/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use player_service::PlayerService;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `player_skill::PlayerSkill`
[INFO] [stdout]   --> src/player/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use player_skill::PlayerSkill;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `player_friend::Friend as PlayerFriend`
[INFO] [stdout]   --> src/player/mod.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use player_friend::Friend as PlayerFriend;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `n_point::NPoint`
[INFO] [stdout]   --> src/player/mod.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub use n_point::NPoint;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `player_intrinsic::PlayerIntrinsic`
[INFO] [stdout]   --> src/player/mod.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 | pub use player_intrinsic::PlayerIntrinsic;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `player_item_time::PlayerItemTime`
[INFO] [stdout]   --> src/player/mod.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub use player_item_time::PlayerItemTime;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `once_cell::sync::Lazy`
[INFO] [stdout]  --> src/map/map.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use once_cell::sync::Lazy;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `once_cell::sync::Lazy`
[INFO] [stdout]  --> src/map/zone.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use once_cell::sync::Lazy;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::item::item::Item`
[INFO] [stdout]  --> src/map/item_map.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::item::item::Item;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::item::item::Item`
[INFO] [stdout]  --> src/map/item_map_service.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::item::item::Item;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::item::item_option::ItemOption`
[INFO] [stdout]  --> src/map/item_map_service.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::item::item_option::ItemOption;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `map_service::MapService`
[INFO] [stdout]   --> src/map/mod.rs:21:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub use map_service::MapService;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `map_manager::MapManager`
[INFO] [stdout]   --> src/map/mod.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub use map_manager::MapManager;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `zone_manager::ZoneManager`
[INFO] [stdout]   --> src/map/mod.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub use zone_manager::ZoneManager;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `item_map_service::ItemMapService`
[INFO] [stdout]   --> src/map/mod.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub use item_map_service::ItemMapService;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `map_utils::MapUtils`
[INFO] [stdout]   --> src/map/mod.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub use map_utils::MapUtils;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tile_loader::TileLoader`
[INFO] [stdout]   --> src/map/mod.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub use tile_loader::TileLoader;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::entities::item_option_template::Model as ItemOptionTemplate`
[INFO] [stdout]  --> src/item/item.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::entities::item_option_template::Model as ItemOptionTemplate;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/item/item.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::item::item`
[INFO] [stdout]  --> src/item/item_dao.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::item::item;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::item::Item`
[INFO] [stdout]  --> src/item/item_dao.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::item::Item;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::item::ItemOption`
[INFO] [stdout]  --> src/item/item_dao.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::item::ItemOption;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/item/item_service.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::item::item_option::ItemOption`
[INFO] [stdout]  --> src/item/item_service.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::item::item_option::ItemOption;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::entities::item_option_template::Model as ItemOptionTemplate`
[INFO] [stdout]  --> src/item/item_manager.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::entities::item_option_template::Model as ItemOptionTemplate;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::item`
[INFO] [stdout]  --> src/item/item_manager.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::item;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::item::Item`
[INFO] [stdout]  --> src/item/item_manager.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::item::Item;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/item/inventory.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/item/inventory_service.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `inventory::Inventory`
[INFO] [stdout]   --> src/item/mod.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub use inventory::Inventory;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `inventory_service::InventoryService`
[INFO] [stdout]   --> src/item/mod.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub use inventory_service::InventoryService;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `item_time::ItemTime`
[INFO] [stdout]   --> src/item/mod.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub use item_time::ItemTime;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `item_time_service::ItemTimeService`
[INFO] [stdout]   --> src/item/mod.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub use item_time_service::ItemTimeService;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `item_utils::ItemUtils`
[INFO] [stdout]   --> src/item/mod.rs:28:9
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub use item_utils::ItemUtils;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `item_validator::ItemValidator`
[INFO] [stdout]   --> src/item/mod.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub use item_validator::ItemValidator;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::item::ItemManager`
[INFO] [stdout]  --> src/services/manager.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::item::ItemManager;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::item::item_dao::ItemDao`
[INFO] [stdout]  --> src/services/manager.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::item::item_dao::ItemDao;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/services/message_service.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::sync::RwLock`
[INFO] [stdout]  --> src/services/message_service.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use tokio::sync::RwLock;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `player_info_service::PlayerInfoService`
[INFO] [stdout]  --> src/services/mod.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub use player_info_service::PlayerInfoService;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `services::ServiceHandles`
[INFO] [stdout]   --> src/services/mod.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub use services::ServiceHandles;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io`
[INFO] [stdout]  --> src/data/data_game.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::io;
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::time::Duration`
[INFO] [stdout]  --> src/data/data_game.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use tokio::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `array_head_2_frames`, `item_option_template`, and `item_template`
[INFO] [stdout]  --> src/data/data_game.rs:6:23
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::entities::{array_head_2_frames, item_option_template, item_template};
[INFO] [stdout]   |                       ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `nclass` and `skill_template`
[INFO] [stdout]  --> src/data/data_game.rs:7:23
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::entities::{nclass, skill_template};
[INFO] [stdout]   |                       ^^^^^^  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::utils::Database as DbUtil`
[INFO] [stdout]   --> src/data/data_game.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::utils::Database as DbUtil;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sea_orm::EntityTrait`
[INFO] [stdout]   --> src/data/data_game.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use sea_orm::EntityTrait;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `item_option_template` and `item_template`
[INFO] [stdout]  --> src/data/item_data.rs:4:44
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::entities::{array_head_2_frames, item_option_template, item_template};
[INFO] [stdout]   |                                            ^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `serde_json::Value`
[INFO] [stdout]  --> src/data/item_data.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde_json::Value;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `game_session::AntiLogin`
[INFO] [stdout]  --> src/data/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use game_session::AntiLogin;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `waypoint::WayPoint`
[INFO] [stdout]  --> src/data/mod.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub use waypoint::WayPoint;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `skill_model::Skill as SkillModel`
[INFO] [stdout]  --> src/models/mod.rs:4:9
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub use skill_model::Skill as SkillModel;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `task_player::TaskPlayer`
[INFO] [stdout]  --> src/features/mod.rs:5:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use task_player::TaskPlayer;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `side_task_template::SideTaskTemplate`
[INFO] [stdout]  --> src/features/mod.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub use side_task_template::SideTaskTemplate;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `option_card::OptionCard`
[INFO] [stdout]  --> src/features/mod.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub use option_card::OptionCard;
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: Renamed to `rng`
[INFO] [stdout]   --> src/services/intrinsic_service.rs:99:33
[INFO] [stdout]    |
[INFO] [stdout] 99 |             let mut rng = rand::thread_rng();
[INFO] [stdout]    |                                 ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `rand::thread_rng`: Renamed to `rng`
[INFO] [stdout]   --> src/services/intrinsic_service.rs:99:33
[INFO] [stdout]    |
[INFO] [stdout] 99 |             let mut rng = rand::thread_rng();
[INFO] [stdout]    |                                 ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/services/player_info_service.rs:230:13
[INFO] [stdout]     |
[INFO] [stdout] 230 |         let mut body_items_sent = 0;
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/services/player_info_service.rs:279:13
[INFO] [stdout]     |
[INFO] [stdout] 279 |         let mut box_items_sent = 0;
[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/services/player_info_service.rs:230:13
[INFO] [stdout]     |
[INFO] [stdout] 230 |         let mut body_items_sent = 0;
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/services/player_info_service.rs:279:13
[INFO] [stdout]     |
[INFO] [stdout] 279 |         let mut box_items_sent = 0;
[INFO] [stdout]     |             ----^^^^^^^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/services/intrinsic_service.rs:100:36
[INFO] [stdout]     |
[INFO] [stdout] 100 |             let random_index = rng.gen_range(1..list_intrinsic.len());
[INFO] [stdout]     |                                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/services/intrinsic_service.rs:106:53
[INFO] [stdout]     |
[INFO] [stdout] 106 |             player_intrinsic.intrinsic.param1 = rng.gen_range(selected_intrinsic.param_from_1..=selected_intrinsic.param_to_1);
[INFO] [stdout]     |                                                     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/services/intrinsic_service.rs:107:53
[INFO] [stdout]     |
[INFO] [stdout] 107 |             player_intrinsic.intrinsic.param2 = rng.gen_range(selected_intrinsic.param_from_2..=selected_intrinsic.param_to_2);
[INFO] [stdout]     |                                                     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/network/async_net/message.rs:1:47
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::{Cursor, Error, ErrorKind, Read, Write};
[INFO] [stdout]   |                                               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TryGetable`
[INFO] [stdout]  --> src/services/manager.rs:8:56
[INFO] [stdout]   |
[INFO] [stdout] 8 | use sea_orm::{EntityTrait, DatabaseBackend, Statement, TryGetable, QueryResult, ConnectionTrait};
[INFO] [stdout]   |                                                        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/services/intrinsic_service.rs:100:36
[INFO] [stdout]     |
[INFO] [stdout] 100 |             let random_index = rng.gen_range(1..list_intrinsic.len());
[INFO] [stdout]     |                                    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/services/intrinsic_service.rs:106:53
[INFO] [stdout]     |
[INFO] [stdout] 106 |             player_intrinsic.intrinsic.param1 = rng.gen_range(selected_intrinsic.param_from_1..=selected_intrinsic.param_to_1);
[INFO] [stdout]     |                                                     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `rand::Rng::gen_range`: Renamed to `random_range`
[INFO] [stdout]    --> src/services/intrinsic_service.rs:107:53
[INFO] [stdout]     |
[INFO] [stdout] 107 |             player_intrinsic.intrinsic.param2 = rng.gen_range(selected_intrinsic.param_from_2..=selected_intrinsic.param_to_2);
[INFO] [stdout]     |                                                     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/network/async_net/message.rs:1:47
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::{Cursor, Error, ErrorKind, Read, Write};
[INFO] [stdout]   |                                               ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TryGetable`
[INFO] [stdout]  --> src/services/manager.rs:8:56
[INFO] [stdout]   |
[INFO] [stdout] 8 | use sea_orm::{EntityTrait, DatabaseBackend, Statement, TryGetable, QueryResult, ConnectionTrait};
[INFO] [stdout]   |                                                        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `pos` is never read
[INFO] [stdout]    --> src/network/async_net/controller.rs:190:17
[INFO] [stdout]     |
[INFO] [stdout] 190 |                 pos += platform_len;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `body_items_sent`
[INFO] [stdout]    --> src/services/player_info_service.rs:230:13
[INFO] [stdout]     |
[INFO] [stdout] 230 |         let mut body_items_sent = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_body_items_sent`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `index`
[INFO] [stdout]    --> src/services/player_info_service.rs:231:14
[INFO] [stdout]     |
[INFO] [stdout] 231 |         for (index, item) in player.inventory.items_body.iter().take(body_len as usize).enumerate() {
[INFO] [stdout]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `bag_items_sent` is assigned to, but never used
[INFO] [stdout]    --> src/services/player_info_service.rs:254:13
[INFO] [stdout]     |
[INFO] [stdout] 254 |         let mut bag_items_sent = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_bag_items_sent` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `index`
[INFO] [stdout]    --> src/services/player_info_service.rs:255:14
[INFO] [stdout]     |
[INFO] [stdout] 255 |         for (index, item) in player.inventory.items_bag.iter().take(bag_len as usize).enumerate() {
[INFO] [stdout]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `box_items_sent`
[INFO] [stdout]    --> src/services/player_info_service.rs:279:13
[INFO] [stdout]     |
[INFO] [stdout] 279 |         let mut box_items_sent = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_box_items_sent`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `index`
[INFO] [stdout]    --> src/services/player_info_service.rs:280:14
[INFO] [stdout]     |
[INFO] [stdout] 280 |         for (index, item) in player.inventory.items_box.iter().take(box_len as usize).enumerate() {
[INFO] [stdout]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `bag_items_sent` is never read
[INFO] [stdout]    --> src/services/player_info_service.rs:261:21
[INFO] [stdout]     |
[INFO] [stdout] 261 |                     bag_items_sent += 1;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hi`
[INFO] [stdout]    --> src/data/data_game.rs:424:21
[INFO] [stdout]     |
[INFO] [stdout] 424 |                 let hi = ((payload_len as u16) >> 8) as u8;
[INFO] [stdout]     |                     ^^ help: if this is intentional, prefix it with an underscore: `_hi`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lo`
[INFO] [stdout]    --> src/data/data_game.rs:425:21
[INFO] [stdout]     |
[INFO] [stdout] 425 |                 let lo = (payload_len as u16 & 0xFF) as u8;
[INFO] [stdout]     |                     ^^ help: if this is intentional, prefix it with an underscore: `_lo`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `flag`
[INFO] [stdout]    --> src/network/async_net/controller.rs:539:13
[INFO] [stdout]     |
[INFO] [stdout] 539 |         let flag = data[offset];
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_flag`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `msg`
[INFO] [stdout]    --> src/player/player_service.rs:102:64
[INFO] [stdout]     |
[INFO] [stdout] 102 |     pub async fn send_message_to_player(&self, player_id: u64, msg: Message) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |                                                                ^^^ help: if this is intentional, prefix it with an underscore: `_msg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player`
[INFO] [stdout]    --> src/player/player_service.rs:103:21
[INFO] [stdout]     |
[INFO] [stdout] 103 |         if let Some(player) = self.get_player(player_id).await {
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_player`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `database`
[INFO] [stdout]   --> src/mob/mob_dao.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 40 |         database: &DatabaseConnection,
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_database`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mob`
[INFO] [stdout]   --> src/mob/mob_dao.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 |         mob: &RtMob,
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_mob`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `database`
[INFO] [stdout]   --> src/mob/mob_dao.rs:49:9
[INFO] [stdout]    |
[INFO] [stdout] 49 |         database: &DatabaseConnection,
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_database`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mob_id`
[INFO] [stdout]   --> src/mob/mob_dao.rs:50:9
[INFO] [stdout]    |
[INFO] [stdout] 50 |         mob_id: u64,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_mob_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `zone`
[INFO] [stdout]    --> src/map/map.rs:157:13
[INFO] [stdout]     |
[INFO] [stdout] 157 |         for zone in zones.iter() {
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_zone`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mob`
[INFO] [stdout]    --> src/map/zone.rs:119:13
[INFO] [stdout]     |
[INFO] [stdout] 119 |         for mob in mobs.iter_mut() {
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_mob`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `item`
[INFO] [stdout]    --> src/map/zone.rs:126:13
[INFO] [stdout]     |
[INFO] [stdout] 126 |         for item in items.iter_mut() {
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_item`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `database`
[INFO] [stdout]   --> src/map/map_dao.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 29 |         database: &DatabaseConnection,
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_database`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map`
[INFO] [stdout]   --> src/map/map_service.rs:44:21
[INFO] [stdout]    |
[INFO] [stdout] 44 |         if let Some(map) = self.get_map_by_id(player.map_id as i32) {
[INFO] [stdout]    |                     ^^^ help: if this is intentional, prefix it with an underscore: `_map`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player`
[INFO] [stdout]   --> src/map/map_service.rs:84:36
[INFO] [stdout]    |
[INFO] [stdout] 84 |     pub fn get_map_can_join(&self, player: &Player, map_id: i32, zone_id: i32) -> Option<&Zone> {
[INFO] [stdout]    |                                    ^^^^^^ help: if this is intentional, prefix it with an underscore: `_player`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map`
[INFO] [stdout]   --> src/map/map_service.rs:85:21
[INFO] [stdout]    |
[INFO] [stdout] 85 |         if let Some(map) = self.get_map_by_id(map_id) {
[INFO] [stdout]    |                     ^^^ help: if this is intentional, prefix it with an underscore: `_map`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map_id`
[INFO] [stdout]    --> src/map/map_service.rs:100:34
[INFO] [stdout]     |
[INFO] [stdout] 100 |     pub fn is_map_offline(&self, map_id: i32) -> bool {
[INFO] [stdout]     |                                  ^^^^^^ help: if this is intentional, prefix it with an underscore: `_map_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map`
[INFO] [stdout]    --> src/map/map_service.rs:107:31
[INFO] [stdout]     |
[INFO] [stdout] 107 |     pub fn is_map_cold(&self, map: &Map) -> bool {
[INFO] [stdout]     |                               ^^^ help: if this is intentional, prefix it with an underscore: `_map`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map_id`
[INFO] [stdout]    --> src/map/map_service.rs:114:41
[INFO] [stdout]     |
[INFO] [stdout] 114 |     pub fn is_map_ban_do_kho_bau(&self, map_id: i32) -> bool {
[INFO] [stdout]     |                                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_map_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map_id`
[INFO] [stdout]    --> src/map/map_service.rs:120:37
[INFO] [stdout]     |
[INFO] [stdout] 120 |     pub fn is_map_doanh_trai(&self, map_id: i32) -> bool {
[INFO] [stdout]     |                                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_map_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map_id`
[INFO] [stdout]    --> src/map/map_service.rs:126:32
[INFO] [stdout]     |
[INFO] [stdout] 126 |     pub fn is_map_ma_bu(&self, map_id: i32) -> bool {
[INFO] [stdout]     |                                ^^^^^^ help: if this is intentional, prefix it with an underscore: `_map_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map_id`
[INFO] [stdout]    --> src/map/map_service.rs:132:32
[INFO] [stdout]     |
[INFO] [stdout] 132 |     pub fn is_map_satan(&self, map_id: i32) -> bool {
[INFO] [stdout]     |                                ^^^^^^ help: if this is intentional, prefix it with an underscore: `_map_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player`
[INFO] [stdout]    --> src/map/map_service.rs:138:35
[INFO] [stdout]     |
[INFO] [stdout] 138 |     pub fn get_map_capsule(&self, player: &Player) -> Vec<&Zone> {
[INFO] [stdout]     |                                   ^^^^^^ help: if this is intentional, prefix it with an underscore: `_player`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player`
[INFO] [stdout]    --> src/map/map_service.rs:186:39
[INFO] [stdout]     |
[INFO] [stdout] 186 |     pub fn can_player_join_map(&self, player: &Player, map_id: i32) -> bool {
[INFO] [stdout]     |                                       ^^^^^^ help: if this is intentional, prefix it with an underscore: `_player`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map`
[INFO] [stdout]    --> src/map/map_service.rs:187:21
[INFO] [stdout]     |
[INFO] [stdout] 187 |         if let Some(map) = self.get_map_by_id(map_id) {
[INFO] [stdout]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_map`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player`
[INFO] [stdout]    --> src/map/map_service.rs:197:44
[INFO] [stdout]     |
[INFO] [stdout] 197 |     pub fn get_best_zone_for_player(&self, player: &Player, map_id: i32) -> Option<&Zone> {
[INFO] [stdout]     |                                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_player`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map`
[INFO] [stdout]    --> src/map/map_service.rs:198:21
[INFO] [stdout]     |
[INFO] [stdout] 198 |         if let Some(map) = self.get_map_by_id(map_id) {
[INFO] [stdout]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_map`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player`
[INFO] [stdout]    --> src/map/map_service.rs:220:32
[INFO] [stdout]     |
[INFO] [stdout] 220 |     pub fn get_map_info(&self, player: &Player, map_id: i32) -> Option<String> {
[INFO] [stdout]     |                                ^^^^^^ help: if this is intentional, prefix it with an underscore: `_player`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `zone`
[INFO] [stdout]    --> src/map/map_utils.rs:108:9
[INFO] [stdout]     |
[INFO] [stdout] 108 |         zone: &Zone,
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_zone`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `center_x`
[INFO] [stdout]    --> src/map/map_utils.rs:109:9
[INFO] [stdout]     |
[INFO] [stdout] 109 |         center_x: i16,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_center_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `center_y`
[INFO] [stdout]    --> src/map/map_utils.rs:110:9
[INFO] [stdout]     |
[INFO] [stdout] 110 |         center_y: i16,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_center_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `range`
[INFO] [stdout]    --> src/map/map_utils.rs:111:9
[INFO] [stdout]     |
[INFO] [stdout] 111 |         range: i32,
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `zone`
[INFO] [stdout]    --> src/map/map_utils.rs:118:9
[INFO] [stdout]     |
[INFO] [stdout] 118 |         zone: &Zone,
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_zone`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `center_x`
[INFO] [stdout]    --> src/map/map_utils.rs:119:9
[INFO] [stdout]     |
[INFO] [stdout] 119 |         center_x: i16,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_center_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `center_y`
[INFO] [stdout]    --> src/map/map_utils.rs:120:9
[INFO] [stdout]     |
[INFO] [stdout] 120 |         center_y: i16,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_center_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `range`
[INFO] [stdout]    --> src/map/map_utils.rs:121:9
[INFO] [stdout]     |
[INFO] [stdout] 121 |         range: i32,
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `zone`
[INFO] [stdout]    --> src/map/map_utils.rs:128:9
[INFO] [stdout]     |
[INFO] [stdout] 128 |         zone: &Zone,
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_zone`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `center_x`
[INFO] [stdout]    --> src/map/map_utils.rs:129:9
[INFO] [stdout]     |
[INFO] [stdout] 129 |         center_x: i16,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_center_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `center_y`
[INFO] [stdout]    --> src/map/map_utils.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 130 |         center_y: i16,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_center_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `range`
[INFO] [stdout]    --> src/map/map_utils.rs:131:9
[INFO] [stdout]     |
[INFO] [stdout] 131 |         range: i32,
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map`
[INFO] [stdout]    --> src/map/map_utils.rs:154:24
[INFO] [stdout]     |
[INFO] [stdout] 154 |     pub fn is_map_full(map: &Map) -> bool {
[INFO] [stdout]     |                        ^^^ help: if this is intentional, prefix it with an underscore: `_map`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map`
[INFO] [stdout]    --> src/map/map_utils.rs:159:31
[INFO] [stdout]     |
[INFO] [stdout] 159 |     pub fn get_map_population(map: &Map) -> usize {
[INFO] [stdout]     |                               ^^^ help: if this is intentional, prefix it with an underscore: `_map`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `template_id`
[INFO] [stdout]   --> src/item/item.rs:32:29
[INFO] [stdout]    |
[INFO] [stdout] 32 |     pub fn from_template_id(template_id: i32, template: ItemTemplate) -> Self {
[INFO] [stdout]    |                             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_template_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/item/item_validator.rs:105:13
[INFO] [stdout]     |
[INFO] [stdout] 103 |             537..=542 => 999, // Stackable items
[INFO] [stdout]     |             --------- matches all the relevant values
[INFO] [stdout] 104 |             2069 => 999, // Stackable item
[INFO] [stdout] 105 |             540 => 999, // Stackable item
[INFO] [stdout]     |             ^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/item/item_validator.rs:187:13
[INFO] [stdout]     |
[INFO] [stdout] 187 |         let mut warnings = Vec::new();
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player_level`
[INFO] [stdout]    --> src/item/item_validator.rs:185:46
[INFO] [stdout]     |
[INFO] [stdout] 185 |     pub fn can_item_be_equipped(item: &Item, player_level: i32, player_gender: i32, player_class: i32) -> ValidationResult {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_player_level`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player_class`
[INFO] [stdout]    --> src/item/item_validator.rs:185:85
[INFO] [stdout]     |
[INFO] [stdout] 185 |     pub fn can_item_be_equipped(item: &Item, player_level: i32, player_gender: i32, player_class: i32) -> ValidationResult {
[INFO] [stdout]     |                                                                                     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_player_class`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `session`
[INFO] [stdout]   --> src/services/player_info_service.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 |         session: &mut AsyncSession,
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_session`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player`
[INFO] [stdout]   --> src/services/player_info_service.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |         player: &RtPlayer,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_player`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `pos` is never read
[INFO] [stdout]    --> src/network/async_net/controller.rs:190:17
[INFO] [stdout]     |
[INFO] [stdout] 190 |                 pos += platform_len;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `is_admin` and `vnd` are never read
[INFO] [stdout]   --> src/network/async_net/session.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct AsyncSession {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub is_admin: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 20 |     pub version: i32,
[INFO] [stdout] 21 |     pub vnd: i32,
[INFO] [stdout]    |         ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_key`, `get_player_mut`, `set_admin`, `is_admin`, `set_vnd`, and `get_vnd` are never used
[INFO] [stdout]    --> src/network/async_net/session.rs:50:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | impl AsyncSession {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn get_key(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 185 |     pub fn get_player_mut(&mut self) -> Option<&mut RtPlayer> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |     pub fn set_admin(&mut self, is_admin: bool) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn is_admin(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub fn set_vnd(&mut self, vnd: i32) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     pub fn get_vnd(&self) -> i32 {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `send_welcome_message` is never used
[INFO] [stdout]    --> src/network/async_net/controller.rs:353:14
[INFO] [stdout]     |
[INFO] [stdout]  14 | impl AsyncController {
[INFO] [stdout]     | -------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 353 |     async fn send_welcome_message(session: &mut AsyncSession) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/network/async_net/message.rs:43:12
[INFO] [stdout]     |
[INFO] [stdout]  11 | impl Message {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub fn read(&mut self) -> Result<u8, Error> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  53 |     pub fn read_bytes(&mut self, buf: &mut [u8]) -> Result<usize, Error> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     pub fn read_boolean(&mut self) -> Result<bool, Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub fn read_byte(&mut self) -> Result<i8, Error> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn read_unsigned_byte(&mut self) -> Result<u8, Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn read_short(&mut self) -> Result<i16, Error> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn read_unsigned_short(&mut self) -> Result<u16, Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub fn read_int(&mut self) -> Result<i32, Error> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn read_long(&mut self) -> Result<i64, Error> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn read_float(&mut self) -> Result<f32, Error> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn read_double(&mut self) -> Result<f64, Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn read_char(&mut self) -> Result<char, Error> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn read_utf(&mut self) -> Result<String, Error> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn read_fully(&mut self, buf: &mut [u8]) -> Result<(), Error> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn write_bytes(&mut self, s: &str) -> Result<(), Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn write_char(&mut self, value: char) -> Result<(), Error> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn write_chars(&mut self, s: &str) -> Result<(), Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn write_double(&mut self, value: f64) -> Result<(), Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn write_float(&mut self, value: f32) -> Result<(), Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     pub fn dispose(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/player/player.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct Player {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub intrinsic: IntrinsicPlayer,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub before_dispose: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub is_train: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 37 |     pub type_train: u8,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 38 |     pub time_off: u64,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub last_time_use_option: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 47 |     pub last_time_revived: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 48 |     
[INFO] [stdout] 49 |     pub just_revived: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 50 |     pub is_fight: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 51 |     pub is_fight1: bool,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 52 |     pub is_try: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 53 |     pub is_try1: bool,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub is_admin: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 57 |     pub admin_key: bool,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 58 |     
[INFO] [stdout] 59 |     pub notify: Option<String>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Player` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/player/player.rs:109:12
[INFO] [stdout]     |
[INFO] [stdout]  64 | impl Player {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn from_entity(model: &entities::player::Model) -> Result<Self, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     fn parse_inventory_json(s: &str) -> Result<Inventory, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     fn parse_location_array(s: &str) -> Result<(i64, i64, i64), String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     fn parse_point_array(s: &str) -> Result<NPoint, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub fn update(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     pub fn injured(&mut self, damage: u64, piercing: bool) -> u64 {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 248 |     pub fn set_die(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn revive(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     pub fn chat(&self, text: &str) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 277 |     pub fn is_admin(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     pub fn admin_key(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 286 |     pub fn prepared_to_dispose(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 290 |     pub fn dispose(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     pub fn set_fight(&mut self, _type_fight: u8, _type_target: u8) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn reset_fight(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub fn start_training(&mut self, type_train: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 312 |     pub fn stop_training(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 317 |     pub fn set_notify(&mut self, notify: String) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 321 |     pub fn clear_notify(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 325 |     pub fn set_session(&mut self, session: Arc<RwLock<AsyncSession>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 333 |     pub fn clear_zone(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/player/player_service.rs:27:18
[INFO] [stdout]     |
[INFO] [stdout]  14 | impl PlayerService {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  27 |     pub async fn remove_player(&self, player_id: u64) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  37 |     pub async fn get_all_players(&self) -> Vec<Player> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  53 |     pub async fn damage_player(&self, player_id: u64, damage: u64, piercing: bool) -> u64 {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub async fn heal_player(&self, player_id: u64, amount: u64) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub async fn revive_player(&self, player_id: u64) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub async fn move_player(&self, player_id: u64, x: i16, y: i16) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub async fn change_player_map(&self, player_id: u64, map_id: u32, zone_id: u32, x: i16, y: i16) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub async fn send_message_to_player(&self, player_id: u64, msg: Message) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub async fn broadcast_message(&self, msg: Message) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub async fn get_player_count(&self) -> usize {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub async fn get_online_players(&self) -> Vec<Player> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub async fn get_players_in_map(&self, map_id: u32) -> Vec<Player> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub async fn get_players_in_zone(&self, map_id: u32, zone_id: u32) -> Vec<Player> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub async fn set_player_admin(&self, player_id: u64, is_admin: bool) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub async fn kick_player(&self, player_id: u64) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub async fn cleanup_disconnected_players(&self) -> usize {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlayerSkill` is never constructed
[INFO] [stdout]  --> src/player/player_skill.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct PlayerSkill {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]  --> src/player/player_skill.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | impl PlayerSkill {
[INFO] [stdout]   | ---------------- associated function in this implementation
[INFO] [stdout] 9 |     pub fn new() -> Self {
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Friend` is never constructed
[INFO] [stdout]  --> src/player/player_friend.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct Friend {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Enemy` is never constructed
[INFO] [stdout]   --> src/player/player_friend.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Enemy {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/player/n_point.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl NPoint {
[INFO] [stdout]    | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn set_hp(&mut self, hp: u64) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn set_mp(&mut self, mp: u64) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn sub_hp(&mut self, damage: u64) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn add_hp(&mut self, amount: u64) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn add_mp(&mut self, amount: u64) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn update(&mut self) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn is_die(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub fn cal_point(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlayerIntrinsic` is never constructed
[INFO] [stdout]  --> src/player/player_intrinsic.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct PlayerIntrinsic {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/player/player_intrinsic.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl PlayerIntrinsic {
[INFO] [stdout]    | -------------------- associated items in this implementation
[INFO] [stdout] 10 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn from_intrinsic(intrinsic: Intrinsic) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn get_intrinsic(&self) -> &IntrinsicPlayer {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn get_intrinsic_mut(&mut self) -> &mut IntrinsicPlayer {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn has_intrinsic(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn get_intrinsic_name(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn get_intrinsic_icon(&self) -> i16 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn get_intrinsic_level(&self) -> u8 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn set_intrinsic_level(&mut self, level: u8) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn upgrade_intrinsic(&mut self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn get_upgrade_cost(&self) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub fn can_upgrade(&self, player_gold: i64) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlayerItemTime` is never constructed
[INFO] [stdout]  --> src/player/player_item_time.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct PlayerItemTime {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/player/player_item_time.rs:18:12
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl PlayerItemTime {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  18 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  33 |     pub fn update(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  58 |     pub fn use_an_danh(&mut self, level: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn is_an_danh_active(&self, level: u8) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn get_an_danh_remaining_time(&self, level: u8) -> i64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn has_any_an_danh_active(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn get_active_an_danh_levels(&self) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn clear_all_an_danh(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `name`, and `is_alive` are never read
[INFO] [stdout]   --> src/mob/mob.rs:6:9
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct RtMob {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout]  6 |     pub id: u64,
[INFO] [stdout]    |         ^^
[INFO] [stdout]  7 |     pub template_id: i32,
[INFO] [stdout]  8 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub is_alive: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RtMob` 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 methods are never used
[INFO] [stdout]    --> src/mob/mob.rs:55:12
[INFO] [stdout]     |
[INFO] [stdout]  23 | impl RtMob {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  55 |     pub fn get_hp_percent(&self) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub fn get_mp_percent(&self) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn is_dead(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn take_damage(&mut self, damage: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn heal(&mut self, amount: i32) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn restore_mp(&mut self, amount: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn get_x(&self) -> i16 {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn get_y(&self) -> i16 {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn get_map_id(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn get_zone_id(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `load_mob_template`, `create_mob_from_template`, `save_mob_state`, and `load_mob_state` are never used
[INFO] [stdout]   --> src/mob/mob_dao.rs:8:18
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl MobDao {
[INFO] [stdout]    | ----------- associated functions in this implementation
[INFO] [stdout]  8 |     pub async fn load_mob_template(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub async fn create_mob_from_template(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub async fn save_mob_state(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub async fn load_mob_state(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `mobs` and `next_mob_id` are never read
[INFO] [stdout]   --> src/mob/mob_service.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct MobService {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 11 |     mobs: Arc<RwLock<HashMap<u64, RtMob>>>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 12 |     next_mob_id: Arc<RwLock<u64>>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/mob/mob_service.rs:29:18
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl MobService {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  29 |     pub async fn create_mob(&self, template_id: i32, map_id: u32, zone_id: u32, x: i16, y: i16) -> Option<RtMob> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub async fn get_mob(&self, mob_id: u64) -> Option<RtMob> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  55 |     pub async fn get_mobs_in_map(&self, map_id: u32, zone_id: u32) -> Vec<RtMob> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub async fn remove_mob(&self, mob_id: u64) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub async fn update_mob(&self, mob_id: u64, update_fn: impl FnOnce(&mut RtMob)) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub async fn damage_mob(&self, mob_id: u64, damage: i32) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub async fn heal_mob(&self, mob_id: u64, amount: i32) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub async fn move_mob(&self, mob_id: u64, new_x: i16, new_y: i16) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub async fn send_mob_info(&self, session: &mut AsyncSession, mob: &RtMob) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub async fn send_mobs_in_map(&self, session: &mut AsyncSession, map_id: u32, zone_id: u32) -> Result<(), Box<dyn std::error::E...
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub async fn cleanup_dead_mobs(&self) -> usize {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub async fn get_mob_count(&self) -> usize {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub async fn get_alive_mob_count(&self) -> usize {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `go_map`, `go_x`, and `go_y` are never read
[INFO] [stdout]   --> src/map/map.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct WayPoint {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub go_map: i32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 23 |     pub go_x: i16,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 24 |     pub go_y: i16,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WayPoint` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `contains_position` is never used
[INFO] [stdout]   --> src/map/map.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl WayPoint {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn contains_position(&self, x: i16, y: i16) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/map/map.rs:171:18
[INFO] [stdout]     |
[INFO] [stdout]  86 | impl Map {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub async fn get_waypoint_at_position(&self, x: i16, y: i16) -> Option<WayPoint> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub async fn get_zone(&self, zone_id: i32) -> Option<Zone> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub async fn get_best_zone(&self) -> Option<Zone> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub async fn get_all_zones(&self) -> Vec<Zone> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     pub async fn is_active(&self) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     pub async fn set_active(&self, active: bool) {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     pub async fn get_map_info(&self) -> MapInfo {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MapInfo` is never constructed
[INFO] [stdout]    --> src/map/map.rs:268:12
[INFO] [stdout]     |
[INFO] [stdout] 268 | pub struct MapInfo {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_tile_map_file` is never used
[INFO] [stdout]    --> src/map/map.rs:311:4
[INFO] [stdout]     |
[INFO] [stdout] 311 | fn read_tile_map_file(map_id: i32) -> Option<(i32, i32, Vec<Vec<i32>>)> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_tile_top_file` is never used
[INFO] [stdout]    --> src/map/map.rs:331:4
[INFO] [stdout]     |
[INFO] [stdout] 331 | fn read_tile_top_file(tile_id: i32) -> Option<Vec<i32>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `load_map_template`, `load_all_map_templates`, and `create_map_from_template` are never used
[INFO] [stdout]   --> src/map/map_dao.rs:10:18
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl MapDao {
[INFO] [stdout]    | ----------- associated functions in this implementation
[INFO] [stdout] 10 |     pub async fn load_map_template(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub async fn load_all_map_templates(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub async fn create_map_from_template(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `initialized` and `maps` are never read
[INFO] [stdout]  --> src/map/map_service.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct MapService {
[INFO] [stdout]   |            ---------- fields in this struct
[INFO] [stdout] 7 |     // Service state
[INFO] [stdout] 8 |     initialized: bool,
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 9 |     maps: HashMap<i32, Map>,
[INFO] [stdout]   |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/map/map_service.rs:32:12
[INFO] [stdout]     |
[INFO] [stdout]  12 | impl MapService {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  32 |     pub fn init(&mut self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  38 |     pub fn is_initialized(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub fn get_waypoint_player_in(&self, player: &Player) -> Option<&WayPoint> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub fn get_map_by_id(&self, map_id: i32) -> Option<&Map> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     pub fn get_map_by_id_mut(&mut self, map_id: i32) -> Option<&mut Map> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn add_map(&mut self, map: Map) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  69 |     pub fn remove_map(&mut self, map_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     pub fn get_all_maps(&self) -> &HashMap<i32, Map> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  79 |     pub fn get_map_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  84 |     pub fn get_map_can_join(&self, player: &Player, map_id: i32, zone_id: i32) -> Option<&Zone> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn is_map_offline(&self, map_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn is_map_cold(&self, map: &Map) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn is_map_ban_do_kho_bau(&self, map_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn is_map_doanh_trai(&self, map_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub fn is_map_ma_bu(&self, map_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn is_map_satan(&self, map_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn get_map_capsule(&self, player: &Player) -> Vec<&Zone> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn get_map_black_ball(&self) -> Vec<&Zone> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn get_map_ma_bu(&self) -> Vec<&Zone> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn get_map_satan(&self) -> Vec<&Zone> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn get_map_by_name(&self, name: &str) -> Option<&Map> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn get_maps_by_planet(&self, planet_id: i32) -> Vec<&Map> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn get_maps_by_type(&self, map_type: i32) -> Vec<&Map> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn can_player_join_map(&self, player: &Player, map_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub fn get_best_zone_for_player(&self, player: &Player, map_id: i32) -> Option<&Zone> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn update_all_maps(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 215 |     pub fn clear_all_maps(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 220 |     pub fn get_map_info(&self, player: &Player, map_id: i32) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/map/map_manager.rs:34:18
[INFO] [stdout]     |
[INFO] [stdout]  13 | impl MapManager {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub async fn get_all_maps(&self) -> Vec<Map> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub async fn get_maps_by_planet(&self, planet_id: i32) -> Vec<Map> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub async fn get_maps_by_type(&self, map_type: i32) -> Vec<Map> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub async fn get_map_by_name(&self, name: &str) -> Option<Map> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub async fn remove_map(&self, map_id: i32) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub async fn get_map_count(&self) -> usize {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub async fn clear_all_maps(&self) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub async fn is_map_exists(&self, map_id: i32) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub async fn get_active_maps(&self) -> Vec<Map> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/map/waypoint.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl WayPoint {
[INFO] [stdout]    | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn contains_position(&self, x: i16, y: i16) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn get_center_position(&self) -> (i16, i16) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn get_area(&self) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn is_valid(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn get_destination_info(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub fn is_enter_waypoint(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn is_offline_waypoint(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub fn can_teleport(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/map/zone.rs:38:18
[INFO] [stdout]     |
[INFO] [stdout]  25 | impl Zone {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  38 |     pub async fn is_empty(&self) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub async fn is_full(&self) -> bool {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub async fn remove_player(&self, player_id: u64) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub async fn get_all_players(&self) -> Vec<Player> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub async fn remove_mob(&self, mob_id: u64) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub async fn get_all_mobs(&self) -> Vec<RtMob> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub async fn add_item(&self, item: ItemMap) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub async fn remove_item(&self, item_id: i32) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub async fn get_all_items(&self) -> Vec<ItemMap> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub async fn get_zone_info(&self) -> ZoneInfo {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn to_zone_info(&self, current_players: i32, mob_count: i32, item_count: i32) -> ZoneInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub async fn send_message_to_other_players(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ZoneInfo` is never constructed
[INFO] [stdout]    --> src/map/zone.rs:442:12
[INFO] [stdout]     |
[INFO] [stdout] 442 | pub struct ZoneInfo {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/map/zone_manager.rs:26:18
[INFO] [stdout]     |
[INFO] [stdout]  11 | impl ZoneManager {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  26 |     pub async fn get_zone(&self, map_id: i32, zone_id: i32) -> Option<Zone> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub async fn get_zones_for_map(&self, map_id: i32) -> Vec<Zone> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub async fn send_message_to_all_players_in_map(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub async fn send_message_to_other_players_in_map(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub async fn get_total_players_in_map(&self, map_id: i32) -> usize {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub async fn get_zone_count_for_map(&self, map_id: i32) -> usize {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub async fn remove_zone(&self, map_id: i32, zone_id: i32) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub async fn clear_zones_for_map(&self, map_id: i32) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub async fn get_all_zones(&self) -> Vec<Zone> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub async fn get_zone_count(&self) -> usize {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ItemMap` is never constructed
[INFO] [stdout]  --> src/map/item_map.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct ItemMap {
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/map/item_map.rs:23:12
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl ItemMap {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout]  23 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub fn is_not_null_item(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn is_null_item(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  68 |     pub fn get_item_name(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  76 |     pub fn get_item_id(&self) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  84 |     pub fn get_quantity(&self) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn set_quantity(&mut self, quantity: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn get_position(&self) -> (i32, i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn set_position(&mut self, x: i32, y: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn get_player_id(&self) -> i64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn set_player_id(&mut self, player_id: i64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn get_clan_id(&self) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn set_clan_id(&mut self, clan_id: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn is_black_ball(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn is_namec_ball(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn get_create_time(&self) -> DateTime<Utc> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn get_last_move_time(&self) -> DateTime<Utc> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn update_last_move_time(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn get_age(&self) -> i64 {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn is_expired(&self, max_age_seconds: i64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub fn update(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     pub fn get_info(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn get_content(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn add_option(&mut self, option: ItemOption) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn get_option_param(&self, option_id: i32) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn has_option(&self, option_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn get_options(&self) -> &Vec<ItemOption> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn clear_options(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn is_black_ball_template(template_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 202 |     pub fn is_namec_ball_template(template_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 209 |     pub fn is_valuable_item(template_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub fn get_item_rarity(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ItemMapService` is never constructed
[INFO] [stdout]   --> src/map/item_map_service.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct ItemMapService {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/map/item_map_service.rs:16:12
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl ItemMapService {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  16 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  24 |     pub fn get_instance() -> &'static mut ItemMapService {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  35 |     pub fn create_item_map(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn get_item_map(&self, item_map_id: i32) -> Option<&ItemMap> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  69 |     pub fn remove_item_map(&mut self, item_map_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     pub fn get_all_item_maps(&self) -> &HashMap<i32, ItemMap> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  79 |     pub fn update_all_item_maps(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn is_black_ball(&self, template_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn is_namec_ball(&self, template_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn get_item_maps_in_area(&self, x: i32, y: i32, radius: i32) -> Vec<&ItemMap> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn get_item_map_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn clear_all_item_maps(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MapUtils` is never constructed
[INFO] [stdout]  --> src/map/map_utils.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct MapUtils;
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/map/map_utils.rs:8:12
[INFO] [stdout]     |
[INFO] [stdout]   7 | impl MapUtils {
[INFO] [stdout]     | ------------- associated functions in this implementation
[INFO] [stdout]   8 |     pub fn calculate_distance(x1: i32, y1: i32, x2: i32, y2: i32) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  14 |     pub fn is_position_in_range(x1: i32, y1: i32, x2: i32, y2: i32, range: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  18 |     pub fn get_random_position_in_map(map: &Map) -> (i16, i16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  30 |     pub fn get_safe_spawn_position(map: &Map) -> (i16, i16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  40 |     pub fn is_safe_position(map: &Map, x: i16, y: i16) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn get_tile_at_position(map: &Map, x: i32, y: i32) -> Option<i32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn find_path_to_target(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn is_direct_path_clear(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn get_players_in_range(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn get_mobs_in_range(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub fn get_items_in_range(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn validate_map_coordinates(map: &Map, x: i16, y: i16) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn get_map_center(map: &Map) -> (i16, i16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn get_map_corners(map: &Map) -> [(i16, i16); 4] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn is_map_full(map: &Map) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn get_map_population(map: &Map) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn get_map_info_string(map: &Map) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]   --> src/map/tile_loader.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout]  5 | impl TileLoader {
[INFO] [stdout]    | --------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn load_tile_data(map_id: i32, tile_id: i32) -> Option<TileData> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn validate_tile_position(tile_data: &TileData, x: i32, y: i32) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn get_tile_at_position(tile_data: &TileData, x: i32, y: i32) -> Option<i32> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn is_walkable_tile(tile_id: i32) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn is_water_tile(tile_id: i32) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn is_wall_tile(tile_id: i32) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn get_tile_type(tile_id: i32) -> TileType {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TileData` is never constructed
[INFO] [stdout]   --> src/map/tile_loader.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct TileData {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TileType` is never used
[INFO] [stdout]   --> src/map/tile_loader.rs:97:10
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub enum TileType {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `info` and `quantity_gd` are never read
[INFO] [stdout]   --> src/item/item.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct Item {
[INFO] [stdout]    |            ---- fields in this struct
[INFO] [stdout]  9 |     pub template: Option<ItemTemplate>,
[INFO] [stdout] 10 |     pub info: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub quantity_gd: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Item` 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 associated items are never used
[INFO] [stdout]    --> src/item/item.rs:32:12
[INFO] [stdout]     |
[INFO] [stdout]  18 | impl Item {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  32 |     pub fn from_template_id(template_id: i32, template: ItemTemplate) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  62 |     pub fn is_null_item(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  67 |     pub fn get_name(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  76 |     pub fn get_template_id(&self) -> Option<i32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn get_type(&self) -> Option<i32> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn get_option_param(&self, option_id: i32) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn has_option(&self, option_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn add_option_param(&mut self, option_id: i32, param: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn sub_option_param(&mut self, option_id: i32, param: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn clone_item(&self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn set_content(&mut self, content: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn can_pha_le_hoa(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn is_skh(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 202 |     pub fn is_trang_bi_an(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn is_dts(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn is_dtl(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     pub fn is_dhd(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     pub fn is_manh_ts(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn is_cong_thuc_vip(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 258 |     pub fn is_cong_thuc_thuong(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     pub fn is_da_nang_cap(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn is_da_may_man(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     pub fn get_icon_id(&self) -> Option<i32> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 285 |     pub fn get_part(&self) -> Option<i32> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 289 |     pub fn get_gold(&self) -> Option<i64> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 293 |     pub fn get_gem(&self) -> Option<i32> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     pub fn get_str_require(&self) -> Option<i32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn can_use(&self, player_str: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub fn get_description(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 314 |     pub fn get_gender(&self) -> Option<i32> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 317 |     pub fn matches_gender(&self, player_gender: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `get_all_item_option_templates` is never used
[INFO] [stdout]   --> src/item/item_dao.rs:17:18
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl ItemDao {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub async fn get_all_item_option_templates(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/item/item_service.rs:22:12
[INFO] [stdout]     |
[INFO] [stdout]  10 | impl ItemService {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  22 |     pub fn get_item_option_template(&self, id: i32) -> Option<ItemOptionTemplate> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  28 |     pub fn get_item_id_by_icon(&self, icon_id: i32) -> Option<i32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub fn create_new_item(&self, template_id: i32) -> Option<Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  48 |     pub fn create_new_item_with_quantity(&self, template_id: i32, quantity: i32) -> Option<Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  58 |     pub fn copy_item(&self, item: &Item) -> Item {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub fn create_item_set_kich_hoat(&self, template_id: i32, quantity: i32) -> Option<Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn create_item_do_huy_diet(&self, template_id: i32, quantity: i32) -> Option<Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub fn random_skh_id(&self, gender: i32) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn option_id_skh(&self, skh_id: i32) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn is_item_activation(&self, _item: &Item) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn get_all_item_templates_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn get_all_item_option_templates_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn can_item_stack(&self, template_id: i32, item_type: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn get_item_template_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn get_item_option_template_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `item_service` is never read
[INFO] [stdout]   --> src/item/item_manager.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct ItemManager {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 14 |     item_templates: Arc<RwLock<HashMap<i32, ItemTemplate>>>,
[INFO] [stdout] 15 |     item_service: ItemService,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/item/item_option.rs:23:12
[INFO] [stdout]     |
[INFO] [stdout]   7 | impl ItemOption {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  23 |     pub fn set_param(&mut self, param: i32) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  27 |     pub fn is_valid(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  31 |     pub fn get_option_name(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn is_combat_option(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  79 |     pub fn is_stat_option(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn is_skill_option(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub fn get_option_type(&self) -> OptionType {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn get_option_rarity(&self) -> OptionRarity {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn is_legendary_option(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn is_epic_option(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn is_rare_option(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn is_uncommon_option(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn is_common_option(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OptionType` is never used
[INFO] [stdout]    --> src/item/item_option.rs:130:10
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub enum OptionType {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OptionRarity` is never used
[INFO] [stdout]    --> src/item/item_option.rs:140:10
[INFO] [stdout]     |
[INFO] [stdout] 140 | pub enum OptionRarity {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/item/inventory.rs:9:9
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct Inventory {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout]  9 |     pub coupon: i32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 10 |     pub event: i32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub items_box_crack_ball: Vec<Item>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 17 |     pub train_armor: Option<Item>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub gift_codes: Vec<String>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub const_limit_gold: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 24 |     pub const_max_items_bag: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 25 |     pub const_max_items_box: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Inventory` 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 methods are never used
[INFO] [stdout]    --> src/item/inventory.rs:48:12
[INFO] [stdout]     |
[INFO] [stdout]  28 | impl Inventory {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  48 |     pub fn get_gem_and_ruby(&self) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn add_gold(&mut self, amount: i64) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn sub_gold(&mut self, amount: i64) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn add_gem(&mut self, amount: i32) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  79 |     pub fn sub_gem(&mut self, amount: i32) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn add_ruby(&mut self, amount: i32) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub fn sub_ruby(&mut self, amount: i32) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn sub_gem_and_ruby(&mut self, amount: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn add_item_bag(&mut self, item: Item) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn add_item_body(&mut self, item: Item) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn add_item_box(&mut self, item: Item) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn remove_item_bag(&mut self, index: usize) -> Option<Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn remove_item_body(&mut self, index: usize) -> Option<Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn remove_item_box(&mut self, index: usize) -> Option<Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn get_item_bag(&self, index: usize) -> Option<&Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub fn get_item_body(&self, index: usize) -> Option<&Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn get_item_box(&self, index: usize) -> Option<&Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn get_item_count_by_id(&self, template_id: i32) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn sub_quantity_item_by_id(&mut self, template_id: i32, quantity: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn is_bag_full(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn is_box_full(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub fn get_bag_item_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn get_body_item_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     pub fn get_box_item_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 233 |     pub fn add_gift_code(&mut self, code: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 238 |     pub fn has_gift_code(&self, code: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 243 |     pub fn clear_all_items(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn dispose(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InventoryService` is never constructed
[INFO] [stdout]  --> src/item/inventory_service.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct InventoryService {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/item/inventory_service.rs:12:12
[INFO] [stdout]     |
[INFO] [stdout]  11 | impl InventoryService {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout]  12 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  18 |     pub fn get_instance() -> &'static mut InventoryService {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  29 |     pub fn init(&mut self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  35 |     pub fn is_initialized(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  40 |     pub fn add_item_to_bag(&self, inventory: &mut Inventory, item: Item) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  45 |     pub fn add_item_to_body(&self, inventory: &mut Inventory, item: Item) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn add_item_to_box(&self, inventory: &mut Inventory, item: Item) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  55 |     pub fn remove_item_from_bag(&self, inventory: &mut Inventory, index: usize) -> Option<Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub fn remove_item_from_body(&self, inventory: &mut Inventory, index: usize) -> Option<Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  65 |     pub fn remove_item_from_box(&self, inventory: &mut Inventory, index: usize) -> Option<Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn get_item_from_bag<'a>(&self, inventory: &'a Inventory, index: usize) -> Option<&'a Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn get_item_from_body<'a>(&self, inventory: &'a Inventory, index: usize) -> Option<&'a Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn get_item_from_box<'a>(&self, inventory: &'a Inventory, index: usize) -> Option<&'a Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn get_item_count_by_id(&self, inventory: &Inventory, template_id: i32) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub fn sub_quantity_item_by_id(&self, inventory: &mut Inventory, template_id: i32, quantity: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub fn add_gold(&self, inventory: &mut Inventory, amount: i64) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn sub_gold(&self, inventory: &mut Inventory, amount: i64) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn add_gem(&self, inventory: &mut Inventory, amount: i32) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn sub_gem(&self, inventory: &mut Inventory, amount: i32) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn add_ruby(&self, inventory: &mut Inventory, amount: i32) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn sub_ruby(&self, inventory: &mut Inventory, amount: i32) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn sub_gem_and_ruby(&self, inventory: &mut Inventory, amount: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn is_bag_full(&self, inventory: &Inventory) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn is_box_full(&self, inventory: &Inventory) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn get_bag_item_count(&self, inventory: &Inventory) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn get_body_item_count(&self, inventory: &Inventory) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn get_box_item_count(&self, inventory: &Inventory) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn add_gift_code(&self, inventory: &mut Inventory, code: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub fn has_gift_code(&self, inventory: &Inventory, code: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn clear_all_items(&self, inventory: &mut Inventory) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn dispose_inventory(&self, inventory: &mut Inventory) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn find_item_index_in_bag(&self, inventory: &Inventory, target_item: &Item) -> Option<usize> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn has_item(&self, inventory: &Inventory, template_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn has_enough_items(&self, inventory: &Inventory, template_id: i32, quantity: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/item/item_time.rs:7:9
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct ItemTime {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout]  6 |     // Basic time constants
[INFO] [stdout]  7 |     pub const_time_item: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout]  8 |     pub const_time_open_power: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub is_use_bo_huyet: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 12 |     pub is_use_bo_khi: bool,            
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 13 |     pub is_use_giap_xen: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 14 |     pub is_use_cuong_no: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 15 |     pub is_use_an_danh: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub last_time_bo_huyet: DateTime<Utc>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 19 |     pub last_time_bo_khi: DateTime<Utc>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 20 |     pub last_time_giap_xen: DateTime<Utc>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 21 |     pub last_time_cuong_no: DateTime<Utc>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 22 |     pub last_time_an_danh: DateTime<Utc>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ItemTime` 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 associated items are never used
[INFO] [stdout]    --> src/item/item_time.rs:26:12
[INFO] [stdout]     |
[INFO] [stdout]  25 | impl ItemTime {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout]  26 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  47 |     pub fn update(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     fn can_do_with_time(&self, last_time: DateTime<Utc>, required_duration: i64) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn use_bo_huyet(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn use_bo_khi(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn use_giap_xen(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn use_cuong_no(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn use_an_danh(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `player_item_times` is never read
[INFO] [stdout]  --> src/item/item_time_service.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct ItemTimeService {
[INFO] [stdout]   |            --------------- field in this struct
[INFO] [stdout] 6 |     player_item_times: HashMap<i64, ItemTime>, // player_id -> ItemTime
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_player_item_time`, `update_all_item_times`, `remove_player_item_time`, `get_player_count`, and `clear_all_item_times` are never used
[INFO] [stdout]   --> src/item/item_time_service.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl ItemTimeService {
[INFO] [stdout]    | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub fn get_player_item_time(&mut self, player_id: i64) -> &mut ItemTime {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn update_all_item_times(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn remove_player_item_time(&mut self, player_id: i64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn get_player_count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn clear_all_item_times(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ItemUtils` is never constructed
[INFO] [stdout]  --> src/item/item_utils.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ItemUtils;
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/item/item_utils.rs:7:12
[INFO] [stdout]     |
[INFO] [stdout]   6 | impl ItemUtils {
[INFO] [stdout]     | -------------- associated functions in this implementation
[INFO] [stdout]   7 |     pub fn calculate_item_value(item: &Item) -> i64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  19 |     pub fn calculate_option_value(options: &[ItemOption]) -> i64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  36 |     pub fn get_item_rarity(item: &Item) -> ItemRarity {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn is_equipment(item: &Item) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     pub fn is_consumable(item: &Item) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  68 |     pub fn is_material(item: &Item) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub fn can_stack(item: &Item) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn get_max_stack_size(item: &Item) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn can_combine_items(item1: &Item, item2: &Item) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn combine_items(item1: &Item, item2: &Item) -> Option<Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn split_item(item: &Item, split_quantity: i32) -> Option<(Item, Item)> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn get_item_requirements(item: &Item) -> ItemRequirements {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn can_use_item(item: &Item, player_level: i32, player_gender: i32, player_class: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn get_item_effect_description(item: &Item) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     pub fn get_item_trade_info(item: &Item) -> ItemTradeInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ItemRarity` is never used
[INFO] [stdout]    --> src/item/item_utils.rs:202:10
[INFO] [stdout]     |
[INFO] [stdout] 202 | pub enum ItemRarity {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ItemRequirements` is never constructed
[INFO] [stdout]    --> src/item/item_utils.rs:211:12
[INFO] [stdout]     |
[INFO] [stdout] 211 | pub struct ItemRequirements {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ItemTradeInfo` is never constructed
[INFO] [stdout]    --> src/item/item_utils.rs:218:12
[INFO] [stdout]     |
[INFO] [stdout] 218 | pub struct ItemTradeInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ItemValidator` is never constructed
[INFO] [stdout]  --> src/item/item_validator.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ItemValidator;
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/item/item_validator.rs:7:12
[INFO] [stdout]     |
[INFO] [stdout]   6 | impl ItemValidator {
[INFO] [stdout]     | ------------------ associated functions in this implementation
[INFO] [stdout]   7 |     pub fn validate_item(item: &Item) -> ValidationResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  56 |     pub fn validate_item_option(option: &ItemOption) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn is_valid_option_id(option_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn get_max_param_for_option(option_id: i32) -> Option<i32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn get_max_stack_size_for_template(template_id: i32) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn validate_item_name(name: &str) -> ValidationResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn validate_item_price(price: i32) -> ValidationResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn validate_item_level(level: i32) -> ValidationResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 185 |     pub fn can_item_be_equipped(item: &Item, player_level: i32, player_gender: i32, player_class: i32) -> ValidationResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn is_equipment_type(item_type: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 212 |     pub fn is_consumable_type(item_type: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub fn is_material_type(item_type: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ValidationResult` is never constructed
[INFO] [stdout]    --> src/item/item_validator.rs:222:12
[INFO] [stdout]     |
[INFO] [stdout] 222 | pub struct ValidationResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/item/item_validator.rs:229:12
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl ValidationResult {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 229 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     pub fn add_error(&mut self, error: String) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     pub fn add_warning(&mut self, warning: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 246 |     pub fn has_errors(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 250 |     pub fn has_warnings(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn get_error_summary(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 262 |     pub fn get_warning_summary(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `player` and `send_player_info` are never used
[INFO] [stdout]    --> src/services/player_info_service.rs:11:18
[INFO] [stdout]     |
[INFO] [stdout]  10 | impl PlayerInfoService {
[INFO] [stdout]     | ---------------------- associated functions in this implementation
[INFO] [stdout]  11 |     pub async fn player(
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 350 |     pub async fn send_player_info(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `item_templates`, `item_option_templates_by_id`, `item_time_service`, and `npc_manager` are never read
[INFO] [stdout]   --> src/services/manager.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct Manager {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub item_templates:Vec<item_template::Model>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub item_option_templates_by_id: HashMap<i32, item_option_template::Model>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub item_time_service: ItemTimeService,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 50 |     pub npc_service: NpcService,
[INFO] [stdout] 51 |     pub npc_manager: NpcManager,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/services/manager.rs:341:12
[INFO] [stdout]     |
[INFO] [stdout]  55 | impl Manager {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 341 |     pub fn get_item_templates(&self) -> &Vec<item_template::Model> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 344 |     pub fn get_intrinsic_templates(&self) -> &Vec<intrinsic::Model> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub fn get_intrinsic_template_by_id(&self, id: i32) -> Option<&intrinsic::Model> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |     pub fn get_mob_service(&self) -> &MobService {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 355 |     pub fn get_item_time_service(&self) -> &ItemTimeService {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 359 |     pub fn get_npc_service(&self) -> &NpcService {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 363 |     pub fn get_npc_manager(&self) -> &NpcManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `maintenance`, `server_open_time`, and `maintenance_message` are never read
[INFO] [stdout]   --> src/services/god_gk.rs:9:9
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct GodGK {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout]  8 |     pub db: Option<Database>,
[INFO] [stdout]  9 |     pub maintenance: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 10 |     pub server_open_time: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     pub maintenance_message: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `login_god_gk`, `get_player_by_account`, `create_new_player`, and `update_account_last_login` are never used
[INFO] [stdout]    --> src/services/god_gk.rs:32:18
[INFO] [stdout]     |
[INFO] [stdout]  14 | impl GodGK {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  32 |     pub async fn login_god_gk(&self, username: &str, password: &str) -> Result<Option<account::Model>, DbErr> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub async fn get_player_by_account(&self, account_id: i32) -> Result<Option<player::Model>, DbErr> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  62 |     pub async fn create_new_player(&self, account_id: i32, name: &str, gender: i32) -> Result<player::Model, DbErr> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub async fn update_account_last_login(&self, account_id: i32) -> Result<account::Model, DbErr> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ServiceHandles` is never constructed
[INFO] [stdout]  --> src/services/services.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ServiceHandles {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_all_services` is never used
[INFO] [stdout]   --> src/services/services.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn spawn_all_services() -> ServiceHandles {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/services/intrinsic_service.rs:11:11
[INFO] [stdout]     |
[INFO] [stdout]  10 | impl IntrinsicService {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout]  11 |     const COST_OPEN: [i32; 8] = [10, 20, 40, 80, 160, 320, 640, 1280];
[INFO] [stdout]     |           ^^^^^^^^^
[INFO] [stdout]  12 |
[INFO] [stdout]  13 |     pub fn get_intrinsics(&self, player_gender: u8) -> Vec<Intrinsic> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  25 |     pub fn get_intrinsic_by_id(&self, id: i32) -> Option<Intrinsic> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  47 |     pub async fn show_all_intrinsic(&self, session: &mut AsyncSession, player_gender: u8) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub async fn show_menu(&self, _session: &mut AsyncSession) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub async fn show_confirm_open(&self, _session: &mut AsyncSession, count_open: u8) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub async fn show_confirm_open_vip(&self, _session: &mut AsyncSession) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     fn change_intrinsic(&self, player_intrinsic: &mut IntrinsicPlayer, player_gender: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn open(&self, player_intrinsic: &mut IntrinsicPlayer, player_gender: u8, player_power: i64, player_gold: i64) -> Result<St...
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn open_vip(&self, player_intrinsic: &mut IntrinsicPlayer, player_gender: u8, player_power: i64, player_gem: i32) -> Result...
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `send_to_other_players` and `send_to_player` are never used
[INFO] [stdout]   --> src/services/message_service.rs:21:18
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl MessageService {
[INFO] [stdout]    | ------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub async fn send_to_other_players(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub async fn send_to_player(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `create_zone`, `get_zone`, `get_best_zone`, `send_message_to_all_players_in_map`, `send_message_to_other_players_in_map`, and `get_total_players_in_map` are never used
[INFO] [stdout]   --> src/services/zone_service.rs:22:18
[INFO] [stdout]    |
[INFO] [stdout]  8 | impl ZoneService {
[INFO] [stdout]    | ---------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub async fn create_zone(map_id: i32, zone_id: i32, max_player: i32) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]    |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub async fn get_zone(map_id: i32, zone_id: i32) -> Option<Zone> {
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub async fn get_best_zone(map_id: i32) -> Option<Zone> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub async fn send_message_to_all_players_in_map(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub async fn send_message_to_other_players_in_map(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub async fn get_total_players_in_map(map_id: i32) -> usize {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `class_id` is never read
[INFO] [stdout]   --> src/data/data_game.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct SkillTemplate {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] 32 |     pub id: i8,
[INFO] [stdout] 33 |     pub class_id: i32,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SkillTemplate` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `send_skill_data`, `send_item_data`, `update_item`, and `send_client_ok` are never used
[INFO] [stdout]    --> src/data/data_game.rs:448:18
[INFO] [stdout]     |
[INFO] [stdout]  52 | impl DataGame {
[INFO] [stdout]     | ------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 448 |     pub async fn send_skill_data(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 457 |     pub async fn send_item_data(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 492 |     pub async fn update_item(session: &mut AsyncSession) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 518 |     pub async fn send_client_ok(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AntiLogin` is never constructed
[INFO] [stdout]  --> src/data/game_session.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct AntiLogin {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `can_login`, `wrong`, `reset`, and `get_notify_cannot_login` are never used
[INFO] [stdout]   --> src/data/game_session.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl AntiLogin {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 10 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub fn can_login(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn wrong(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn reset(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn get_notify_cannot_login(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WayPoint` is never constructed
[INFO] [stdout]  --> src/data/waypoint.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct WayPoint {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/data/waypoint.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl WayPoint {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 17 |     pub fn new(id: i32, map_id: i32, min_x: i32, max_x: i32, min_y: i32, max_y: i32, 
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn is_in_area(&self, x: i32, y: i32) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn get_center(&self) -> (i32, i32) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn get_width(&self) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn get_height(&self) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn is_valid(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn get_destination_info(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Skill` is never constructed
[INFO] [stdout]  --> src/models/skill_model.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct Skill {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/models/skill_model.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl Skill {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] 11 |     pub fn new(id: i16) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `param_from_2`, `param_to_2`, and `gender` are never read
[INFO] [stdout]   --> src/models/intrinsic.rs:9:9
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub struct Intrinsic {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout]  9 |     pub param_from_2: i16,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 10 |     pub param_to_2: i16,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 11 |     pub icon: i16,
[INFO] [stdout] 12 |     pub gender: i8,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Intrinsic` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_entity`, `from_intrinsic`, and `get_description` are never used
[INFO] [stdout]   --> src/models/intrinsic.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl Intrinsic {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn from_entity(entity: &IntrinsicEntity) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn from_intrinsic(other: &Intrinsic) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn get_description(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `count_open` is never read
[INFO] [stdout]   --> src/models/intrinsic.rs:88:9
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub struct IntrinsicPlayer {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] 88 |     pub count_open: u8,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IntrinsicPlayer` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `dispose` is never used
[INFO] [stdout]    --> src/models/intrinsic.rs:100:12
[INFO] [stdout]     |
[INFO] [stdout]  92 | impl IntrinsicPlayer {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn dispose(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_placeholder`, `new_sync`, and `get_account_by_id` are never used
[INFO] [stdout]   --> src/utils/database.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Database {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub fn new_placeholder() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn new_sync() -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub async fn get_account_by_id(&self, id: i32) -> Result<Option<account::Model>, DbErr> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_map` and `update` are never used
[INFO] [stdout]   --> src/utils/location.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Location {
[INFO] [stdout]    | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn get_map(&self) -> (u32, u32) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn update(&mut self) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TaskMain` is never constructed
[INFO] [stdout]  --> src/features/task_player.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct TaskMain {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TaskPlayer` is never constructed
[INFO] [stdout]   --> src/features/task_player.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct TaskPlayer {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/features/task_player.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl TaskPlayer {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 16 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SideTaskTemplate` is never constructed
[INFO] [stdout]  --> src/features/side_task_template.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct SideTaskTemplate {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]  --> src/features/side_task_template.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | impl SideTaskTemplate {
[INFO] [stdout]   | --------------------- associated function in this implementation
[INFO] [stdout] 9 |     pub fn new(id: i32, name: String) -> Self {
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OptionCard` is never constructed
[INFO] [stdout]  --> src/features/option_card.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct OptionCard {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `npc_id`, `npc_say`, and `menu_select` are never read
[INFO] [stdout]  --> src/npc/npc.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct BaseMenu {
[INFO] [stdout]   |            -------- fields in this struct
[INFO] [stdout] 7 |     pub npc_id: i32,
[INFO] [stdout]   |         ^^^^^^
[INFO] [stdout] 8 |     pub npc_say: String,
[INFO] [stdout]   |         ^^^^^^^
[INFO] [stdout] 9 |     pub menu_select: Vec<String>,
[INFO] [stdout]   |         ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `BaseMenu` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_menu_count`, and `get_menu_option` are never used
[INFO] [stdout]   --> src/npc/npc.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl BaseMenu {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 13 |     pub fn new(npc_id: i32, npc_say: String, menu_select: Vec<String>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn get_menu_count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn get_menu_option(&self, index: usize) -> Option<&String> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/npc/npc.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct Npc {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] 33 |     pub map_id: i32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 34 |     pub status: i32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 35 |     pub location: Location,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 36 |     pub temp_id: i32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 37 |     pub avatar: i32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 38 |     pub base_menu: Option<BaseMenu>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 39 |     pub create_time: DateTime<Utc>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Npc` 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 associated items are never used
[INFO] [stdout]    --> src/npc/npc.rs:44:12
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl Npc {
[INFO] [stdout]     | -------- associated items in this implementation
[INFO] [stdout]  43 |     /// Create new NPC
[INFO] [stdout]  44 |     pub fn new(map_id: i32, status: i32, x: i32, y: i32, temp_id: i32, avatar: i32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub fn from_template(template: &NpcTemplate, map_id: i32, x: i32, y: i32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn init_base_menu(&mut self, text: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn get_name(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn get_position(&self) -> (i16, i16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn set_position(&mut self, x: i32, y: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn has_menu(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn get_base_menu(&self) -> Option<&BaseMenu> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn can_open_npc(&self, _player_id: i64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn update(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn is_in_range(&self, player_x: i32, player_y: i32, range: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `npcs` and `npcs_by_map` are never read
[INFO] [stdout]    --> src/npc/npc.rs:140:5
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub struct NpcManager {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout] 140 |     npcs: HashMap<i32, Npc>, // npc_id -> Npc
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 141 |     npcs_by_map: HashMap<i32, Vec<i32>>, // map_id -> Vec<npc_id>
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/npc/npc.rs:155:12
[INFO] [stdout]     |
[INFO] [stdout] 144 | impl NpcManager {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn add_npc(&mut self, npc: Npc) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn get_npc(&self, npc_id: i32) -> Option<&Npc> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn get_npc_by_id_and_map(&self, npc_id: i32, map_id: i32) -> Option<&Npc> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn get_npcs_by_map(&self, map_id: i32) -> Vec<&Npc> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn remove_npc(&mut self, npc_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |     pub fn update_all_npcs(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn get_npc_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn clear_all_npcs(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NpcFactory` is never constructed
[INFO] [stdout]  --> src/npc/npc_factory.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct NpcFactory;
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `create_basic_npc`, `create_shop_npc`, `create_quest_npc`, and `create_npc_with_menu` are never used
[INFO] [stdout]   --> src/npc/npc_factory.rs:6:12
[INFO] [stdout]    |
[INFO] [stdout]  5 | impl NpcFactory {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout]  6 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 10 |     pub fn create_basic_npc(&self, template_id: i32, map_id: i32, x: i32, y: i32) -> Option<Npc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn create_shop_npc(&self, template_id: i32, map_id: i32, x: i32, y: i32) -> Option<Npc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn create_quest_npc(&self, template_id: i32, map_id: i32, x: i32, y: i32) -> Option<Npc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn create_npc_with_menu(&self, template_id: i32, map_id: i32, x: i32, y: i32, menu_text: &str) -> Option<Npc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/npc/npc_service.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl NpcService {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn get_template(&self, id: i32) -> Option<&NpcTemplate> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn create_npc(&self, template_id: i32, map_id: i32, x: i32, y: i32) -> Option<Npc> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn create_base_menu(&self, npc_id: i32, npc_say: &str, menu_options: Vec<String>) -> BaseMenu {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn create_simple_menu(&self, npc_id: i32, npc_say: &str, menu_options: &[&str]) -> BaseMenu {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn get_npcs_in_range<'a>(&self, npcs: &'a [Npc], player_x: i32, player_y: i32, range: i32) -> Vec<&'a Npc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn get_all_templates(&self) -> &HashMap<i32, NpcTemplate> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn get_template_count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `body_items_sent`
[INFO] [stdout]    --> src/services/player_info_service.rs:230:13
[INFO] [stdout]     |
[INFO] [stdout] 230 |         let mut body_items_sent = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_body_items_sent`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `index`
[INFO] [stdout]    --> src/services/player_info_service.rs:231:14
[INFO] [stdout]     |
[INFO] [stdout] 231 |         for (index, item) in player.inventory.items_body.iter().take(body_len as usize).enumerate() {
[INFO] [stdout]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `bag_items_sent` is assigned to, but never used
[INFO] [stdout]    --> src/services/player_info_service.rs:254:13
[INFO] [stdout]     |
[INFO] [stdout] 254 |         let mut bag_items_sent = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_bag_items_sent` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `index`
[INFO] [stdout]    --> src/services/player_info_service.rs:255:14
[INFO] [stdout]     |
[INFO] [stdout] 255 |         for (index, item) in player.inventory.items_bag.iter().take(bag_len as usize).enumerate() {
[INFO] [stdout]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `box_items_sent`
[INFO] [stdout]    --> src/services/player_info_service.rs:279:13
[INFO] [stdout]     |
[INFO] [stdout] 279 |         let mut box_items_sent = 0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_box_items_sent`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `index`
[INFO] [stdout]    --> src/services/player_info_service.rs:280:14
[INFO] [stdout]     |
[INFO] [stdout] 280 |         for (index, item) in player.inventory.items_box.iter().take(box_len as usize).enumerate() {
[INFO] [stdout]     |              ^^^^^ help: if this is intentional, prefix it with an underscore: `_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `bag_items_sent` is never read
[INFO] [stdout]    --> src/services/player_info_service.rs:261:21
[INFO] [stdout]     |
[INFO] [stdout] 261 |                     bag_items_sent += 1;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/map/map_service.rs:24:16
[INFO] [stdout]    |
[INFO] [stdout] 24 |             if INSTANCE.is_none() {
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/map/map_service.rs:27:13
[INFO] [stdout]    |
[INFO] [stdout] 27 |             INSTANCE.as_mut().unwrap()
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `Future` that must be used
[INFO] [stdout]    --> src/map/map_service.rs:210:13
[INFO] [stdout]     |
[INFO] [stdout] 210 |             map.update();
[INFO] [stdout]     |             ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/map/item_map_service.rs:27:16
[INFO] [stdout]    |
[INFO] [stdout] 27 |             if INSTANCE.is_none() {
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/map/item_map_service.rs:30:13
[INFO] [stdout]    |
[INFO] [stdout] 30 |             INSTANCE.as_mut().unwrap()
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/item/inventory_service.rs:21:16
[INFO] [stdout]    |
[INFO] [stdout] 21 |             if INSTANCE.is_none() {
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/item/inventory_service.rs:24:13
[INFO] [stdout]    |
[INFO] [stdout] 24 |             INSTANCE.as_mut().unwrap()
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hi`
[INFO] [stdout]    --> src/data/data_game.rs:424:21
[INFO] [stdout]     |
[INFO] [stdout] 424 |                 let hi = ((payload_len as u16) >> 8) as u8;
[INFO] [stdout]     |                     ^^ help: if this is intentional, prefix it with an underscore: `_hi`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lo`
[INFO] [stdout]    --> src/data/data_game.rs:425:21
[INFO] [stdout]     |
[INFO] [stdout] 425 |                 let lo = (payload_len as u16 & 0xFF) as u8;
[INFO] [stdout]     |                     ^^ help: if this is intentional, prefix it with an underscore: `_lo`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `flag`
[INFO] [stdout]    --> src/network/async_net/controller.rs:539:13
[INFO] [stdout]     |
[INFO] [stdout] 539 |         let flag = data[offset];
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_flag`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `msg`
[INFO] [stdout]    --> src/player/player_service.rs:102:64
[INFO] [stdout]     |
[INFO] [stdout] 102 |     pub async fn send_message_to_player(&self, player_id: u64, msg: Message) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |                                                                ^^^ help: if this is intentional, prefix it with an underscore: `_msg`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player`
[INFO] [stdout]    --> src/player/player_service.rs:103:21
[INFO] [stdout]     |
[INFO] [stdout] 103 |         if let Some(player) = self.get_player(player_id).await {
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_player`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `database`
[INFO] [stdout]   --> src/mob/mob_dao.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 40 |         database: &DatabaseConnection,
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_database`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mob`
[INFO] [stdout]   --> src/mob/mob_dao.rs:41:9
[INFO] [stdout]    |
[INFO] [stdout] 41 |         mob: &RtMob,
[INFO] [stdout]    |         ^^^ help: if this is intentional, prefix it with an underscore: `_mob`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `database`
[INFO] [stdout]   --> src/mob/mob_dao.rs:49:9
[INFO] [stdout]    |
[INFO] [stdout] 49 |         database: &DatabaseConnection,
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_database`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mob_id`
[INFO] [stdout]   --> src/mob/mob_dao.rs:50:9
[INFO] [stdout]    |
[INFO] [stdout] 50 |         mob_id: u64,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_mob_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `zone`
[INFO] [stdout]    --> src/map/map.rs:157:13
[INFO] [stdout]     |
[INFO] [stdout] 157 |         for zone in zones.iter() {
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_zone`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mob`
[INFO] [stdout]    --> src/map/zone.rs:119:13
[INFO] [stdout]     |
[INFO] [stdout] 119 |         for mob in mobs.iter_mut() {
[INFO] [stdout]     |             ^^^ help: if this is intentional, prefix it with an underscore: `_mob`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `item`
[INFO] [stdout]    --> src/map/zone.rs:126:13
[INFO] [stdout]     |
[INFO] [stdout] 126 |         for item in items.iter_mut() {
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_item`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `database`
[INFO] [stdout]   --> src/map/map_dao.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 29 |         database: &DatabaseConnection,
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_database`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map`
[INFO] [stdout]   --> src/map/map_service.rs:44:21
[INFO] [stdout]    |
[INFO] [stdout] 44 |         if let Some(map) = self.get_map_by_id(player.map_id as i32) {
[INFO] [stdout]    |                     ^^^ help: if this is intentional, prefix it with an underscore: `_map`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player`
[INFO] [stdout]   --> src/map/map_service.rs:84:36
[INFO] [stdout]    |
[INFO] [stdout] 84 |     pub fn get_map_can_join(&self, player: &Player, map_id: i32, zone_id: i32) -> Option<&Zone> {
[INFO] [stdout]    |                                    ^^^^^^ help: if this is intentional, prefix it with an underscore: `_player`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map`
[INFO] [stdout]   --> src/map/map_service.rs:85:21
[INFO] [stdout]    |
[INFO] [stdout] 85 |         if let Some(map) = self.get_map_by_id(map_id) {
[INFO] [stdout]    |                     ^^^ help: if this is intentional, prefix it with an underscore: `_map`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map_id`
[INFO] [stdout]    --> src/map/map_service.rs:100:34
[INFO] [stdout]     |
[INFO] [stdout] 100 |     pub fn is_map_offline(&self, map_id: i32) -> bool {
[INFO] [stdout]     |                                  ^^^^^^ help: if this is intentional, prefix it with an underscore: `_map_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map`
[INFO] [stdout]    --> src/map/map_service.rs:107:31
[INFO] [stdout]     |
[INFO] [stdout] 107 |     pub fn is_map_cold(&self, map: &Map) -> bool {
[INFO] [stdout]     |                               ^^^ help: if this is intentional, prefix it with an underscore: `_map`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map_id`
[INFO] [stdout]    --> src/map/map_service.rs:114:41
[INFO] [stdout]     |
[INFO] [stdout] 114 |     pub fn is_map_ban_do_kho_bau(&self, map_id: i32) -> bool {
[INFO] [stdout]     |                                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_map_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map_id`
[INFO] [stdout]    --> src/map/map_service.rs:120:37
[INFO] [stdout]     |
[INFO] [stdout] 120 |     pub fn is_map_doanh_trai(&self, map_id: i32) -> bool {
[INFO] [stdout]     |                                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_map_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map_id`
[INFO] [stdout]    --> src/map/map_service.rs:126:32
[INFO] [stdout]     |
[INFO] [stdout] 126 |     pub fn is_map_ma_bu(&self, map_id: i32) -> bool {
[INFO] [stdout]     |                                ^^^^^^ help: if this is intentional, prefix it with an underscore: `_map_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map_id`
[INFO] [stdout]    --> src/map/map_service.rs:132:32
[INFO] [stdout]     |
[INFO] [stdout] 132 |     pub fn is_map_satan(&self, map_id: i32) -> bool {
[INFO] [stdout]     |                                ^^^^^^ help: if this is intentional, prefix it with an underscore: `_map_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player`
[INFO] [stdout]    --> src/map/map_service.rs:138:35
[INFO] [stdout]     |
[INFO] [stdout] 138 |     pub fn get_map_capsule(&self, player: &Player) -> Vec<&Zone> {
[INFO] [stdout]     |                                   ^^^^^^ help: if this is intentional, prefix it with an underscore: `_player`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player`
[INFO] [stdout]    --> src/map/map_service.rs:186:39
[INFO] [stdout]     |
[INFO] [stdout] 186 |     pub fn can_player_join_map(&self, player: &Player, map_id: i32) -> bool {
[INFO] [stdout]     |                                       ^^^^^^ help: if this is intentional, prefix it with an underscore: `_player`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map`
[INFO] [stdout]    --> src/map/map_service.rs:187:21
[INFO] [stdout]     |
[INFO] [stdout] 187 |         if let Some(map) = self.get_map_by_id(map_id) {
[INFO] [stdout]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_map`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player`
[INFO] [stdout]    --> src/map/map_service.rs:197:44
[INFO] [stdout]     |
[INFO] [stdout] 197 |     pub fn get_best_zone_for_player(&self, player: &Player, map_id: i32) -> Option<&Zone> {
[INFO] [stdout]     |                                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_player`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map`
[INFO] [stdout]    --> src/map/map_service.rs:198:21
[INFO] [stdout]     |
[INFO] [stdout] 198 |         if let Some(map) = self.get_map_by_id(map_id) {
[INFO] [stdout]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_map`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player`
[INFO] [stdout]    --> src/map/map_service.rs:220:32
[INFO] [stdout]     |
[INFO] [stdout] 220 |     pub fn get_map_info(&self, player: &Player, map_id: i32) -> Option<String> {
[INFO] [stdout]     |                                ^^^^^^ help: if this is intentional, prefix it with an underscore: `_player`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `zone`
[INFO] [stdout]    --> src/map/map_utils.rs:108:9
[INFO] [stdout]     |
[INFO] [stdout] 108 |         zone: &Zone,
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_zone`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `center_x`
[INFO] [stdout]    --> src/map/map_utils.rs:109:9
[INFO] [stdout]     |
[INFO] [stdout] 109 |         center_x: i16,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_center_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `center_y`
[INFO] [stdout]    --> src/map/map_utils.rs:110:9
[INFO] [stdout]     |
[INFO] [stdout] 110 |         center_y: i16,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_center_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `range`
[INFO] [stdout]    --> src/map/map_utils.rs:111:9
[INFO] [stdout]     |
[INFO] [stdout] 111 |         range: i32,
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `zone`
[INFO] [stdout]    --> src/map/map_utils.rs:118:9
[INFO] [stdout]     |
[INFO] [stdout] 118 |         zone: &Zone,
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_zone`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `center_x`
[INFO] [stdout]    --> src/map/map_utils.rs:119:9
[INFO] [stdout]     |
[INFO] [stdout] 119 |         center_x: i16,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_center_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `center_y`
[INFO] [stdout]    --> src/map/map_utils.rs:120:9
[INFO] [stdout]     |
[INFO] [stdout] 120 |         center_y: i16,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_center_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `range`
[INFO] [stdout]    --> src/map/map_utils.rs:121:9
[INFO] [stdout]     |
[INFO] [stdout] 121 |         range: i32,
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `zone`
[INFO] [stdout]    --> src/map/map_utils.rs:128:9
[INFO] [stdout]     |
[INFO] [stdout] 128 |         zone: &Zone,
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_zone`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `center_x`
[INFO] [stdout]    --> src/map/map_utils.rs:129:9
[INFO] [stdout]     |
[INFO] [stdout] 129 |         center_x: i16,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_center_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `center_y`
[INFO] [stdout]    --> src/map/map_utils.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 130 |         center_y: i16,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_center_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `range`
[INFO] [stdout]    --> src/map/map_utils.rs:131:9
[INFO] [stdout]     |
[INFO] [stdout] 131 |         range: i32,
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_range`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map`
[INFO] [stdout]    --> src/map/map_utils.rs:154:24
[INFO] [stdout]     |
[INFO] [stdout] 154 |     pub fn is_map_full(map: &Map) -> bool {
[INFO] [stdout]     |                        ^^^ help: if this is intentional, prefix it with an underscore: `_map`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `map`
[INFO] [stdout]    --> src/map/map_utils.rs:159:31
[INFO] [stdout]     |
[INFO] [stdout] 159 |     pub fn get_map_population(map: &Map) -> usize {
[INFO] [stdout]     |                               ^^^ help: if this is intentional, prefix it with an underscore: `_map`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `template_id`
[INFO] [stdout]   --> src/item/item.rs:32:29
[INFO] [stdout]    |
[INFO] [stdout] 32 |     pub fn from_template_id(template_id: i32, template: ItemTemplate) -> Self {
[INFO] [stdout]    |                             ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_template_id`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/item/item_validator.rs:105:13
[INFO] [stdout]     |
[INFO] [stdout] 103 |             537..=542 => 999, // Stackable items
[INFO] [stdout]     |             --------- matches all the relevant values
[INFO] [stdout] 104 |             2069 => 999, // Stackable item
[INFO] [stdout] 105 |             540 => 999, // Stackable item
[INFO] [stdout]     |             ^^^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/item/item_validator.rs:187:13
[INFO] [stdout]     |
[INFO] [stdout] 187 |         let mut warnings = Vec::new();
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player_level`
[INFO] [stdout]    --> src/item/item_validator.rs:185:46
[INFO] [stdout]     |
[INFO] [stdout] 185 |     pub fn can_item_be_equipped(item: &Item, player_level: i32, player_gender: i32, player_class: i32) -> ValidationResult {
[INFO] [stdout]     |                                              ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_player_level`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player_class`
[INFO] [stdout]    --> src/item/item_validator.rs:185:85
[INFO] [stdout]     |
[INFO] [stdout] 185 |     pub fn can_item_be_equipped(item: &Item, player_level: i32, player_gender: i32, player_class: i32) -> ValidationResult {
[INFO] [stdout]     |                                                                                     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_player_class`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `session`
[INFO] [stdout]   --> src/services/player_info_service.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 12 |         session: &mut AsyncSession,
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_session`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player`
[INFO] [stdout]   --> src/services/player_info_service.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |         player: &RtPlayer,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_player`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `is_admin` and `vnd` are never read
[INFO] [stdout]   --> src/network/async_net/session.rs:19:9
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct AsyncSession {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub is_admin: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 20 |     pub version: i32,
[INFO] [stdout] 21 |     pub vnd: i32,
[INFO] [stdout]    |         ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_key`, `get_player_mut`, `set_admin`, `is_admin`, `set_vnd`, and `get_vnd` are never used
[INFO] [stdout]    --> src/network/async_net/session.rs:50:12
[INFO] [stdout]     |
[INFO] [stdout]  24 | impl AsyncSession {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn get_key(&self) -> &[u8] {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 185 |     pub fn get_player_mut(&mut self) -> Option<&mut RtPlayer> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 210 |     pub fn set_admin(&mut self, is_admin: bool) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 214 |     pub fn is_admin(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 226 |     pub fn set_vnd(&mut self, vnd: i32) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     pub fn get_vnd(&self) -> i32 {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `send_welcome_message` is never used
[INFO] [stdout]    --> src/network/async_net/controller.rs:353:14
[INFO] [stdout]     |
[INFO] [stdout]  14 | impl AsyncController {
[INFO] [stdout]     | -------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 353 |     async fn send_welcome_message(session: &mut AsyncSession) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/network/async_net/message.rs:43:12
[INFO] [stdout]     |
[INFO] [stdout]  11 | impl Message {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub fn read(&mut self) -> Result<u8, Error> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  53 |     pub fn read_bytes(&mut self, buf: &mut [u8]) -> Result<usize, Error> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  61 |     pub fn read_boolean(&mut self) -> Result<bool, Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub fn read_byte(&mut self) -> Result<i8, Error> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn read_unsigned_byte(&mut self) -> Result<u8, Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn read_short(&mut self) -> Result<i16, Error> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn read_unsigned_short(&mut self) -> Result<u16, Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub fn read_int(&mut self) -> Result<i32, Error> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn read_long(&mut self) -> Result<i64, Error> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn read_float(&mut self) -> Result<f32, Error> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn read_double(&mut self) -> Result<f64, Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn read_char(&mut self) -> Result<char, Error> {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn read_utf(&mut self) -> Result<String, Error> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn read_fully(&mut self, buf: &mut [u8]) -> Result<(), Error> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn write_bytes(&mut self, s: &str) -> Result<(), Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn write_char(&mut self, value: char) -> Result<(), Error> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn write_chars(&mut self, s: &str) -> Result<(), Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub fn write_double(&mut self, value: f64) -> Result<(), Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn write_float(&mut self, value: f32) -> Result<(), Error> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     pub fn dispose(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/player/player.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct Player {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub intrinsic: IntrinsicPlayer,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub before_dispose: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub is_train: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 37 |     pub type_train: u8,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 38 |     pub time_off: u64,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub last_time_use_option: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 47 |     pub last_time_revived: u64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 48 |     
[INFO] [stdout] 49 |     pub just_revived: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 50 |     pub is_fight: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 51 |     pub is_fight1: bool,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 52 |     pub is_try: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 53 |     pub is_try1: bool,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub is_admin: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 57 |     pub admin_key: bool,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 58 |     
[INFO] [stdout] 59 |     pub notify: Option<String>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Player` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/player/player.rs:109:12
[INFO] [stdout]     |
[INFO] [stdout]  64 | impl Player {
[INFO] [stdout]     | ----------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn from_entity(model: &entities::player::Model) -> Result<Self, String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     fn parse_inventory_json(s: &str) -> Result<Inventory, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     fn parse_location_array(s: &str) -> Result<(i64, i64, i64), String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     fn parse_point_array(s: &str) -> Result<NPoint, String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub fn update(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     pub fn injured(&mut self, damage: u64, piercing: bool) -> u64 {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 248 |     pub fn set_die(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn revive(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     pub fn chat(&self, text: &str) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 277 |     pub fn is_admin(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     pub fn admin_key(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 286 |     pub fn prepared_to_dispose(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 290 |     pub fn dispose(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     pub fn set_fight(&mut self, _type_fight: u8, _type_target: u8) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn reset_fight(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub fn start_training(&mut self, type_train: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 312 |     pub fn stop_training(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 317 |     pub fn set_notify(&mut self, notify: String) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 321 |     pub fn clear_notify(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 325 |     pub fn set_session(&mut self, session: Arc<RwLock<AsyncSession>>) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 333 |     pub fn clear_zone(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/player/player_service.rs:27:18
[INFO] [stdout]     |
[INFO] [stdout]  14 | impl PlayerService {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  27 |     pub async fn remove_player(&self, player_id: u64) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  37 |     pub async fn get_all_players(&self) -> Vec<Player> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  53 |     pub async fn damage_player(&self, player_id: u64, damage: u64, piercing: bool) -> u64 {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub async fn heal_player(&self, player_id: u64, amount: u64) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  66 |     pub async fn revive_player(&self, player_id: u64) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub async fn move_player(&self, player_id: u64, x: i16, y: i16) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub async fn change_player_map(&self, player_id: u64, map_id: u32, zone_id: u32, x: i16, y: i16) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     pub async fn send_message_to_player(&self, player_id: u64, msg: Message) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub async fn broadcast_message(&self, msg: Message) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 119 |     pub async fn get_player_count(&self) -> usize {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub async fn get_online_players(&self) -> Vec<Player> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub async fn get_players_in_map(&self, map_id: u32) -> Vec<Player> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub async fn get_players_in_zone(&self, map_id: u32, zone_id: u32) -> Vec<Player> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub async fn set_player_admin(&self, player_id: u64, is_admin: bool) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub async fn kick_player(&self, player_id: u64) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub async fn cleanup_disconnected_players(&self) -> usize {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlayerSkill` is never constructed
[INFO] [stdout]  --> src/player/player_skill.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct PlayerSkill {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]  --> src/player/player_skill.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | impl PlayerSkill {
[INFO] [stdout]   | ---------------- associated function in this implementation
[INFO] [stdout] 9 |     pub fn new() -> Self {
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Friend` is never constructed
[INFO] [stdout]  --> src/player/player_friend.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct Friend {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Enemy` is never constructed
[INFO] [stdout]   --> src/player/player_friend.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct Enemy {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/player/n_point.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl NPoint {
[INFO] [stdout]    | ----------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn set_hp(&mut self, hp: u64) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn set_mp(&mut self, mp: u64) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn sub_hp(&mut self, damage: u64) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn add_hp(&mut self, amount: u64) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn add_mp(&mut self, amount: u64) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn update(&mut self) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn is_die(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub fn cal_point(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlayerIntrinsic` is never constructed
[INFO] [stdout]  --> src/player/player_intrinsic.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct PlayerIntrinsic {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/player/player_intrinsic.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl PlayerIntrinsic {
[INFO] [stdout]    | -------------------- associated items in this implementation
[INFO] [stdout] 10 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn from_intrinsic(intrinsic: Intrinsic) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn get_intrinsic(&self) -> &IntrinsicPlayer {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn get_intrinsic_mut(&mut self) -> &mut IntrinsicPlayer {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn has_intrinsic(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn get_intrinsic_name(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn get_intrinsic_icon(&self) -> i16 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn get_intrinsic_level(&self) -> u8 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn set_intrinsic_level(&mut self, level: u8) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn upgrade_intrinsic(&mut self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn get_upgrade_cost(&self) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub fn can_upgrade(&self, player_gold: i64) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlayerItemTime` is never constructed
[INFO] [stdout]  --> src/player/player_item_time.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct PlayerItemTime {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/player/player_item_time.rs:18:12
[INFO] [stdout]     |
[INFO] [stdout]  17 | impl PlayerItemTime {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  18 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  33 |     pub fn update(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  58 |     pub fn use_an_danh(&mut self, level: u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn is_an_danh_active(&self, level: u8) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn get_an_danh_remaining_time(&self, level: u8) -> i64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn has_any_an_danh_active(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn get_active_an_danh_levels(&self) -> Vec<u8> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn clear_all_an_danh(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `name`, and `is_alive` are never read
[INFO] [stdout]   --> src/mob/mob.rs:6:9
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct RtMob {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout]  6 |     pub id: u64,
[INFO] [stdout]    |         ^^
[INFO] [stdout]  7 |     pub template_id: i32,
[INFO] [stdout]  8 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub is_alive: bool,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `RtMob` 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 methods are never used
[INFO] [stdout]    --> src/mob/mob.rs:55:12
[INFO] [stdout]     |
[INFO] [stdout]  23 | impl RtMob {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  55 |     pub fn get_hp_percent(&self) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub fn get_mp_percent(&self) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn is_dead(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn take_damage(&mut self, damage: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  82 |     pub fn heal(&mut self, amount: i32) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn restore_mp(&mut self, amount: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn get_x(&self) -> i16 {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn get_y(&self) -> i16 {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn get_map_id(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn get_zone_id(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `load_mob_template`, `create_mob_from_template`, `save_mob_state`, and `load_mob_state` are never used
[INFO] [stdout]   --> src/mob/mob_dao.rs:8:18
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl MobDao {
[INFO] [stdout]    | ----------- associated functions in this implementation
[INFO] [stdout]  8 |     pub async fn load_mob_template(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub async fn create_mob_from_template(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub async fn save_mob_state(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub async fn load_mob_state(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `mobs` and `next_mob_id` are never read
[INFO] [stdout]   --> src/mob/mob_service.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct MobService {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 11 |     mobs: Arc<RwLock<HashMap<u64, RtMob>>>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 12 |     next_mob_id: Arc<RwLock<u64>>,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/mob/mob_service.rs:29:18
[INFO] [stdout]     |
[INFO] [stdout]  16 | impl MobService {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  29 |     pub async fn create_mob(&self, template_id: i32, map_id: u32, zone_id: u32, x: i16, y: i16) -> Option<RtMob> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub async fn get_mob(&self, mob_id: u64) -> Option<RtMob> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  55 |     pub async fn get_mobs_in_map(&self, map_id: u32, zone_id: u32) -> Vec<RtMob> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub async fn remove_mob(&self, mob_id: u64) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub async fn update_mob(&self, mob_id: u64, update_fn: impl FnOnce(&mut RtMob)) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub async fn damage_mob(&self, mob_id: u64, damage: i32) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub async fn heal_mob(&self, mob_id: u64, amount: i32) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub async fn move_mob(&self, mob_id: u64, new_x: i16, new_y: i16) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub async fn send_mob_info(&self, session: &mut AsyncSession, mob: &RtMob) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub async fn send_mobs_in_map(&self, session: &mut AsyncSession, map_id: u32, zone_id: u32) -> Result<(), Box<dyn std::error::E...
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub async fn cleanup_dead_mobs(&self) -> usize {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub async fn get_mob_count(&self) -> usize {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub async fn get_alive_mob_count(&self) -> usize {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `go_map`, `go_x`, and `go_y` are never read
[INFO] [stdout]   --> src/map/map.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct WayPoint {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub go_map: i32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 23 |     pub go_x: i16,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 24 |     pub go_y: i16,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WayPoint` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `contains_position` is never used
[INFO] [stdout]   --> src/map/map.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl WayPoint {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn contains_position(&self, x: i16, y: i16) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/map/map.rs:171:18
[INFO] [stdout]     |
[INFO] [stdout]  86 | impl Map {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 171 |     pub async fn get_waypoint_at_position(&self, x: i16, y: i16) -> Option<WayPoint> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 184 |     pub async fn get_zone(&self, zone_id: i32) -> Option<Zone> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub async fn get_best_zone(&self) -> Option<Zone> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub async fn get_all_zones(&self) -> Vec<Zone> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 230 |     pub async fn is_active(&self) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 236 |     pub async fn set_active(&self, active: bool) {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 241 |     pub async fn get_map_info(&self) -> MapInfo {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MapInfo` is never constructed
[INFO] [stdout]    --> src/map/map.rs:268:12
[INFO] [stdout]     |
[INFO] [stdout] 268 | pub struct MapInfo {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_tile_map_file` is never used
[INFO] [stdout]    --> src/map/map.rs:311:4
[INFO] [stdout]     |
[INFO] [stdout] 311 | fn read_tile_map_file(map_id: i32) -> Option<(i32, i32, Vec<Vec<i32>>)> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_tile_top_file` is never used
[INFO] [stdout]    --> src/map/map.rs:331:4
[INFO] [stdout]     |
[INFO] [stdout] 331 | fn read_tile_top_file(tile_id: i32) -> Option<Vec<i32>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `load_map_template`, `load_all_map_templates`, and `create_map_from_template` are never used
[INFO] [stdout]   --> src/map/map_dao.rs:10:18
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl MapDao {
[INFO] [stdout]    | ----------- associated functions in this implementation
[INFO] [stdout] 10 |     pub async fn load_map_template(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub async fn load_all_map_templates(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub async fn create_map_from_template(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `initialized` and `maps` are never read
[INFO] [stdout]  --> src/map/map_service.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct MapService {
[INFO] [stdout]   |            ---------- fields in this struct
[INFO] [stdout] 7 |     // Service state
[INFO] [stdout] 8 |     initialized: bool,
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 9 |     maps: HashMap<i32, Map>,
[INFO] [stdout]   |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/map/map_service.rs:32:12
[INFO] [stdout]     |
[INFO] [stdout]  12 | impl MapService {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  32 |     pub fn init(&mut self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  38 |     pub fn is_initialized(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub fn get_waypoint_player_in(&self, player: &Player) -> Option<&WayPoint> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub fn get_map_by_id(&self, map_id: i32) -> Option<&Map> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     pub fn get_map_by_id_mut(&mut self, map_id: i32) -> Option<&mut Map> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn add_map(&mut self, map: Map) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  69 |     pub fn remove_map(&mut self, map_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     pub fn get_all_maps(&self) -> &HashMap<i32, Map> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  79 |     pub fn get_map_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  84 |     pub fn get_map_can_join(&self, player: &Player, map_id: i32, zone_id: i32) -> Option<&Zone> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn is_map_offline(&self, map_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn is_map_cold(&self, map: &Map) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     pub fn is_map_ban_do_kho_bau(&self, map_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn is_map_doanh_trai(&self, map_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 126 |     pub fn is_map_ma_bu(&self, map_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 132 |     pub fn is_map_satan(&self, map_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn get_map_capsule(&self, player: &Player) -> Vec<&Zone> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn get_map_black_ball(&self) -> Vec<&Zone> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn get_map_ma_bu(&self) -> Vec<&Zone> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn get_map_satan(&self) -> Vec<&Zone> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn get_map_by_name(&self, name: &str) -> Option<&Map> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn get_maps_by_planet(&self, planet_id: i32) -> Vec<&Map> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 179 |     pub fn get_maps_by_type(&self, map_type: i32) -> Vec<&Map> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn can_player_join_map(&self, player: &Player, map_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub fn get_best_zone_for_player(&self, player: &Player, map_id: i32) -> Option<&Zone> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn update_all_maps(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 215 |     pub fn clear_all_maps(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 220 |     pub fn get_map_info(&self, player: &Player, map_id: i32) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/map/map_manager.rs:34:18
[INFO] [stdout]     |
[INFO] [stdout]  13 | impl MapManager {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub async fn get_all_maps(&self) -> Vec<Map> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub async fn get_maps_by_planet(&self, planet_id: i32) -> Vec<Map> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub async fn get_maps_by_type(&self, map_type: i32) -> Vec<Map> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub async fn get_map_by_name(&self, name: &str) -> Option<Map> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub async fn remove_map(&self, map_id: i32) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub async fn get_map_count(&self) -> usize {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub async fn clear_all_maps(&self) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub async fn is_map_exists(&self, map_id: i32) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub async fn get_active_maps(&self) -> Vec<Map> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/map/waypoint.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl WayPoint {
[INFO] [stdout]    | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn contains_position(&self, x: i16, y: i16) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn get_center_position(&self) -> (i16, i16) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn get_area(&self) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 58 |     pub fn is_valid(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn get_destination_info(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 66 |     pub fn is_enter_waypoint(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 70 |     pub fn is_offline_waypoint(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 |     pub fn can_teleport(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/map/zone.rs:38:18
[INFO] [stdout]     |
[INFO] [stdout]  25 | impl Zone {
[INFO] [stdout]     | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  38 |     pub async fn is_empty(&self) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub async fn is_full(&self) -> bool {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub async fn remove_player(&self, player_id: u64) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub async fn get_all_players(&self) -> Vec<Player> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub async fn remove_mob(&self, mob_id: u64) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub async fn get_all_mobs(&self) -> Vec<RtMob> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub async fn add_item(&self, item: ItemMap) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub async fn remove_item(&self, item_id: i32) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub async fn get_all_items(&self) -> Vec<ItemMap> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub async fn get_zone_info(&self) -> ZoneInfo {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 148 |     pub fn to_zone_info(&self, current_players: i32, mob_count: i32, item_count: i32) -> ZoneInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub async fn send_message_to_other_players(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ZoneInfo` is never constructed
[INFO] [stdout]    --> src/map/zone.rs:442:12
[INFO] [stdout]     |
[INFO] [stdout] 442 | pub struct ZoneInfo {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/map/zone_manager.rs:26:18
[INFO] [stdout]     |
[INFO] [stdout]  11 | impl ZoneManager {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  26 |     pub async fn get_zone(&self, map_id: i32, zone_id: i32) -> Option<Zone> {
[INFO] [stdout]     |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub async fn get_zones_for_map(&self, map_id: i32) -> Vec<Zone> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub async fn send_message_to_all_players_in_map(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  73 |     pub async fn send_message_to_other_players_in_map(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     pub async fn get_total_players_in_map(&self, map_id: i32) -> usize {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub async fn get_zone_count_for_map(&self, map_id: i32) -> usize {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub async fn remove_zone(&self, map_id: i32, zone_id: i32) -> bool {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub async fn clear_zones_for_map(&self, map_id: i32) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub async fn get_all_zones(&self) -> Vec<Zone> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub async fn get_zone_count(&self) -> usize {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ItemMap` is never constructed
[INFO] [stdout]  --> src/map/item_map.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct ItemMap {
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/map/item_map.rs:23:12
[INFO] [stdout]     |
[INFO] [stdout]  22 | impl ItemMap {
[INFO] [stdout]     | ------------ associated items in this implementation
[INFO] [stdout]  23 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub fn is_not_null_item(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn is_null_item(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  68 |     pub fn get_item_name(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  76 |     pub fn get_item_id(&self) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  84 |     pub fn get_quantity(&self) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn set_quantity(&mut self, quantity: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  92 |     pub fn get_position(&self) -> (i32, i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn set_position(&mut self, x: i32, y: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn get_player_id(&self) -> i64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn set_player_id(&mut self, player_id: i64) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 109 |     pub fn get_clan_id(&self) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn set_clan_id(&mut self, clan_id: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn is_black_ball(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 121 |     pub fn is_namec_ball(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn get_create_time(&self) -> DateTime<Utc> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn get_last_move_time(&self) -> DateTime<Utc> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 133 |     pub fn update_last_move_time(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn get_age(&self) -> i64 {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn is_expired(&self, max_age_seconds: i64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 146 |     pub fn update(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 151 |     pub fn get_info(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn get_content(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn add_option(&mut self, option: ItemOption) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub fn get_option_param(&self, option_id: i32) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn has_option(&self, option_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 186 |     pub fn get_options(&self) -> &Vec<ItemOption> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 190 |     pub fn clear_options(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn is_black_ball_template(template_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 202 |     pub fn is_namec_ball_template(template_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 209 |     pub fn is_valuable_item(template_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub fn get_item_rarity(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ItemMapService` is never constructed
[INFO] [stdout]   --> src/map/item_map_service.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct ItemMapService {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/map/item_map_service.rs:16:12
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl ItemMapService {
[INFO] [stdout]     | ------------------- associated items in this implementation
[INFO] [stdout]  16 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  24 |     pub fn get_instance() -> &'static mut ItemMapService {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  35 |     pub fn create_item_map(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn get_item_map(&self, item_map_id: i32) -> Option<&ItemMap> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  69 |     pub fn remove_item_map(&mut self, item_map_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     pub fn get_all_item_maps(&self) -> &HashMap<i32, ItemMap> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  79 |     pub fn update_all_item_maps(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn is_black_ball(&self, template_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn is_namec_ball(&self, template_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn get_item_maps_in_area(&self, x: i32, y: i32, radius: i32) -> Vec<&ItemMap> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn get_item_map_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn clear_all_item_maps(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MapUtils` is never constructed
[INFO] [stdout]  --> src/map/map_utils.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct MapUtils;
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/map/map_utils.rs:8:12
[INFO] [stdout]     |
[INFO] [stdout]   7 | impl MapUtils {
[INFO] [stdout]     | ------------- associated functions in this implementation
[INFO] [stdout]   8 |     pub fn calculate_distance(x1: i32, y1: i32, x2: i32, y2: i32) -> f64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  14 |     pub fn is_position_in_range(x1: i32, y1: i32, x2: i32, y2: i32, range: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  18 |     pub fn get_random_position_in_map(map: &Map) -> (i16, i16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  30 |     pub fn get_safe_spawn_position(map: &Map) -> (i16, i16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  40 |     pub fn is_safe_position(map: &Map, x: i16, y: i16) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  52 |     pub fn get_tile_at_position(map: &Map, x: i32, y: i32) -> Option<i32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn find_path_to_target(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn is_direct_path_clear(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 107 |     pub fn get_players_in_range(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn get_mobs_in_range(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub fn get_items_in_range(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn validate_map_coordinates(map: &Map, x: i16, y: i16) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     pub fn get_map_center(map: &Map) -> (i16, i16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn get_map_corners(map: &Map) -> [(i16, i16); 4] {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn is_map_full(map: &Map) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn get_map_population(map: &Map) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 164 |     pub fn get_map_info_string(map: &Map) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]   --> src/map/tile_loader.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout]  5 | impl TileLoader {
[INFO] [stdout]    | --------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn load_tile_data(map_id: i32, tile_id: i32) -> Option<TileData> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn validate_tile_position(tile_data: &TileData, x: i32, y: i32) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn get_tile_at_position(tile_data: &TileData, x: i32, y: i32) -> Option<i32> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 57 |     pub fn is_walkable_tile(tile_id: i32) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn is_water_tile(tile_id: i32) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn is_wall_tile(tile_id: i32) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn get_tile_type(tile_id: i32) -> TileType {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TileData` is never constructed
[INFO] [stdout]   --> src/map/tile_loader.rs:89:12
[INFO] [stdout]    |
[INFO] [stdout] 89 | pub struct TileData {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TileType` is never used
[INFO] [stdout]   --> src/map/tile_loader.rs:97:10
[INFO] [stdout]    |
[INFO] [stdout] 97 | pub enum TileType {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `info` and `quantity_gd` are never read
[INFO] [stdout]   --> src/item/item.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct Item {
[INFO] [stdout]    |            ---- fields in this struct
[INFO] [stdout]  9 |     pub template: Option<ItemTemplate>,
[INFO] [stdout] 10 |     pub info: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub quantity_gd: i32,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Item` 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 associated items are never used
[INFO] [stdout]    --> src/item/item.rs:32:12
[INFO] [stdout]     |
[INFO] [stdout]  18 | impl Item {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  32 |     pub fn from_template_id(template_id: i32, template: ItemTemplate) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  62 |     pub fn is_null_item(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  67 |     pub fn get_name(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  76 |     pub fn get_template_id(&self) -> Option<i32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn get_type(&self) -> Option<i32> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn get_option_param(&self, option_id: i32) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn has_option(&self, option_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn add_option_param(&mut self, option_id: i32, param: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn sub_option_param(&mut self, option_id: i32, param: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn clone_item(&self) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn set_content(&mut self, content: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn can_pha_le_hoa(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn is_skh(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 202 |     pub fn is_trang_bi_an(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn is_dts(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 222 |     pub fn is_dtl(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     pub fn is_dhd(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 240 |     pub fn is_manh_ts(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 249 |     pub fn is_cong_thuc_vip(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 258 |     pub fn is_cong_thuc_thuong(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     pub fn is_da_nang_cap(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 274 |     pub fn is_da_may_man(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     pub fn get_icon_id(&self) -> Option<i32> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 285 |     pub fn get_part(&self) -> Option<i32> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 289 |     pub fn get_gold(&self) -> Option<i64> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 293 |     pub fn get_gem(&self) -> Option<i32> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 296 |     pub fn get_str_require(&self) -> Option<i32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 300 |     pub fn can_use(&self, player_str: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 307 |     pub fn get_description(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 314 |     pub fn get_gender(&self) -> Option<i32> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 317 |     pub fn matches_gender(&self, player_gender: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `get_all_item_option_templates` is never used
[INFO] [stdout]   --> src/item/item_dao.rs:17:18
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl ItemDao {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub async fn get_all_item_option_templates(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/item/item_service.rs:22:12
[INFO] [stdout]     |
[INFO] [stdout]  10 | impl ItemService {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  22 |     pub fn get_item_option_template(&self, id: i32) -> Option<ItemOptionTemplate> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  28 |     pub fn get_item_id_by_icon(&self, icon_id: i32) -> Option<i32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  43 |     pub fn create_new_item(&self, template_id: i32) -> Option<Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  48 |     pub fn create_new_item_with_quantity(&self, template_id: i32, quantity: i32) -> Option<Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  58 |     pub fn copy_item(&self, item: &Item) -> Item {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  63 |     pub fn create_item_set_kich_hoat(&self, template_id: i32, quantity: i32) -> Option<Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn create_item_do_huy_diet(&self, template_id: i32, quantity: i32) -> Option<Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub fn random_skh_id(&self, gender: i32) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn option_id_skh(&self, skh_id: i32) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn is_item_activation(&self, _item: &Item) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn get_all_item_templates_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn get_all_item_option_templates_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn can_item_stack(&self, template_id: i32, item_type: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn get_item_template_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 172 |     pub fn get_item_option_template_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `item_service` is never read
[INFO] [stdout]   --> src/item/item_manager.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct ItemManager {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 14 |     item_templates: Arc<RwLock<HashMap<i32, ItemTemplate>>>,
[INFO] [stdout] 15 |     item_service: ItemService,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/item/item_option.rs:23:12
[INFO] [stdout]     |
[INFO] [stdout]   7 | impl ItemOption {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  23 |     pub fn set_param(&mut self, param: i32) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  27 |     pub fn is_valid(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  31 |     pub fn get_option_name(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn is_combat_option(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  79 |     pub fn is_stat_option(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn is_skill_option(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub fn get_option_type(&self) -> OptionType {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  98 |     pub fn get_option_rarity(&self) -> OptionRarity {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn is_legendary_option(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn is_epic_option(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 116 |     pub fn is_rare_option(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn is_uncommon_option(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn is_common_option(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OptionType` is never used
[INFO] [stdout]    --> src/item/item_option.rs:130:10
[INFO] [stdout]     |
[INFO] [stdout] 130 | pub enum OptionType {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `OptionRarity` is never used
[INFO] [stdout]    --> src/item/item_option.rs:140:10
[INFO] [stdout]     |
[INFO] [stdout] 140 | pub enum OptionRarity {
[INFO] [stdout]     |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/item/inventory.rs:9:9
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct Inventory {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout]  9 |     pub coupon: i32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 10 |     pub event: i32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub items_box_crack_ball: Vec<Item>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 17 |     pub train_armor: Option<Item>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub gift_codes: Vec<String>,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub const_limit_gold: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 24 |     pub const_max_items_bag: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 25 |     pub const_max_items_box: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Inventory` 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 methods are never used
[INFO] [stdout]    --> src/item/inventory.rs:48:12
[INFO] [stdout]     |
[INFO] [stdout]  28 | impl Inventory {
[INFO] [stdout]     | -------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  48 |     pub fn get_gem_and_ruby(&self) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn add_gold(&mut self, amount: i64) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  71 |     pub fn sub_gold(&mut self, amount: i64) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn add_gem(&mut self, amount: i32) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  79 |     pub fn sub_gem(&mut self, amount: i32) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  83 |     pub fn add_ruby(&mut self, amount: i32) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  87 |     pub fn sub_ruby(&mut self, amount: i32) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn sub_gem_and_ruby(&mut self, amount: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  99 |     pub fn add_item_bag(&mut self, item: Item) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn add_item_body(&mut self, item: Item) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn add_item_box(&mut self, item: Item) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn remove_item_bag(&mut self, index: usize) -> Option<Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn remove_item_body(&mut self, index: usize) -> Option<Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn remove_item_box(&mut self, index: usize) -> Option<Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 147 |     pub fn get_item_bag(&self, index: usize) -> Option<&Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 152 |     pub fn get_item_body(&self, index: usize) -> Option<&Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn get_item_box(&self, index: usize) -> Option<&Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn get_item_count_by_id(&self, template_id: i32) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn sub_quantity_item_by_id(&mut self, template_id: i32, quantity: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn is_bag_full(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn is_box_full(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 218 |     pub fn get_bag_item_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn get_body_item_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 228 |     pub fn get_box_item_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 233 |     pub fn add_gift_code(&mut self, code: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 238 |     pub fn has_gift_code(&self, code: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 243 |     pub fn clear_all_items(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn dispose(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `InventoryService` is never constructed
[INFO] [stdout]  --> src/item/inventory_service.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct InventoryService {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/item/inventory_service.rs:12:12
[INFO] [stdout]     |
[INFO] [stdout]  11 | impl InventoryService {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout]  12 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  18 |     pub fn get_instance() -> &'static mut InventoryService {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  29 |     pub fn init(&mut self) {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  35 |     pub fn is_initialized(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  40 |     pub fn add_item_to_bag(&self, inventory: &mut Inventory, item: Item) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  45 |     pub fn add_item_to_body(&self, inventory: &mut Inventory, item: Item) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn add_item_to_box(&self, inventory: &mut Inventory, item: Item) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  55 |     pub fn remove_item_from_bag(&self, inventory: &mut Inventory, index: usize) -> Option<Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub fn remove_item_from_body(&self, inventory: &mut Inventory, index: usize) -> Option<Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  65 |     pub fn remove_item_from_box(&self, inventory: &mut Inventory, index: usize) -> Option<Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn get_item_from_bag<'a>(&self, inventory: &'a Inventory, index: usize) -> Option<&'a Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn get_item_from_body<'a>(&self, inventory: &'a Inventory, index: usize) -> Option<&'a Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  80 |     pub fn get_item_from_box<'a>(&self, inventory: &'a Inventory, index: usize) -> Option<&'a Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn get_item_count_by_id(&self, inventory: &Inventory, template_id: i32) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub fn sub_quantity_item_by_id(&self, inventory: &mut Inventory, template_id: i32, quantity: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  95 |     pub fn add_gold(&self, inventory: &mut Inventory, amount: i64) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn sub_gold(&self, inventory: &mut Inventory, amount: i64) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub fn add_gem(&self, inventory: &mut Inventory, amount: i32) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 110 |     pub fn sub_gem(&self, inventory: &mut Inventory, amount: i32) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn add_ruby(&self, inventory: &mut Inventory, amount: i32) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 120 |     pub fn sub_ruby(&self, inventory: &mut Inventory, amount: i32) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub fn sub_gem_and_ruby(&self, inventory: &mut Inventory, amount: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 130 |     pub fn is_bag_full(&self, inventory: &Inventory) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     pub fn is_box_full(&self, inventory: &Inventory) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     pub fn get_bag_item_count(&self, inventory: &Inventory) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 145 |     pub fn get_body_item_count(&self, inventory: &Inventory) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn get_box_item_count(&self, inventory: &Inventory) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn add_gift_code(&self, inventory: &mut Inventory, code: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 160 |     pub fn has_gift_code(&self, inventory: &Inventory, code: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn clear_all_items(&self, inventory: &mut Inventory) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn dispose_inventory(&self, inventory: &mut Inventory) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn find_item_index_in_bag(&self, inventory: &Inventory, target_item: &Item) -> Option<usize> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn has_item(&self, inventory: &Inventory, template_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 194 |     pub fn has_enough_items(&self, inventory: &Inventory, template_id: i32, quantity: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/item/item_time.rs:7:9
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct ItemTime {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout]  6 |     // Basic time constants
[INFO] [stdout]  7 |     pub const_time_item: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout]  8 |     pub const_time_open_power: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 11 |     pub is_use_bo_huyet: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 12 |     pub is_use_bo_khi: bool,            
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 13 |     pub is_use_giap_xen: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 14 |     pub is_use_cuong_no: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 15 |     pub is_use_an_danh: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub last_time_bo_huyet: DateTime<Utc>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 19 |     pub last_time_bo_khi: DateTime<Utc>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 20 |     pub last_time_giap_xen: DateTime<Utc>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 21 |     pub last_time_cuong_no: DateTime<Utc>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 22 |     pub last_time_an_danh: DateTime<Utc>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ItemTime` 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 associated items are never used
[INFO] [stdout]    --> src/item/item_time.rs:26:12
[INFO] [stdout]     |
[INFO] [stdout]  25 | impl ItemTime {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout]  26 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  47 |     pub fn update(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     fn can_do_with_time(&self, last_time: DateTime<Utc>, required_duration: i64) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  88 |     pub fn use_bo_huyet(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  94 |     pub fn use_bo_khi(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn use_giap_xen(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn use_cuong_no(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn use_an_danh(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `player_item_times` is never read
[INFO] [stdout]  --> src/item/item_time_service.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct ItemTimeService {
[INFO] [stdout]   |            --------------- field in this struct
[INFO] [stdout] 6 |     player_item_times: HashMap<i64, ItemTime>, // player_id -> ItemTime
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_player_item_time`, `update_all_item_times`, `remove_player_item_time`, `get_player_count`, and `clear_all_item_times` are never used
[INFO] [stdout]   --> src/item/item_time_service.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl ItemTimeService {
[INFO] [stdout]    | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub fn get_player_item_time(&mut self, player_id: i64) -> &mut ItemTime {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn update_all_item_times(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn remove_player_item_time(&mut self, player_id: i64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn get_player_count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn clear_all_item_times(&mut self) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ItemUtils` is never constructed
[INFO] [stdout]  --> src/item/item_utils.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ItemUtils;
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/item/item_utils.rs:7:12
[INFO] [stdout]     |
[INFO] [stdout]   6 | impl ItemUtils {
[INFO] [stdout]     | -------------- associated functions in this implementation
[INFO] [stdout]   7 |     pub fn calculate_item_value(item: &Item) -> i64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  19 |     pub fn calculate_option_value(options: &[ItemOption]) -> i64 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  36 |     pub fn get_item_rarity(item: &Item) -> ItemRarity {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  50 |     pub fn is_equipment(item: &Item) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     pub fn is_consumable(item: &Item) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  68 |     pub fn is_material(item: &Item) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  78 |     pub fn can_stack(item: &Item) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  91 |     pub fn get_max_stack_size(item: &Item) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn can_combine_items(item1: &Item, item2: &Item) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn combine_items(item1: &Item, item2: &Item) -> Option<Item> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn split_item(item: &Item, split_quantity: i32) -> Option<(Item, Item)> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn get_item_requirements(item: &Item) -> ItemRequirements {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn can_use_item(item: &Item, player_level: i32, player_gender: i32, player_class: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 167 |     pub fn get_item_effect_description(item: &Item) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 180 |     pub fn get_item_trade_info(item: &Item) -> ItemTradeInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ItemRarity` is never used
[INFO] [stdout]    --> src/item/item_utils.rs:202:10
[INFO] [stdout]     |
[INFO] [stdout] 202 | pub enum ItemRarity {
[INFO] [stdout]     |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ItemRequirements` is never constructed
[INFO] [stdout]    --> src/item/item_utils.rs:211:12
[INFO] [stdout]     |
[INFO] [stdout] 211 | pub struct ItemRequirements {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ItemTradeInfo` is never constructed
[INFO] [stdout]    --> src/item/item_utils.rs:218:12
[INFO] [stdout]     |
[INFO] [stdout] 218 | pub struct ItemTradeInfo {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ItemValidator` is never constructed
[INFO] [stdout]  --> src/item/item_validator.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ItemValidator;
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated functions are never used
[INFO] [stdout]    --> src/item/item_validator.rs:7:12
[INFO] [stdout]     |
[INFO] [stdout]   6 | impl ItemValidator {
[INFO] [stdout]     | ------------------ associated functions in this implementation
[INFO] [stdout]   7 |     pub fn validate_item(item: &Item) -> ValidationResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  56 |     pub fn validate_item_option(option: &ItemOption) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  81 |     pub fn is_valid_option_id(option_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  85 |     pub fn get_max_param_for_option(option_id: i32) -> Option<i32> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn get_max_stack_size_for_template(template_id: i32) -> i32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn validate_item_name(name: &str) -> ValidationResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn validate_item_price(price: i32) -> ValidationResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn validate_item_level(level: i32) -> ValidationResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 185 |     pub fn can_item_be_equipped(item: &Item, player_level: i32, player_gender: i32, player_class: i32) -> ValidationResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn is_equipment_type(item_type: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 212 |     pub fn is_consumable_type(item_type: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 216 |     pub fn is_material_type(item_type: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ValidationResult` is never constructed
[INFO] [stdout]    --> src/item/item_validator.rs:222:12
[INFO] [stdout]     |
[INFO] [stdout] 222 | pub struct ValidationResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/item/item_validator.rs:229:12
[INFO] [stdout]     |
[INFO] [stdout] 228 | impl ValidationResult {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 229 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     pub fn add_error(&mut self, error: String) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 242 |     pub fn add_warning(&mut self, warning: String) {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 246 |     pub fn has_errors(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 250 |     pub fn has_warnings(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 254 |     pub fn get_error_summary(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 262 |     pub fn get_warning_summary(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `player` and `send_player_info` are never used
[INFO] [stdout]    --> src/services/player_info_service.rs:11:18
[INFO] [stdout]     |
[INFO] [stdout]  10 | impl PlayerInfoService {
[INFO] [stdout]     | ---------------------- associated functions in this implementation
[INFO] [stdout]  11 |     pub async fn player(
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 350 |     pub async fn send_player_info(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `item_templates`, `item_option_templates_by_id`, `item_time_service`, and `npc_manager` are never read
[INFO] [stdout]   --> src/services/manager.rs:36:9
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub struct Manager {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub item_templates:Vec<item_template::Model>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub item_option_templates_by_id: HashMap<i32, item_option_template::Model>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub item_time_service: ItemTimeService,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 50 |     pub npc_service: NpcService,
[INFO] [stdout] 51 |     pub npc_manager: NpcManager,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/services/manager.rs:341:12
[INFO] [stdout]     |
[INFO] [stdout]  55 | impl Manager {
[INFO] [stdout]     | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 341 |     pub fn get_item_templates(&self) -> &Vec<item_template::Model> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 344 |     pub fn get_intrinsic_templates(&self) -> &Vec<intrinsic::Model> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 347 |     pub fn get_intrinsic_template_by_id(&self, id: i32) -> Option<&intrinsic::Model> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 351 |     pub fn get_mob_service(&self) -> &MobService {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 355 |     pub fn get_item_time_service(&self) -> &ItemTimeService {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 359 |     pub fn get_npc_service(&self) -> &NpcService {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 363 |     pub fn get_npc_manager(&self) -> &NpcManager {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `maintenance`, `server_open_time`, and `maintenance_message` are never read
[INFO] [stdout]   --> src/services/god_gk.rs:9:9
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct GodGK {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout]  8 |     pub db: Option<Database>,
[INFO] [stdout]  9 |     pub maintenance: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 10 |     pub server_open_time: i64,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     pub maintenance_message: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `login_god_gk`, `get_player_by_account`, `create_new_player`, and `update_account_last_login` are never used
[INFO] [stdout]    --> src/services/god_gk.rs:32:18
[INFO] [stdout]     |
[INFO] [stdout]  14 | impl GodGK {
[INFO] [stdout]     | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  32 |     pub async fn login_god_gk(&self, username: &str, password: &str) -> Result<Option<account::Model>, DbErr> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub async fn get_player_by_account(&self, account_id: i32) -> Result<Option<player::Model>, DbErr> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  62 |     pub async fn create_new_player(&self, account_id: i32, name: &str, gender: i32) -> Result<player::Model, DbErr> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub async fn update_account_last_login(&self, account_id: i32) -> Result<account::Model, DbErr> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ServiceHandles` is never constructed
[INFO] [stdout]  --> src/services/services.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct ServiceHandles {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_all_services` is never used
[INFO] [stdout]   --> src/services/services.rs:13:8
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub fn spawn_all_services() -> ServiceHandles {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/services/intrinsic_service.rs:11:11
[INFO] [stdout]     |
[INFO] [stdout]  10 | impl IntrinsicService {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout]  11 |     const COST_OPEN: [i32; 8] = [10, 20, 40, 80, 160, 320, 640, 1280];
[INFO] [stdout]     |           ^^^^^^^^^
[INFO] [stdout]  12 |
[INFO] [stdout]  13 |     pub fn get_intrinsics(&self, player_gender: u8) -> Vec<Intrinsic> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  25 |     pub fn get_intrinsic_by_id(&self, id: i32) -> Option<Intrinsic> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  47 |     pub async fn show_all_intrinsic(&self, session: &mut AsyncSession, player_gender: u8) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub async fn show_menu(&self, _session: &mut AsyncSession) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  77 |     pub async fn show_confirm_open(&self, _session: &mut AsyncSession, count_open: u8) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  90 |     pub async fn show_confirm_open_vip(&self, _session: &mut AsyncSession) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     fn change_intrinsic(&self, player_intrinsic: &mut IntrinsicPlayer, player_gender: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn open(&self, player_intrinsic: &mut IntrinsicPlayer, player_gender: u8, player_power: i64, player_gold: i64) -> Result<St...
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 142 |     pub fn open_vip(&self, player_intrinsic: &mut IntrinsicPlayer, player_gender: u8, player_power: i64, player_gem: i32) -> Result...
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `send_to_other_players` and `send_to_player` are never used
[INFO] [stdout]   --> src/services/message_service.rs:21:18
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl MessageService {
[INFO] [stdout]    | ------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub async fn send_to_other_players(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub async fn send_to_player(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `create_zone`, `get_zone`, `get_best_zone`, `send_message_to_all_players_in_map`, `send_message_to_other_players_in_map`, and `get_total_players_in_map` are never used
[INFO] [stdout]   --> src/services/zone_service.rs:22:18
[INFO] [stdout]    |
[INFO] [stdout]  8 | impl ZoneService {
[INFO] [stdout]    | ---------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub async fn create_zone(map_id: i32, zone_id: i32, max_player: i32) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]    |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub async fn get_zone(map_id: i32, zone_id: i32) -> Option<Zone> {
[INFO] [stdout]    |                  ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub async fn get_best_zone(map_id: i32) -> Option<Zone> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub async fn send_message_to_all_players_in_map(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub async fn send_message_to_other_players_in_map(
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub async fn get_total_players_in_map(map_id: i32) -> usize {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `class_id` is never read
[INFO] [stdout]   --> src/data/data_game.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct SkillTemplate {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] 32 |     pub id: i8,
[INFO] [stdout] 33 |     pub class_id: i32,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SkillTemplate` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `send_skill_data`, `send_item_data`, `update_item`, and `send_client_ok` are never used
[INFO] [stdout]    --> src/data/data_game.rs:448:18
[INFO] [stdout]     |
[INFO] [stdout]  52 | impl DataGame {
[INFO] [stdout]     | ------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 448 |     pub async fn send_skill_data(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 457 |     pub async fn send_item_data(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 492 |     pub async fn update_item(session: &mut AsyncSession) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |                  ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 518 |     pub async fn send_client_ok(
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AntiLogin` is never constructed
[INFO] [stdout]  --> src/data/game_session.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct AntiLogin {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `can_login`, `wrong`, `reset`, and `get_notify_cannot_login` are never used
[INFO] [stdout]   --> src/data/game_session.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl AntiLogin {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 10 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub fn can_login(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn wrong(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn reset(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn get_notify_cannot_login(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WayPoint` is never constructed
[INFO] [stdout]  --> src/data/waypoint.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct WayPoint {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/data/waypoint.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl WayPoint {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 17 |     pub fn new(id: i32, map_id: i32, min_x: i32, max_x: i32, min_y: i32, max_y: i32, 
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn is_in_area(&self, x: i32, y: i32) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn get_center(&self) -> (i32, i32) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn get_width(&self) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn get_height(&self) -> i32 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn is_valid(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn get_destination_info(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Skill` is never constructed
[INFO] [stdout]  --> src/models/skill_model.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct Skill {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/models/skill_model.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl Skill {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] 11 |     pub fn new(id: i16) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `param_from_2`, `param_to_2`, and `gender` are never read
[INFO] [stdout]   --> src/models/intrinsic.rs:9:9
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub struct Intrinsic {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout]  9 |     pub param_from_2: i16,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 10 |     pub param_to_2: i16,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 11 |     pub icon: i16,
[INFO] [stdout] 12 |     pub gender: i8,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Intrinsic` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_entity`, `from_intrinsic`, and `get_description` are never used
[INFO] [stdout]   --> src/models/intrinsic.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl Intrinsic {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn from_entity(entity: &IntrinsicEntity) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn from_intrinsic(other: &Intrinsic) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn get_description(&self) -> String {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `count_open` is never read
[INFO] [stdout]   --> src/models/intrinsic.rs:88:9
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub struct IntrinsicPlayer {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] 88 |     pub count_open: u8,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `IntrinsicPlayer` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `dispose` is never used
[INFO] [stdout]    --> src/models/intrinsic.rs:100:12
[INFO] [stdout]     |
[INFO] [stdout]  92 | impl IntrinsicPlayer {
[INFO] [stdout]     | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn dispose(&mut self) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new_placeholder`, `new_sync`, and `get_account_by_id` are never used
[INFO] [stdout]   --> src/utils/database.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Database {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub fn new_placeholder() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn new_sync() -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub async fn get_account_by_id(&self, id: i32) -> Result<Option<account::Model>, DbErr> {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_map` and `update` are never used
[INFO] [stdout]   --> src/utils/location.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Location {
[INFO] [stdout]    | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn get_map(&self) -> (u32, u32) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn update(&mut self) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TaskMain` is never constructed
[INFO] [stdout]  --> src/features/task_player.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct TaskMain {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TaskPlayer` is never constructed
[INFO] [stdout]   --> src/features/task_player.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct TaskPlayer {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/features/task_player.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl TaskPlayer {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 16 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SideTaskTemplate` is never constructed
[INFO] [stdout]  --> src/features/side_task_template.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct SideTaskTemplate {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]  --> src/features/side_task_template.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | impl SideTaskTemplate {
[INFO] [stdout]   | --------------------- associated function in this implementation
[INFO] [stdout] 9 |     pub fn new(id: i32, name: String) -> Self {
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OptionCard` is never constructed
[INFO] [stdout]  --> src/features/option_card.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct OptionCard {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `npc_id`, `npc_say`, and `menu_select` are never read
[INFO] [stdout]  --> src/npc/npc.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct BaseMenu {
[INFO] [stdout]   |            -------- fields in this struct
[INFO] [stdout] 7 |     pub npc_id: i32,
[INFO] [stdout]   |         ^^^^^^
[INFO] [stdout] 8 |     pub npc_say: String,
[INFO] [stdout]   |         ^^^^^^^
[INFO] [stdout] 9 |     pub menu_select: Vec<String>,
[INFO] [stdout]   |         ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `BaseMenu` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_menu_count`, and `get_menu_option` are never used
[INFO] [stdout]   --> src/npc/npc.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl BaseMenu {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 13 |     pub fn new(npc_id: i32, npc_say: String, menu_select: Vec<String>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn get_menu_count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn get_menu_option(&self, index: usize) -> Option<&String> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/npc/npc.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct Npc {
[INFO] [stdout]    |            --- fields in this struct
[INFO] [stdout] 33 |     pub map_id: i32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 34 |     pub status: i32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 35 |     pub location: Location,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 36 |     pub temp_id: i32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 37 |     pub avatar: i32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 38 |     pub base_menu: Option<BaseMenu>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 39 |     pub create_time: DateTime<Utc>,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Npc` 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 associated items are never used
[INFO] [stdout]    --> src/npc/npc.rs:44:12
[INFO] [stdout]     |
[INFO] [stdout]  42 | impl Npc {
[INFO] [stdout]     | -------- associated items in this implementation
[INFO] [stdout]  43 |     /// Create new NPC
[INFO] [stdout]  44 |     pub fn new(map_id: i32, status: i32, x: i32, y: i32, temp_id: i32, avatar: i32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  60 |     pub fn from_template(template: &NpcTemplate, map_id: i32, x: i32, y: i32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn init_base_menu(&mut self, text: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn get_name(&self) -> String {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     pub fn get_position(&self) -> (i16, i16) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 104 |     pub fn set_position(&mut self, x: i32, y: i32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn has_menu(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 112 |     pub fn get_base_menu(&self) -> Option<&BaseMenu> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 117 |     pub fn can_open_npc(&self, _player_id: i64) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn update(&mut self) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn is_in_range(&self, player_x: i32, player_y: i32, range: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `npcs` and `npcs_by_map` are never read
[INFO] [stdout]    --> src/npc/npc.rs:140:5
[INFO] [stdout]     |
[INFO] [stdout] 139 | pub struct NpcManager {
[INFO] [stdout]     |            ---------- fields in this struct
[INFO] [stdout] 140 |     npcs: HashMap<i32, Npc>, // npc_id -> Npc
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 141 |     npcs_by_map: HashMap<i32, Vec<i32>>, // map_id -> Vec<npc_id>
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/npc/npc.rs:155:12
[INFO] [stdout]     |
[INFO] [stdout] 144 | impl NpcManager {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 155 |     pub fn add_npc(&mut self, npc: Npc) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     pub fn get_npc(&self, npc_id: i32) -> Option<&Npc> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 170 |     pub fn get_npc_by_id_and_map(&self, npc_id: i32, map_id: i32) -> Option<&Npc> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 175 |     pub fn get_npcs_by_map(&self, map_id: i32) -> Vec<&Npc> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub fn remove_npc(&mut self, npc_id: i32) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |     pub fn update_all_npcs(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 208 |     pub fn get_npc_count(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn clear_all_npcs(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NpcFactory` is never constructed
[INFO] [stdout]  --> src/npc/npc_factory.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct NpcFactory;
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `create_basic_npc`, `create_shop_npc`, `create_quest_npc`, and `create_npc_with_menu` are never used
[INFO] [stdout]   --> src/npc/npc_factory.rs:6:12
[INFO] [stdout]    |
[INFO] [stdout]  5 | impl NpcFactory {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout]  6 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 10 |     pub fn create_basic_npc(&self, template_id: i32, map_id: i32, x: i32, y: i32) -> Option<Npc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn create_shop_npc(&self, template_id: i32, map_id: i32, x: i32, y: i32) -> Option<Npc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn create_quest_npc(&self, template_id: i32, map_id: i32, x: i32, y: i32) -> Option<Npc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn create_npc_with_menu(&self, template_id: i32, map_id: i32, x: i32, y: i32, menu_text: &str) -> Option<Npc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/npc/npc_service.rs:24:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl NpcService {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn get_template(&self, id: i32) -> Option<&NpcTemplate> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn create_npc(&self, template_id: i32, map_id: i32, x: i32, y: i32) -> Option<Npc> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn create_base_menu(&self, npc_id: i32, npc_say: &str, menu_options: Vec<String>) -> BaseMenu {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn create_simple_menu(&self, npc_id: i32, npc_say: &str, menu_options: &[&str]) -> BaseMenu {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn get_npcs_in_range<'a>(&self, npcs: &'a [Npc], player_x: i32, player_y: i32, range: i32) -> Vec<&'a Npc> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn get_all_templates(&self) -> &HashMap<i32, NpcTemplate> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn get_template_count(&self) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/map/map_service.rs:24:16
[INFO] [stdout]    |
[INFO] [stdout] 24 |             if INSTANCE.is_none() {
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/map/map_service.rs:27:13
[INFO] [stdout]    |
[INFO] [stdout] 27 |             INSTANCE.as_mut().unwrap()
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused implementer of `Future` that must be used
[INFO] [stdout]    --> src/map/map_service.rs:210:13
[INFO] [stdout]     |
[INFO] [stdout] 210 |             map.update();
[INFO] [stdout]     |             ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: futures do nothing unless you `.await` or poll them
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/map/item_map_service.rs:27:16
[INFO] [stdout]    |
[INFO] [stdout] 27 |             if INSTANCE.is_none() {
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/map/item_map_service.rs:30:13
[INFO] [stdout]    |
[INFO] [stdout] 30 |             INSTANCE.as_mut().unwrap()
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/item/inventory_service.rs:21:16
[INFO] [stdout]    |
[INFO] [stdout] 21 |             if INSTANCE.is_none() {
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]   --> src/item/inventory_service.rs:24:13
[INFO] [stdout]    |
[INFO] [stdout] 24 |             INSTANCE.as_mut().unwrap()
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^ mutable reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 55.47s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: num-bigint-dig v0.8.4
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 3`
[INFO] running `Command { std: "docker" "inspect" "b1fddbe81014c3dab3bc1676f3a10fb290ed2de0c2ef48118a51c37ada84aa93", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b1fddbe81014c3dab3bc1676f3a10fb290ed2de0c2ef48118a51c37ada84aa93", kill_on_drop: false }`
[INFO] [stdout] b1fddbe81014c3dab3bc1676f3a10fb290ed2de0c2ef48118a51c37ada84aa93
