shadowengine2d 2.0.0

A comprehensive 2D game engine built in Rust with ECS, rendering, audio, assets, animations, and scene management
Documentation
Build #2483556 2025-09-07 01:22:26

# rustc version rustc 1.91.0-nightly (6c699a372 2025-09-05)

# docs.rs version docsrs 0.6.0 (8bbaf878 2025-08-22)

# build log [INFO] running `Command { std: "docker" "create" "-v" "/home/cratesfyi/workspace-builder/builds/shadowengine2d-2.0.0/target:/opt/rustwide/target:rw,Z" "-v" "/home/cratesfyi/workspace-builder/builds/shadowengine2d-2.0.0/source:/opt/rustwide/workdir:ro,Z" "-v" "/home/cratesfyi/workspace-builder/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/home/cratesfyi/workspace-builder/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "DOCS_RS=1" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "6442450944" "--cpus" "6" "--user" "1001:1001" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:7ad1b28ee6f5f7f699f6cf7015098d6ccdd96d6f2d78dd06228f5b4c9faf309c" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "rustdoc" "--lib" "-Zrustdoc-map" "--config" "build.rustdocflags=[\"--cfg\", \"docsrs\", \"-Z\", \"unstable-options\", \"--emit=invocation-specific\", \"--resource-suffix\", \"-20250905-1.91.0-nightly-6c699a372\", \"--static-root-path\", \"/-/rustdoc.static/\", \"--cap-lints\", \"warn\", \"--extern-html-root-takes-precedence\"]" "--offline" "-Zunstable-options" "--config=doc.extern-map.registries.crates-io=\"https://docs.rs/{pkg_name}/{version}/x86_64-unknown-linux-gnu\"" "-Zrustdoc-scrape-examples" "-j6" "--target" "x86_64-unknown-linux-gnu", kill_on_drop: false }` [INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap. [INFO] [stdout] 545ce406914b479d7d5a65401105d7ac62d0932623422b6c3aa29af2b82acf8d [INFO] running `Command { std: "docker" "start" "-a" "545ce406914b479d7d5a65401105d7ac62d0932623422b6c3aa29af2b82acf8d", kill_on_drop: false }` [INFO] [stderr] warning: unused imports: `Color`, `EntityManager`, `Position`, `Size`, `Sprite`, `Transform`, and `Velocity` [INFO] [stderr] --> src/app.rs:28:14 [INFO] [stderr] | [INFO] [stderr] 28 | entity::{EntityManager, Transform, Sprite, Velocity}, [INFO] [stderr] | ^^^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^ ^^^^^^^^ [INFO] [stderr] 29 | math::{Position, Size, Color}, [INFO] [stderr] | ^^^^^^^^ ^^^^ ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::any::Any` [INFO] [stderr] --> src/app.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | use std::any::Any; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Component` and `Size` [INFO] [stderr] --> src/entity_builder.rs:26:68 [INFO] [stderr] | [INFO] [stderr] 26 | entity::{EntityId, EntityManager, Transform, Sprite, Velocity, Component}, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] 27 | math::{Position, Size, Color}, [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Size` [INFO] [stderr] --> src/ui.rs:81:22 [INFO] [stderr] | [INFO] [stderr] 81 | math::{Position, Size, Color, Rect}, [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::sync::Arc` [INFO] [stderr] --> src/scene.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | use std::sync::Arc; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `time::Time` [INFO] [stderr] --> src/scene.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | time::Time, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Vec2` [INFO] [stderr] --> src/animation.rs:28:35 [INFO] [stderr] | [INFO] [stderr] 28 | math::{Position, Size, Color, Vec2}, [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `crate::EngineResult` [INFO] [stderr] --> src/particles.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use crate::EngineResult; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated function `Output::output_print`: Use Output::debug instead [INFO] [stderr] --> src/lib.rs:65:26 [INFO] [stderr] | [INFO] [stderr] 65 | Output::{Output, output_print, output_enabled}, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(deprecated)]` on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated function `Output::output_enabled`: Use Output::is_enabled instead [INFO] [stderr] --> src/lib.rs:65:40 [INFO] [stderr] | [INFO] [stderr] 65 | Output::{Output, output_print, output_enabled}, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `engine` [INFO] [stderr] --> src/engine.rs:89:24 [INFO] [stderr] | [INFO] [stderr] 89 | fn init(&mut self, engine: &mut Engine) -> EngineResult<()> { [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_engine` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `engine` [INFO] [stderr] --> src/engine.rs:99:28 [INFO] [stderr] | [INFO] [stderr] 99 | fn on_event(&mut self, engine: &mut Engine, event: &WindowEvent) -> EngineResult<()> { [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_engine` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `event` [INFO] [stderr] --> src/engine.rs:99:49 [INFO] [stderr] | [INFO] [stderr] 99 | fn on_event(&mut self, engine: &mut Engine, event: &WindowEvent) -> EngineResult<()> { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_event` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `engine` [INFO] [stderr] --> src/engine.rs:103:27 [INFO] [stderr] | [INFO] [stderr] 103 | fn cleanup(&mut self, engine: &mut Engine) {} [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_engine` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `window` [INFO] [stderr] --> src/window.rs:77:27 [INFO] [stderr] | [INFO] [stderr] 77 | fn on_init(&mut self, window: &Window) -> EngineResult<()> { [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_window` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `window` [INFO] [stderr] --> src/window.rs:85:35 [INFO] [stderr] | [INFO] [stderr] 85 | fn on_window_event(&mut self, window: &Window, event: &WindowEvent) -> EngineResult<()> { [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_window` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `event` [INFO] [stderr] --> src/window.rs:85:52 [INFO] [stderr] | [INFO] [stderr] 85 | fn on_window_event(&mut self, window: &Window, event: &WindowEvent) -> EngineResult<()> { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_event` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `engine` [INFO] [stderr] --> src/app.rs:168:28 [INFO] [stderr] | [INFO] [stderr] 168 | fn on_event(&mut self, engine: &mut Engine, event: &WindowEvent) -> EngineResult<()> { [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_engine` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `available_height` [INFO] [stderr] --> src/ui.rs:291:13 [INFO] [stderr] | [INFO] [stderr] 291 | let available_height = self.rect.height - 2.0 * self.padding - total_spacing; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_available_height` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `available_width` [INFO] [stderr] --> src/ui.rs:305:13 [INFO] [stderr] | [INFO] [stderr] 305 | let available_width = self.rect.width - 2.0 * self.padding - total_spacing; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_available_width` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `size` [INFO] [stderr] --> src/assets.rs:580:54 [INFO] [stderr] | [INFO] [stderr] 580 | pub fn get_glyph_metrics(&self, character: char, size: f32) -> Option<GlyphMetrics> { [INFO] [stderr] | ^^^^ help: if this is intentional, prefix it with an underscore: `_size` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `entity_manager` [INFO] [stderr] --> src/scene.rs:213:28 [INFO] [stderr] | [INFO] [stderr] 213 | fn on_enter(&mut self, entity_manager: &mut EntityManager, resources: &mut Resources) -> EngineResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_entity_manager` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `resources` [INFO] [stderr] --> src/scene.rs:213:64 [INFO] [stderr] | [INFO] [stderr] 213 | fn on_enter(&mut self, entity_manager: &mut EntityManager, resources: &mut Resources) -> EngineResult<()> { [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_resources` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `entity_manager` [INFO] [stderr] --> src/scene.rs:217:27 [INFO] [stderr] | [INFO] [stderr] 217 | fn on_exit(&mut self, entity_manager: &mut EntityManager, resources: &mut Resources) -> EngineResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_entity_manager` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `resources` [INFO] [stderr] --> src/scene.rs:217:63 [INFO] [stderr] | [INFO] [stderr] 217 | fn on_exit(&mut self, entity_manager: &mut EntityManager, resources: &mut Resources) -> EngineResult<()> { [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_resources` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `entity_manager` [INFO] [stderr] --> src/scene.rs:223:26 [INFO] [stderr] | [INFO] [stderr] 223 | fn render(&mut self, entity_manager: &mut EntityManager, resources: &mut Resources) -> EngineResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_entity_manager` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `resources` [INFO] [stderr] --> src/scene.rs:223:62 [INFO] [stderr] | [INFO] [stderr] 223 | fn render(&mut self, entity_manager: &mut EntityManager, resources: &mut Resources) -> EngineResult<()> { [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_resources` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `asset_manager` [INFO] [stderr] --> src/scene.rs:227:34 [INFO] [stderr] | [INFO] [stderr] 227 | fn preload_assets(&mut self, asset_manager: &mut AssetManager) -> EngineResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_asset_manager` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `asset_manager` [INFO] [stderr] --> src/scene.rs:231:33 [INFO] [stderr] | [INFO] [stderr] 231 | fn unload_assets(&mut self, asset_manager: &mut AssetManager) -> EngineResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_asset_manager` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `event` [INFO] [stderr] --> src/scene.rs:235:32 [INFO] [stderr] | [INFO] [stderr] 235 | fn handle_event(&mut self, event: &SceneEvent, entity_manager: &mut EntityManager, resources: &mut Resources) -> EngineResult<()> { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_event` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `entity_manager` [INFO] [stderr] --> src/scene.rs:235:52 [INFO] [stderr] | [INFO] [stderr] 235 | fn handle_event(&mut self, event: &SceneEvent, entity_manager: &mut EntityManager, resources: &mut Resources) -> EngineResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_entity_manager` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `resources` [INFO] [stderr] --> src/scene.rs:235:88 [INFO] [stderr] | [INFO] [stderr] 235 | fn handle_event(&mut self, event: &SceneEvent, entity_manager: &mut EntityManager, resources: &mut Resources) -> EngineResult<()> { [INFO] [stderr] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_resources` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `duration` [INFO] [stderr] --> src/scene.rs:373:31 [INFO] [stderr] | [INFO] [stderr] 373 | Self::CrossFade { duration, elapsed } => { [INFO] [stderr] | ^^^^^^^^ help: try ignoring the field: `duration: _` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `entity_manager` [INFO] [stderr] --> src/scene.rs:543:28 [INFO] [stderr] | [INFO] [stderr] 543 | fn on_enter(&mut self, entity_manager: &mut EntityManager, _resources: &mut Resources) -> EngineResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_entity_manager` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `position` [INFO] [stderr] --> src/scene.rs:673:13 [INFO] [stderr] | [INFO] [stderr] 673 | for position in &self.spawn_points { [INFO] [stderr] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `music_id` [INFO] [stderr] --> src/scene.rs:748:21 [INFO] [stderr] | [INFO] [stderr] 748 | if let Some(music_id) = self.background_music { [INFO] [stderr] | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_music_id` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `bg_id` [INFO] [stderr] --> src/scene.rs:751:21 [INFO] [stderr] | [INFO] [stderr] 751 | if let Some(bg_id) = self.background_image { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_bg_id` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `asset_manager` [INFO] [stderr] --> src/scene.rs:746:34 [INFO] [stderr] | [INFO] [stderr] 746 | fn preload_assets(&mut self, asset_manager: &mut AssetManager) -> EngineResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_asset_manager` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `overlay_color` [INFO] [stderr] --> src/scene.rs:966:13 [INFO] [stderr] | [INFO] [stderr] 966 | let overlay_color = Color::new(0.0, 0.0, 0.0, self.background_alpha); [INFO] [stderr] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_overlay_color` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `item` [INFO] [stderr] --> src/scene.rs:969:21 [INFO] [stderr] | [INFO] [stderr] 969 | for (index, item) in self.menu_items.iter().enumerate() { [INFO] [stderr] | ^^^^ help: if this is intentional, prefix it with an underscore: `_item` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `y_pos` [INFO] [stderr] --> src/scene.rs:971:17 [INFO] [stderr] | [INFO] [stderr] 971 | let y_pos = 250.0 + index as f32 * 50.0; [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_y_pos` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `color` [INFO] [stderr] --> src/scene.rs:973:17 [INFO] [stderr] | [INFO] [stderr] 973 | let color = if is_selected { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_color` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `entity_manager` [INFO] [stderr] --> src/scene.rs:964:26 [INFO] [stderr] | [INFO] [stderr] 964 | fn render(&mut self, entity_manager: &mut EntityManager, _resources: &mut Resources) -> EngineResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_entity_manager` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `current_frame` [INFO] [stderr] --> src/animation.rs:166:21 [INFO] [stderr] | [INFO] [stderr] 166 | if let Some(current_frame) = entity_anims.get_current_sprite_frame() { [INFO] [stderr] | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_frame` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/animation.rs:168:21 [INFO] [stderr] | [INFO] [stderr] 168 | let mut new_sprite = sprite.clone(); [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `set_id` [INFO] [stderr] --> src/animation.rs:576:14 [INFO] [stderr] | [INFO] [stderr] 576 | for (set_id, (anim_id, state)) in &self.active_animations { [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_set_id` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `anim_id` [INFO] [stderr] --> src/animation.rs:576:23 [INFO] [stderr] | [INFO] [stderr] 576 | for (set_id, (anim_id, state)) in &self.active_animations { [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_anim_id` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `state` [INFO] [stderr] --> src/animation.rs:576:32 [INFO] [stderr] | [INFO] [stderr] 576 | for (set_id, (anim_id, state)) in &self.active_animations { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_state` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `set_id` [INFO] [stderr] --> src/animation.rs:589:14 [INFO] [stderr] | [INFO] [stderr] 589 | for (set_id, (anim_id, state)) in &self.active_animations { [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_set_id` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `anim_id` [INFO] [stderr] --> src/animation.rs:589:23 [INFO] [stderr] | [INFO] [stderr] 589 | for (set_id, (anim_id, state)) in &self.active_animations { [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_anim_id` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `state` [INFO] [stderr] --> src/animation.rs:589:32 [INFO] [stderr] | [INFO] [stderr] 589 | for (set_id, (anim_id, state)) in &self.active_animations { [INFO] [stderr] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_state` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/animation.rs:586:13 [INFO] [stderr] | [INFO] [stderr] 586 | let mut delta = TransformDelta::default(); [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/animation.rs:587:13 [INFO] [stderr] | [INFO] [stderr] 587 | let mut has_delta = false; [INFO] [stderr] | ----^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `eased_t` [INFO] [stderr] --> src/animation.rs:658:21 [INFO] [stderr] | [INFO] [stderr] 658 | let eased_t = next_kf.easing.apply(t); [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_eased_t` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `eased_t` [INFO] [stderr] --> src/animation.rs:673:21 [INFO] [stderr] | [INFO] [stderr] 673 | let eased_t = next_kf.easing.apply(t); [INFO] [stderr] | ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_eased_t` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `default_tile_id` [INFO] [stderr] --> src/tilemap.rs:305:71 [INFO] [stderr] | [INFO] [stderr] 305 | pub fn load_from_csv(&mut self, layer_name: &str, csv_data: &str, default_tile_id: TileId) -> EngineResult<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_default_tile_id` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `angle_deg` [INFO] [stderr] --> src/particles.rs:120:35 [INFO] [stderr] | [INFO] [stderr] 120 | EmissionShape::Cone { angle_deg } => { [INFO] [stderr] | ^^^^^^^^^ help: try ignoring the field: `angle_deg: _` [INFO] [stderr] [INFO] [stderr] warning: field `device` is never read [INFO] [stderr] --> src/audio.rs:520:5 [INFO] [stderr] | [INFO] [stderr] 519 | pub struct AudioBackend { [INFO] [stderr] | ------------ field in this struct [INFO] [stderr] 520 | device: Arc<Mutex<AudioDevice>>, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `AudioBackend` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: fields `position` and `pitch` are never read [INFO] [stderr] --> src/audio.rs:708:5 [INFO] [stderr] | [INFO] [stderr] 707 | pub struct ContextSource { [INFO] [stderr] | ------------- fields in this struct [INFO] [stderr] 708 | position: f32, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] 709 | volume: f32, [INFO] [stderr] 710 | pitch: f32, [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `ContextSource` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: field `changed_files` is never read [INFO] [stderr] --> src/assets.rs:807:5 [INFO] [stderr] | [INFO] [stderr] 805 | pub struct FileWatcher { [INFO] [stderr] | ----------- field in this struct [INFO] [stderr] 806 | watched_files: HashMap<AssetId, PathBuf>, [INFO] [stderr] 807 | changed_files: Vec<AssetId>, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `FileWatcher` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: field `title_text` is never read [INFO] [stderr] --> src/scene.rs:468:5 [INFO] [stderr] | [INFO] [stderr] 463 | pub struct MenuScene { [INFO] [stderr] | --------- field in this struct [INFO] [stderr] ... [INFO] [stderr] 468 | title_text: String, [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `MenuScene` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: field `level_id` is never read [INFO] [stderr] --> src/scene.rs:599:5 [INFO] [stderr] | [INFO] [stderr] 597 | pub struct GameScene { [INFO] [stderr] | --------- field in this struct [INFO] [stderr] 598 | name: String, [INFO] [stderr] 599 | level_id: u32, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `GameScene` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: field `animation_layers` is never read [INFO] [stderr] --> src/animation.rs:460:5 [INFO] [stderr] | [INFO] [stderr] 457 | pub struct EntityAnimations { [INFO] [stderr] | ---------------- field in this struct [INFO] [stderr] ... [INFO] [stderr] 460 | animation_layers: Vec<AnimationLayer>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `EntityAnimations` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: methods `update_animation_state`, `update_transform_animation`, and `update_color_animation` are never used [INFO] [stderr] --> src/animation.rs:601:8 [INFO] [stderr] | [INFO] [stderr] 463 | impl EntityAnimations { [INFO] [stderr] | --------------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 601 | fn update_animation_state(&self, animation: &Animation, state: &mut AnimationState, delta_time: f32) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 650 | fn update_transform_animation(&self, keyframes: &[TransformKeyframe], state: &mut AnimationState) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 665 | fn update_color_animation(&self, keyframes: &[ColorKeyframe], state: &mut AnimationState) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: module `Output` should have a snake case name [INFO] [stderr] --> src/lib.rs:42:9 [INFO] [stderr] | [INFO] [stderr] 42 | pub mod Output; [INFO] [stderr] | ^^^^^^ help: convert the identifier to snake case (notice the capitalization): `output` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stderr] --> src/entity_builder.rs:77:14 [INFO] [stderr] | [INFO] [stderr] 77 | fn spawn(&mut self) -> EntityBuilder; [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stderr] | | [INFO] [stderr] | the lifetime is elided here [INFO] [stderr] | [INFO] [stderr] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stderr] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stderr] help: use `'_` for type paths [INFO] [stderr] | [INFO] [stderr] 77 | fn spawn(&mut self) -> EntityBuilder<'_>; [INFO] [stderr] | ++++ [INFO] [stderr] [INFO] [stderr] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stderr] --> src/entity_builder.rs:81:14 [INFO] [stderr] | [INFO] [stderr] 81 | fn spawn(&mut self) -> EntityBuilder { [INFO] [stderr] | ^^^^^^^^^ ^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stderr] | | [INFO] [stderr] | the lifetime is elided here [INFO] [stderr] | [INFO] [stderr] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stderr] help: use `'_` for type paths [INFO] [stderr] | [INFO] [stderr] 81 | fn spawn(&mut self) -> EntityBuilder<'_> { [INFO] [stderr] | ++++ [INFO] [stderr] [INFO] [stderr] warning: `shadowengine2d` (lib) generated 67 warnings (run `cargo fix --lib -p shadowengine2d` to apply 13 suggestions) [INFO] [stderr] Scraping shadowengine2d v2.0.0 (/opt/rustwide/workdir) [INFO] [stderr] Documenting shadowengine2d v2.0.0 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.36s [INFO] [stderr] Generated /opt/rustwide/target/x86_64-unknown-linux-gnu/doc/shadowengine2d/index.html [INFO] running `Command { std: "docker" "inspect" "545ce406914b479d7d5a65401105d7ac62d0932623422b6c3aa29af2b82acf8d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "545ce406914b479d7d5a65401105d7ac62d0932623422b6c3aa29af2b82acf8d", kill_on_drop: false }` [INFO] [stdout] 545ce406914b479d7d5a65401105d7ac62d0932623422b6c3aa29af2b82acf8d