[INFO] cloning repository https://github.com/hoduyquocbao/game
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/hoduyquocbao/game" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhoduyquocbao%2Fgame", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhoduyquocbao%2Fgame'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f27de8a1c724321558ab413a4e04797cebb8e52a
[INFO] checking hoduyquocbao/game against 24e1a22664233bce1f9b5dc6eee7c1f74327e28c for pr-159343-retry
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fhoduyquocbao%2Fgame" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/hoduyquocbao/game
[INFO] finished tweaking git repo https://github.com/hoduyquocbao/game
[INFO] tweaked toml for git repo https://github.com/hoduyquocbao/game written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/hoduyquocbao/game on toolchain 24e1a22664233bce1f9b5dc6eee7c1f74327e28c
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+24e1a22664233bce1f9b5dc6eee7c1f74327e28c" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/hoduyquocbao/game 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" "+24e1a22664233bce1f9b5dc6eee7c1f74327e28c" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3d5ced03c013a94a2f102a4510f48a6e9184255caf5fd8244f58017bde7f5210" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 098cc2e50974c586193c7517fd81a720d38025c08f3ec764aa730d22700fcbc6
[INFO] running `Command { std: "docker" "start" "098cc2e50974c586193c7517fd81a720d38025c08f3ec764aa730d22700fcbc6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "098cc2e50974c586193c7517fd81a720d38025c08f3ec764aa730d22700fcbc6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "098cc2e50974c586193c7517fd81a720d38025c08f3ec764aa730d22700fcbc6" "/opt/rustwide/cargo-home/bin/cargo" "+24e1a22664233bce1f9b5dc6eee7c1f74327e28c" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "098cc2e50974c586193c7517fd81a720d38025c08f3ec764aa730d22700fcbc6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "098cc2e50974c586193c7517fd81a720d38025c08f3ec764aa730d22700fcbc6" "/opt/rustwide/cargo-home/bin/cargo" "+24e1a22664233bce1f9b5dc6eee7c1f74327e28c" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.95
[INFO] [stderr]    Compiling libc v0.2.174
[INFO] [stderr]    Compiling hashbrown v0.15.4
[INFO] [stderr]    Compiling target-lexicon v0.12.16
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling version-compare v0.2.0
[INFO] [stderr]    Compiling serde v1.0.219
[INFO] [stderr]     Checking cfg-if v1.0.1
[INFO] [stderr]     Checking futures-core v0.3.31
[INFO] [stderr]     Checking slab v0.4.10
[INFO] [stderr]     Checking futures-sink v0.3.31
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking memchr v2.7.5
[INFO] [stderr]     Checking stable_deref_trait v1.2.0
[INFO] [stderr]    Compiling lock_api v0.4.13
[INFO] [stderr]     Checking tracing-core v0.1.34
[INFO] [stderr]     Checking futures-channel v0.3.31
[INFO] [stderr]    Compiling parking_lot_core v0.9.11
[INFO] [stderr]    Compiling zerocopy v0.8.26
[INFO] [stderr]    Compiling memoffset v0.9.1
[INFO] [stderr]    Compiling gio v0.18.4
[INFO] [stderr]     Checking writeable v0.6.1
[INFO] [stderr]     Checking futures-io v0.3.31
[INFO] [stderr]    Compiling semver v1.0.26
[INFO] [stderr]     Checking litemap v0.8.0
[INFO] [stderr]    Compiling icu_normalizer_data v2.0.0
[INFO] [stderr]    Compiling icu_properties_data v2.0.1
[INFO] [stderr]    Compiling typenum v1.18.0
[INFO] [stderr]    Compiling x11 v2.21.0
[INFO] [stderr]     Checking dioxus-core-types v0.6.2
[INFO] [stderr]    Compiling slotmap v1.0.7
[INFO] [stderr]    Compiling unicode-xid v0.2.6
[INFO] [stderr]    Compiling rustversion v1.0.21
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling gtk v0.18.2
[INFO] [stderr]    Compiling indexmap v2.9.0
[INFO] [stderr]     Checking longest-increasing-subsequence v0.1.0
[INFO] [stderr]     Checking form_urlencoded v1.2.1
[INFO] [stderr]    Compiling lazy-js-bundle v0.6.2
[INFO] [stderr]     Checking libloading v0.7.4
[INFO] [stderr]    Compiling rustc_version v0.4.1
[INFO] [stderr]    Compiling proc-macro2-diagnostics v0.10.1
[INFO] [stderr]    Compiling cfg_aliases v0.1.1
[INFO] [stderr]    Compiling regex-syntax v0.8.5
[INFO] [stderr]    Compiling serde_json v1.0.140
[INFO] [stderr]    Compiling libxdo-sys v0.11.0
[INFO] [stderr]    Compiling convert_case v0.6.0
[INFO] [stderr]     Checking event-listener v5.4.0
[INFO] [stderr]    Compiling cfg-expr v0.15.8
[INFO] [stderr]     Checking crossbeam-channel v0.5.15
[INFO] [stderr]    Compiling field-offset v0.3.6
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]     Checking endi v1.1.0
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]     Checking generic-array v0.14.7
[INFO] [stderr]    Compiling aho-corasick v1.1.3
[INFO] [stderr]    Compiling syn v2.0.103
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]     Checking dpi v0.1.2
[INFO] [stderr]     Checking miniz_oxide v0.8.9
[INFO] [stderr]     Checking http v1.3.1
[INFO] [stderr]     Checking ordered-stream v0.2.0
[INFO] [stderr]     Checking crc32fast v1.4.2
[INFO] [stderr]     Checking bit-vec v0.6.3
[INFO] [stderr]     Checking dioxus-cli-config v0.6.3
[INFO] [stderr]     Checking async-broadcast v0.7.2
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]    Compiling const_format_proc_macros v0.2.34
[INFO] [stderr]     Checking option-ext v0.2.0
[INFO] [stderr]    Compiling ash v0.37.3+1.3.251
[INFO] [stderr]     Checking bit-set v0.5.3
[INFO] [stderr]    Compiling dioxus-interpreter-js v0.6.2
[INFO] [stderr]    Compiling dioxus-document v0.6.3
[INFO] [stderr]    Compiling wgpu-hal v0.19.5
[INFO] [stderr]     Checking flate2 v1.1.2
[INFO] [stderr]     Checking libloading v0.8.8
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]     Checking block-buffer v0.10.4
[INFO] [stderr]     Checking crypto-common v0.1.6
[INFO] [stderr]    Compiling rfd v0.14.1
[INFO] [stderr]    Compiling wry v0.45.0
[INFO] [stderr]     Checking getrandom v0.2.16
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking signal-hook-registry v1.4.5
[INFO] [stderr]     Checking socket2 v0.5.10
[INFO] [stderr]     Checking sha1 v0.10.6
[INFO] [stderr]     Checking mio v1.0.4
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]     Checking xdg-home v1.3.0
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking x11-dl v2.21.0
[INFO] [stderr]     Checking dirs-sys v0.5.0
[INFO] [stderr]     Checking png v0.17.16
[INFO] [stderr]     Checking khronos-egl v6.0.0
[INFO] [stderr]     Checking uuid v1.17.0
[INFO] [stderr]     Checking const_format v0.2.34
[INFO] [stderr]     Checking dirs v6.0.0
[INFO] [stderr]    Compiling dioxus-desktop v0.6.3
[INFO] [stderr]    Compiling wgpu-core v0.19.4
[INFO] [stderr]     Checking sledgehammer_utils v0.3.1
[INFO] [stderr]     Checking thread_local v1.1.9
[INFO] [stderr]     Checking instant v0.1.13
[INFO] [stderr]     Checking raw-window-handle v0.5.2
[INFO] [stderr]     Checking urlencoding v2.1.3
[INFO] [stderr]     Checking home v0.5.11
[INFO] [stderr]     Checking profiling v1.0.16
[INFO] [stderr]     Checking pollster v0.3.0
[INFO] [stderr]     Checking glow v0.13.1
[INFO] [stderr]     Checking cfb v0.7.3
[INFO] [stderr]     Checking tracing-subscriber v0.3.19
[INFO] [stderr]    Compiling wgpu v0.19.4
[INFO] [stderr]     Checking dunce v1.0.5
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking is-terminal v0.4.16
[INFO] [stderr]     Checking libxdo v0.6.0
[INFO] [stderr]    Compiling dioxus-config-macro v0.6.2
[INFO] [stderr]    Compiling regex-automata v0.4.9
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking humantime v2.2.0
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]     Checking infer v0.11.0
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking rayon v1.10.0
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling dioxus-rsx v0.6.2
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]    Compiling zvariant_utils v1.1.0
[INFO] [stderr]     Checking regex v1.11.1
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[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 tracing-attributes v0.1.30
[INFO] [stderr]    Compiling pin-project-internal v1.1.10
[INFO] [stderr]    Compiling warnings-macro v0.2.0
[INFO] [stderr]    Compiling enumflags2_derive v0.7.12
[INFO] [stderr]    Compiling async-trait v0.1.88
[INFO] [stderr]    Compiling serde_repr v0.1.20
[INFO] [stderr]    Compiling const-serialize-macro v0.6.2
[INFO] [stderr]     Checking futures-util v0.3.31
[INFO] [stderr]     Checking pin-project v1.1.10
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling derivative v2.2.0
[INFO] [stderr]    Compiling dioxus-html-internal-macro v0.6.2
[INFO] [stderr]    Compiling sledgehammer_bindgen_macro v0.6.1
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]    Compiling dioxus-core-macro v0.6.3
[INFO] [stderr]    Compiling dlopen2_derive v0.4.1
[INFO] [stderr]    Compiling thiserror-impl v2.0.12
[INFO] [stderr]     Checking tungstenite v0.23.0
[INFO] [stderr]    Compiling bytemuck_derive v1.9.3
[INFO] [stderr]     Checking tokio v1.45.1
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking env_logger v0.10.2
[INFO] [stderr]     Checking warnings v0.2.1
[INFO] [stderr]     Checking zerofrom v0.1.6
[INFO] [stderr]     Checking generational-box v0.6.2
[INFO] [stderr]     Checking dioxus-logger v0.6.2
[INFO] [stderr]     Checking yoke v0.8.0
[INFO] [stderr]     Checking dlopen2 v0.7.0
[INFO] [stderr]     Checking zerovec v0.11.2
[INFO] [stderr]     Checking zerotrie v0.2.2
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]     Checking tinystr v0.8.1
[INFO] [stderr]     Checking potential_utf v0.1.2
[INFO] [stderr]     Checking icu_collections v2.0.0
[INFO] [stderr]     Checking thiserror v2.0.12
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]     Checking bytemuck v1.23.1
[INFO] [stderr]     Checking sledgehammer_bindgen v0.6.0
[INFO] [stderr]    Compiling enumset_derive v0.11.0
[INFO] [stderr]     Checking icu_locale_core v2.0.0
[INFO] [stderr]     Checking icu_provider v2.0.0
[INFO] [stderr]     Checking futures-executor v0.3.31
[INFO] [stderr]     Checking icu_normalizer v2.0.0
[INFO] [stderr]     Checking icu_properties v2.0.1
[INFO] [stderr]     Checking enumset v1.1.6
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.0.3
[INFO] [stderr]    Compiling toml_datetime v0.6.3
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling const-serialize v0.6.2
[INFO] [stderr]    Compiling manganis-core v0.6.2
[INFO] [stderr]    Compiling toml_edit v0.20.2
[INFO] [stderr]    Compiling toml_edit v0.19.15
[INFO] [stderr]     Checking bitflags v2.9.1
[INFO] [stderr]     Checking url v2.5.4
[INFO] [stderr]     Checking enumflags2 v0.7.12
[INFO] [stderr]     Checking euclid v0.22.11
[INFO] [stderr]     Checking keyboard-types v0.7.0
[INFO] [stderr]     Checking nix v0.27.1
[INFO] [stderr]     Checking gpu-descriptor-types v0.1.2
[INFO] [stderr]     Checking gpu-alloc-types v0.3.0
[INFO] [stderr]     Checking spirv v0.3.0+sdk-1.3.268.0
[INFO] [stderr]     Checking wgpu-types v0.19.2
[INFO] [stderr]     Checking gpu-alloc v0.6.0
[INFO] [stderr]     Checking gpu-descriptor v0.2.4
[INFO] [stderr]    Compiling manganis-macro v0.6.2
[INFO] [stderr]     Checking dioxus-core v0.6.3
[INFO] [stderr]     Checking webbrowser v0.8.15
[INFO] [stderr]     Checking manganis v0.6.2
[INFO] [stderr]     Checking global-hotkey v0.5.5
[INFO] [stderr]     Checking naga v0.19.2
[INFO] [stderr]    Compiling toml v0.8.2
[INFO] [stderr]    Compiling proc-macro-crate v2.0.2
[INFO] [stderr]    Compiling proc-macro-crate v1.3.1
[INFO] [stderr]    Compiling system-deps v6.2.2
[INFO] [stderr]    Compiling gtk3-macros v0.18.2
[INFO] [stderr]    Compiling zvariant_derive v4.0.0
[INFO] [stderr]    Compiling zbus_macros v4.0.1
[INFO] [stderr]     Checking dioxus-signals v0.6.3
[INFO] [stderr]     Checking dioxus-devtools-types v0.6.2
[INFO] [stderr]     Checking dioxus-history v0.6.2
[INFO] [stderr]    Compiling glib-macros v0.18.5
[INFO] [stderr]    Compiling glib-sys v0.18.1
[INFO] [stderr]    Compiling gobject-sys v0.18.0
[INFO] [stderr]    Compiling gio-sys v0.18.1
[INFO] [stderr]    Compiling gdk-sys v0.18.2
[INFO] [stderr]    Compiling pango-sys v0.18.0
[INFO] [stderr]    Compiling cairo-sys-rs v0.18.2
[INFO] [stderr]    Compiling gdk-pixbuf-sys v0.18.0
[INFO] [stderr]    Compiling atk-sys v0.18.2
[INFO] [stderr]    Compiling gtk-sys v0.18.2
[INFO] [stderr]    Compiling javascriptcore-rs-sys v1.1.1
[INFO] [stderr]    Compiling soup3-sys v0.5.0
[INFO] [stderr]    Compiling gdkx11-sys v0.18.2
[INFO] [stderr]    Compiling webkit2gtk-sys v2.0.1
[INFO] [stderr]     Checking zvariant v4.0.0
[INFO] [stderr]     Checking dioxus-hooks v0.6.2
[INFO] [stderr]     Checking dioxus-devtools v0.6.2
[INFO] [stderr]     Checking dioxus-html v0.6.3
[INFO] [stderr]     Checking gdkwayland-sys v0.18.2
[INFO] [stderr]     Checking zbus_names v3.0.0
[INFO] [stderr]     Checking zbus v4.0.1
[INFO] [stderr]     Checking glib v0.18.5
[INFO] [stderr]     Checking libappindicator-sys v0.9.0
[INFO] [stderr]     Checking ashpd v0.8.1
[INFO] [stderr]     Checking cairo-rs v0.18.5
[INFO] [stderr]     Checking atk v0.18.2
[INFO] [stderr]     Checking javascriptcore-rs v1.1.2
[INFO] [stderr]     Checking gdk-pixbuf v0.18.5
[INFO] [stderr]     Checking pango v0.18.3
[INFO] [stderr]     Checking soup3 v0.5.0
[INFO] [stderr]     Checking gdk v0.18.2
[INFO] [stderr]     Checking gdkx11 v0.18.2
[INFO] [stderr]     Checking muda v0.15.3
[INFO] [stderr]     Checking libappindicator v0.9.0
[INFO] [stderr]     Checking webkit2gtk v2.0.1
[INFO] [stderr]     Checking tao v0.30.8
[INFO] [stderr]     Checking muda v0.11.5
[INFO] [stderr]     Checking tray-icon v0.19.3
[INFO] [stderr]     Checking dioxus v0.6.3
[INFO] [stderr]     Checking game v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: struct `Camera` is never constructed
[INFO] [stdout]  --> src/camera.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Camera {
[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 `view`, `projection`, and `build_view_projection_matrix` are never used
[INFO] [stdout]   --> src/camera.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl Camera {
[INFO] [stdout]    | ----------- methods in this implementation
[INFO] [stdout] 17 |     /// Tạo ma trận view.
[INFO] [stdout] 18 |     pub fn view(&self) -> Mat4 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn projection(&self) -> Mat4 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn build_view_projection_matrix(&self) -> Mat4 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_FOOD_COUNT` is never used
[INFO] [stdout]   --> src/components.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const MAX_FOOD_COUNT: usize = 1000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FOOD_LIFETIME_SECS` is never used
[INFO] [stdout]   --> src/components.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const FOOD_LIFETIME_SECS: u64 = 60;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GRID_SIZE` is never used
[INFO] [stdout]   --> src/components.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub const GRID_SIZE: i32 = 40;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Direction` is never used
[INFO] [stdout]   --> src/components.rs:22:10
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum Direction {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `opposite` is never used
[INFO] [stdout]   --> src/components.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl Direction {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] 30 |     pub fn opposite(&self) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Position` is never constructed
[INFO] [stdout]   --> src/components.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct Position {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Head` is never constructed
[INFO] [stdout]   --> src/components.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct Head {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Body` is never constructed
[INFO] [stdout]   --> src/components.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct Body;
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Follow` is never constructed
[INFO] [stdout]   --> src/components.rs:56:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct Follow(pub Entity);
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Food` is never constructed
[INFO] [stdout]   --> src/components.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct Food;
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Lifetime` is never constructed
[INFO] [stdout]   --> src/components.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub struct Lifetime {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Snake` is never constructed
[INFO] [stdout]   --> src/components.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub struct Snake {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `timer` and `rate` are never read
[INFO] [stdout]   --> src/components.rs:85:9
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub struct GameTick {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 85 |     pub timer: Instant,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 86 |     pub rate: Duration,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/components.rs:90:18
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub struct Score(pub u32);
[INFO] [stdout]    |            ----- ^^^^^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout]    = note: `Score` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Component` is never used
[INFO] [stdout]  --> src/engine.rs:8:11
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub trait Component: Send + Sync + 'static {}
[INFO] [stdout]   |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `access` and `run` are never used
[INFO] [stdout]   --> src/engine.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub trait System: 'static + Send + Sync {
[INFO] [stdout]    |           ------ methods in this trait
[INFO] [stdout] 17 |     /// Khai báo quyền truy cập dữ liệu của hệ thống.
[INFO] [stdout] 18 |     fn access(&self) -> SystemAccess;
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 19 |     /// Chạy logic của hệ thống.
[INFO] [stdout] 20 |     fn run(&mut self, world: &mut World);
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get` is never used
[INFO] [stdout]   --> src/engine.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl<T: Send + Sync + 'static> State<T> {
[INFO] [stdout]    | --------------------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn get(&self) -> &T {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `a` and `b` are never read
[INFO] [stdout]   --> src/engine.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct Events<T: Event> {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] 39 |     a: Vec<T>,
[INFO] [stdout]    |     ^
[INFO] [stdout] 40 |     b: Vec<T>,
[INFO] [stdout]    |     ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `send`, `read`, and `update` are never used
[INFO] [stdout]   --> src/engine.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | impl<T: Event> Events<T> {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] 50 |     /// Gửi một sự kiện.
[INFO] [stdout] 51 |     pub fn send(&mut self, event: T) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn read(&self) -> impl Iterator<Item = &T> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn update(&mut self) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `id` are never used
[INFO] [stdout]   --> src/engine.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 76 | impl Entity {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 77 |     pub fn new(id: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn id(&self) -> usize {
[INFO] [stdout]    |            ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SystemAccess` is never constructed
[INFO] [stdout]   --> src/engine.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct SystemAccess;
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `pressed`, `just_pressed`, and `just_released` are never read
[INFO] [stdout]   --> src/input.rs:8:9
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct KeyState {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout]  8 |     pub pressed: bool,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]  9 |     pub just_pressed: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 10 |     pub just_released: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `KeyState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `keys` is never read
[INFO] [stdout]   --> src/input.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct Input {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] 15 |     pub keys: HashMap<String, KeyState>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `push`, `update`, `is_key_pressed`, and `is_key_just_pressed` are never used
[INFO] [stdout]   --> src/input.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl Input {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] 19 |     /// Cập nhật trạng thái phím dựa trên KeyboardData truyền vào (không queue event).
[INFO] [stdout] 20 |     pub fn push(&mut self, data: dioxus::prelude::KeyboardData) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn update(&mut self) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn is_key_pressed(&self, code: &str) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn is_key_just_pressed(&self, code: &str) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Renderer` is never used
[INFO] [stdout]  --> src/renderer/mod.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub trait Renderer {
[INFO] [stdout]   |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `new` is never used
[INFO] [stdout]   --> src/renderer/mod.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub fn new(_: ()) -> Box<dyn Renderer> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX` is never used
[INFO] [stdout]   --> src/renderer/gpu.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const MAX: usize = 10_000; // Số lượng instance tối đa
[INFO] [stdout]    |       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Instance` is never constructed
[INFO] [stdout]   --> src/renderer/gpu.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | struct Instance {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Uniform` is never constructed
[INFO] [stdout]   --> src/renderer/gpu.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | struct Uniform {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Gpu` is never constructed
[INFO] [stdout]   --> src/renderer/gpu.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct Gpu<'a> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `run` is never used
[INFO] [stdout]   --> src/schedule/mod.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl Stage {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn run(&mut self, world: &mut World) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `run` is never used
[INFO] [stdout]   --> src/schedule/mod.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl Schedule {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn run(&mut self, world: &mut World) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `entry`, and `run` are never used
[INFO] [stdout]   --> src/schedule/mod.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 70 | impl Schedules {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 71 |     /// Tạo một đối tượng Schedules mới.
[INFO] [stdout] 72 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn entry(&mut self, state: GameState) -> &mut Schedule {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn run(&mut self, world: &mut World) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `archetype_id` and `index` are never read
[INFO] [stdout]   --> src/world/mod.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct Location {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 18 |     archetype_id: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 19 |     index: usize,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Location` 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: enum `Command` is never used
[INFO] [stdout]   --> src/world/mod.rs:23:10
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub enum Command {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EntityBuilder` is never constructed
[INFO] [stdout]   --> src/world/mod.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct EntityBuilder<'a> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `with` is never used
[INFO] [stdout]   --> src/world/mod.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl<'a> EntityBuilder<'a> {
[INFO] [stdout]    | -------------------------- method in this implementation
[INFO] [stdout] 37 |     pub fn with<C: Component>(mut self, component: C) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Commands` is never constructed
[INFO] [stdout]   --> src/world/mod.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct Commands(Vec<Command>);
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `spawn` and `despawn` are never used
[INFO] [stdout]   --> src/world/mod.rs:56:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl Commands {
[INFO] [stdout]    | ------------- methods in this implementation
[INFO] [stdout] 55 |     /// API mới: chỉ buffer ý định spawn, không cần World
[INFO] [stdout] 56 |     pub fn spawn(&mut self) -> EntityBuilder {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn despawn(&mut self, entity: Entity) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `entities`, `archetypes`, `archetype_map`, and `tick_count` are never read
[INFO] [stdout]   --> src/world/mod.rs:71:5
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct World {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] 71 |     entities: Vec<Option<Location>>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 72 |     archetypes: Vec<Archetype>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 73 |     // Map từ một tập hợp các component (đại diện bằng HashSet<TypeId>) đến ID của archetype.
[INFO] [stdout] 74 |     archetype_map: HashMap<Vec<TypeId>, usize>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 75 |     resources: TypeIdMap<Box<dyn Any + Send + Sync>>,
[INFO] [stdout] 76 |     pub tick_count: u64, // Để kích hoạt re-render
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Camera` is never constructed
[INFO] [stdout]  --> src/camera.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Camera {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/world/mod.rs:81:12
[INFO] [stdout]     |
[INFO] [stdout]  79 | impl World {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout]  80 |     /// Tạo một World mới.
[INFO] [stdout]  81 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     fn create_entity(&mut self) -> Entity {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn get<R: Resource>(&self) -> Option<Ref<R>> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn get_mut<R: Resource>(&self) -> Option<RefMut<R>> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn apply_commands(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn query<T: Component>(&self) -> impl Iterator<Item = Entity> + '_ {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn query_component<T: Component>(&self) -> Vec<(Entity, &T)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn query_component_mut<T: Component>(&mut self) -> Vec<(Entity, usize)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn archetypes_mut(&mut self) -> &mut Vec<crate::world::archetype::Archetype> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `view`, `projection`, and `build_view_projection_matrix` are never used
[INFO] [stdout]   --> src/camera.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl Camera {
[INFO] [stdout]    | ----------- methods in this implementation
[INFO] [stdout] 17 |     /// Tạo ma trận view.
[INFO] [stdout] 18 |     pub fn view(&self) -> Mat4 {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn projection(&self) -> Mat4 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn build_view_projection_matrix(&self) -> Mat4 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX_FOOD_COUNT` is never used
[INFO] [stdout]   --> src/components.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub const MAX_FOOD_COUNT: usize = 1000;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FOOD_LIFETIME_SECS` is never used
[INFO] [stdout]   --> src/components.rs:11:11
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub const FOOD_LIFETIME_SECS: u64 = 60;
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GRID_SIZE` is never used
[INFO] [stdout]   --> src/components.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub const GRID_SIZE: i32 = 40;
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]  --> src/world/archetype.rs:9:25
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct ComponentVec(Vec<Box<dyn Any + Send + Sync>>);
[INFO] [stdout]   |            ------------ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |            |
[INFO] [stdout]   |            field in this struct
[INFO] [stdout]   |
[INFO] [stdout]   = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/world/archetype.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl ComponentVec {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 12 |     /// Tạo một ComponentVec mới.
[INFO] [stdout] 13 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub fn push(&mut self, component: Box<dyn Any + Send + Sync>) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn swap_remove(&mut self, index: usize) -> Box<dyn Any + Send + Sync> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn get(&self, index: usize) -> Option<&(dyn Any + Send + Sync)> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn get_mut(&mut self, index: usize) -> Option<&mut (dyn Any + Send + Sync)> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn as_slice<T: 'static>(&self) -> &[T] {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn as_mut_slice<T: 'static>(&mut self) -> &mut [T] {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `components` and `entities` are never read
[INFO] [stdout]   --> src/world/archetype.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct Archetype {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 58 |     /// Map từ TypeId của component đến vector chứa dữ liệu của component đó.
[INFO] [stdout] 59 |     components: HashMap<TypeId, ComponentVec>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 60 |     /// Danh sách các thực thể thuộc về archetype này.
[INFO] [stdout] 61 |     entities: Vec<Entity>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add`, `remove`, `entities`, `get_component_storage`, and `get_component_storage_mut` are never used
[INFO] [stdout]    --> src/world/archetype.rs:66:12
[INFO] [stdout]     |
[INFO] [stdout]  64 | impl Archetype {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  65 |     /// Tạo một Archetype mới với một tập hợp các TypeId của component.
[INFO] [stdout]  66 |     pub fn new(component_types: &[TypeId]) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn add(&mut self, entity: Entity, components: Vec<(TypeId, Box<dyn Any + Send + Sync>)>) -> usize {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn remove(&mut self, index: usize) -> (Entity, Vec<(TypeId, Box<dyn Any + Send + Sync>)>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn entities(&self) -> &[Entity] {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn get_component_storage(&self, type_id: TypeId) -> Option<&ComponentVec> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn get_component_storage_mut(&mut self, type_id: TypeId) -> Option<&mut ComponentVec> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Direction` is never used
[INFO] [stdout]   --> src/components.rs:22:10
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum Direction {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `opposite` is never used
[INFO] [stdout]   --> src/components.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl Direction {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] 30 |     pub fn opposite(&self) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Position` is never constructed
[INFO] [stdout]   --> src/components.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub struct Position {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Head` is never constructed
[INFO] [stdout]   --> src/components.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct Head {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Body` is never constructed
[INFO] [stdout]   --> src/components.rs:53:12
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct Body;
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Follow` is never constructed
[INFO] [stdout]   --> src/components.rs:56:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | pub struct Follow(pub Entity);
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Food` is never constructed
[INFO] [stdout]   --> src/components.rs:58:12
[INFO] [stdout]    |
[INFO] [stdout] 58 | pub struct Food;
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Lifetime` is never constructed
[INFO] [stdout]   --> src/components.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub struct Lifetime {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Snake` is never constructed
[INFO] [stdout]   --> src/components.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub struct Snake {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `timer` and `rate` are never read
[INFO] [stdout]   --> src/components.rs:85:9
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub struct GameTick {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 85 |     pub timer: Instant,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 86 |     pub rate: Duration,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/components.rs:90:18
[INFO] [stdout]    |
[INFO] [stdout] 90 | pub struct Score(pub u32);
[INFO] [stdout]    |            ----- ^^^^^^^
[INFO] [stdout]    |            |
[INFO] [stdout]    |            field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout]    = note: `Score` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Component` is never used
[INFO] [stdout]  --> src/engine.rs:8:11
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub trait Component: Send + Sync + 'static {}
[INFO] [stdout]   |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `access` and `run` are never used
[INFO] [stdout]   --> src/engine.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub trait System: 'static + Send + Sync {
[INFO] [stdout]    |           ------ methods in this trait
[INFO] [stdout] 17 |     /// Khai báo quyền truy cập dữ liệu của hệ thống.
[INFO] [stdout] 18 |     fn access(&self) -> SystemAccess;
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 19 |     /// Chạy logic của hệ thống.
[INFO] [stdout] 20 |     fn run(&mut self, world: &mut World);
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get` is never used
[INFO] [stdout]   --> src/engine.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl<T: Send + Sync + 'static> State<T> {
[INFO] [stdout]    | --------------------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn get(&self) -> &T {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `a` and `b` are never read
[INFO] [stdout]   --> src/engine.rs:39:5
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct Events<T: Event> {
[INFO] [stdout]    |            ------ fields in this struct
[INFO] [stdout] 39 |     a: Vec<T>,
[INFO] [stdout]    |     ^
[INFO] [stdout] 40 |     b: Vec<T>,
[INFO] [stdout]    |     ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `send`, `read`, and `update` are never used
[INFO] [stdout]   --> src/engine.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 49 | impl<T: Event> Events<T> {
[INFO] [stdout]    | ------------------------ methods in this implementation
[INFO] [stdout] 50 |     /// Gửi một sự kiện.
[INFO] [stdout] 51 |     pub fn send(&mut self, event: T) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn read(&self) -> impl Iterator<Item = &T> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn update(&mut self) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `id` are never used
[INFO] [stdout]   --> src/engine.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 76 | impl Entity {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 77 |     pub fn new(id: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 80 |     pub fn id(&self) -> usize {
[INFO] [stdout]    |            ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SystemAccess` is never constructed
[INFO] [stdout]   --> src/engine.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 | pub struct SystemAccess;
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `pressed`, `just_pressed`, and `just_released` are never read
[INFO] [stdout]   --> src/input.rs:8:9
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct KeyState {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout]  8 |     pub pressed: bool,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]  9 |     pub just_pressed: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 10 |     pub just_released: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `KeyState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `keys` is never read
[INFO] [stdout]   --> src/input.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct Input {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] 15 |     pub keys: HashMap<String, KeyState>,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/world/mod.rs:56:18
[INFO] [stdout]    |
[INFO] [stdout] 56 |     pub fn spawn(&mut self) -> EntityBuilder {
[INFO] [stdout]    |                  ^^^^^^^^^     ^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                  |
[INFO] [stdout]    |                  the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 56 |     pub fn spawn(&mut self) -> EntityBuilder<'_> {
[INFO] [stdout]    |                                             ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `push`, `update`, `is_key_pressed`, and `is_key_just_pressed` are never used
[INFO] [stdout]   --> src/input.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl Input {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] 19 |     /// Cập nhật trạng thái phím dựa trên KeyboardData truyền vào (không queue event).
[INFO] [stdout] 20 |     pub fn push(&mut self, data: dioxus::prelude::KeyboardData) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn update(&mut self) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn is_key_pressed(&self, code: &str) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn is_key_just_pressed(&self, code: &str) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Renderer` is never used
[INFO] [stdout]  --> src/renderer/mod.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub trait Renderer {
[INFO] [stdout]   |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `new` is never used
[INFO] [stdout]   --> src/renderer/mod.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub fn new(_: ()) -> Box<dyn Renderer> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MAX` is never used
[INFO] [stdout]   --> src/renderer/gpu.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const MAX: usize = 10_000; // Số lượng instance tối đa
[INFO] [stdout]    |       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Instance` is never constructed
[INFO] [stdout]   --> src/renderer/gpu.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | struct Instance {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Uniform` is never constructed
[INFO] [stdout]   --> src/renderer/gpu.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | struct Uniform {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Gpu` is never constructed
[INFO] [stdout]   --> src/renderer/gpu.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct Gpu<'a> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/world/mod.rs:101:29
[INFO] [stdout]     |
[INFO] [stdout] 101 |     pub fn get<R: Resource>(&self) -> Option<Ref<R>> {
[INFO] [stdout]     |                             ^^^^^            ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 101 |     pub fn get<R: Resource>(&self) -> Option<Ref<'_, R>> {
[INFO] [stdout]     |                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `run` is never used
[INFO] [stdout]   --> src/schedule/mod.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl Stage {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn run(&mut self, world: &mut World) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `run` is never used
[INFO] [stdout]   --> src/schedule/mod.rs:59:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl Schedule {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn run(&mut self, world: &mut World) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `entry`, and `run` are never used
[INFO] [stdout]   --> src/schedule/mod.rs:72:12
[INFO] [stdout]    |
[INFO] [stdout] 70 | impl Schedules {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 71 |     /// Tạo một đối tượng Schedules mới.
[INFO] [stdout] 72 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 77 |     pub fn entry(&mut self, state: GameState) -> &mut Schedule {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 82 |     pub fn run(&mut self, world: &mut World) {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `archetype_id` and `index` are never read
[INFO] [stdout]   --> src/world/mod.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub struct Location {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 18 |     archetype_id: usize,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 19 |     index: usize,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Location` 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: enum `Command` is never used
[INFO] [stdout]   --> src/world/mod.rs:23:10
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub enum Command {
[INFO] [stdout]    |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `EntityBuilder` is never constructed
[INFO] [stdout]   --> src/world/mod.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | pub struct EntityBuilder<'a> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `with` is never used
[INFO] [stdout]   --> src/world/mod.rs:37:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | impl<'a> EntityBuilder<'a> {
[INFO] [stdout]    | -------------------------- method in this implementation
[INFO] [stdout] 37 |     pub fn with<C: Component>(mut self, component: C) -> Self {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Commands` is never constructed
[INFO] [stdout]   --> src/world/mod.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct Commands(Vec<Command>);
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/world/mod.rs:108:33
[INFO] [stdout]     |
[INFO] [stdout] 108 |     pub fn get_mut<R: Resource>(&self) -> Option<RefMut<R>> {
[INFO] [stdout]     |                                 ^^^^^            ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                                 |
[INFO] [stdout]     |                                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 108 |     pub fn get_mut<R: Resource>(&self) -> Option<RefMut<'_, R>> {
[INFO] [stdout]     |                                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `spawn` and `despawn` are never used
[INFO] [stdout]   --> src/world/mod.rs:56:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | impl Commands {
[INFO] [stdout]    | ------------- methods in this implementation
[INFO] [stdout] 55 |     /// API mới: chỉ buffer ý định spawn, không cần World
[INFO] [stdout] 56 |     pub fn spawn(&mut self) -> EntityBuilder {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub fn despawn(&mut self, entity: Entity) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `entities`, `archetypes`, `archetype_map`, and `tick_count` are never read
[INFO] [stdout]   --> src/world/mod.rs:71:5
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub struct World {
[INFO] [stdout]    |            ----- fields in this struct
[INFO] [stdout] 71 |     entities: Vec<Option<Location>>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 72 |     archetypes: Vec<Archetype>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 73 |     // Map từ một tập hợp các component (đại diện bằng HashSet<TypeId>) đến ID của archetype.
[INFO] [stdout] 74 |     archetype_map: HashMap<Vec<TypeId>, usize>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 75 |     resources: TypeIdMap<Box<dyn Any + Send + Sync>>,
[INFO] [stdout] 76 |     pub tick_count: u64, // Để kích hoạt re-render
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/world/mod.rs:81:12
[INFO] [stdout]     |
[INFO] [stdout]  79 | impl World {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout]  80 |     /// Tạo một World mới.
[INFO] [stdout]  81 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     fn create_entity(&mut self) -> Entity {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn get<R: Resource>(&self) -> Option<Ref<R>> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 108 |     pub fn get_mut<R: Resource>(&self) -> Option<RefMut<R>> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub fn apply_commands(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn query<T: Component>(&self) -> impl Iterator<Item = Entity> + '_ {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     pub fn query_component<T: Component>(&self) -> Vec<(Entity, &T)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 177 |     pub fn query_component_mut<T: Component>(&mut self) -> Vec<(Entity, usize)> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     pub fn archetypes_mut(&mut self) -> &mut Vec<crate::world::archetype::Archetype> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]  --> src/world/archetype.rs:9:25
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct ComponentVec(Vec<Box<dyn Any + Send + Sync>>);
[INFO] [stdout]   |            ------------ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |            |
[INFO] [stdout]   |            field in this struct
[INFO] [stdout]   |
[INFO] [stdout]   = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/world/archetype.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl ComponentVec {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 12 |     /// Tạo một ComponentVec mới.
[INFO] [stdout] 13 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub fn push(&mut self, component: Box<dyn Any + Send + Sync>) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn swap_remove(&mut self, index: usize) -> Box<dyn Any + Send + Sync> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn get(&self, index: usize) -> Option<&(dyn Any + Send + Sync)> {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn get_mut(&mut self, index: usize) -> Option<&mut (dyn Any + Send + Sync)> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn as_slice<T: 'static>(&self) -> &[T] {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn as_mut_slice<T: 'static>(&mut self) -> &mut [T] {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `components` and `entities` are never read
[INFO] [stdout]   --> src/world/archetype.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub struct Archetype {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 58 |     /// Map từ TypeId của component đến vector chứa dữ liệu của component đó.
[INFO] [stdout] 59 |     components: HashMap<TypeId, ComponentVec>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 60 |     /// Danh sách các thực thể thuộc về archetype này.
[INFO] [stdout] 61 |     entities: Vec<Entity>,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add`, `remove`, `entities`, `get_component_storage`, and `get_component_storage_mut` are never used
[INFO] [stdout]    --> src/world/archetype.rs:66:12
[INFO] [stdout]     |
[INFO] [stdout]  64 | impl Archetype {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout]  65 |     /// Tạo một Archetype mới với một tập hợp các TypeId của component.
[INFO] [stdout]  66 |     pub fn new(component_types: &[TypeId]) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  75 |     pub fn add(&mut self, entity: Entity, components: Vec<(TypeId, Box<dyn Any + Send + Sync>)>) -> usize {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout]  86 |     pub fn remove(&mut self, index: usize) -> (Entity, Vec<(TypeId, Box<dyn Any + Send + Sync>)>) {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  96 |     pub fn entities(&self) -> &[Entity] {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn get_component_storage(&self, type_id: TypeId) -> Option<&ComponentVec> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     pub fn get_component_storage_mut(&mut self, type_id: TypeId) -> Option<&mut ComponentVec> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/world/mod.rs:56:18
[INFO] [stdout]    |
[INFO] [stdout] 56 |     pub fn spawn(&mut self) -> EntityBuilder {
[INFO] [stdout]    |                  ^^^^^^^^^     ^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                  |
[INFO] [stdout]    |                  the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 56 |     pub fn spawn(&mut self) -> EntityBuilder<'_> {
[INFO] [stdout]    |                                             ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/world/mod.rs:101:29
[INFO] [stdout]     |
[INFO] [stdout] 101 |     pub fn get<R: Resource>(&self) -> Option<Ref<R>> {
[INFO] [stdout]     |                             ^^^^^            ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 101 |     pub fn get<R: Resource>(&self) -> Option<Ref<'_, R>> {
[INFO] [stdout]     |                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/world/mod.rs:108:33
[INFO] [stdout]     |
[INFO] [stdout] 108 |     pub fn get_mut<R: Resource>(&self) -> Option<RefMut<R>> {
[INFO] [stdout]     |                                 ^^^^^            ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                                 |
[INFO] [stdout]     |                                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 108 |     pub fn get_mut<R: Resource>(&self) -> Option<RefMut<'_, R>> {
[INFO] [stdout]     |                                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 32s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: ashpd v0.8.1
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] running `Command { std: "docker" "inspect" "098cc2e50974c586193c7517fd81a720d38025c08f3ec764aa730d22700fcbc6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "098cc2e50974c586193c7517fd81a720d38025c08f3ec764aa730d22700fcbc6", kill_on_drop: false }`
[INFO] [stdout] 098cc2e50974c586193c7517fd81a720d38025c08f3ec764aa730d22700fcbc6
