[INFO] cloning repository https://github.com/sudokatie/abyss [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/sudokatie/abyss" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsudokatie%2Fabyss", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsudokatie%2Fabyss'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] b5fb56d8a0a9a501995be58c696fde9ee69aa21a [INFO] checking sudokatie/abyss against master#03c609abb6638f9d7f49f34326d4137d07f5cd61 for pr-155945 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsudokatie%2Fabyss" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/sudokatie/abyss [INFO] finished tweaking git repo https://github.com/sudokatie/abyss [INFO] tweaked toml for git repo https://github.com/sudokatie/abyss written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/sudokatie/abyss on toolchain 03c609abb6638f9d7f49f34326d4137d07f5cd61 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+03c609abb6638f9d7f49f34326d4137d07f5cd61" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/sudokatie/abyss 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" "+03c609abb6638f9d7f49f34326d4137d07f5cd61" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded lz4_flex v0.11.6 [INFO] [stderr] Downloaded noise v0.9.0 [INFO] [stderr] Downloaded puffin v0.19.1 [INFO] [stderr] Downloaded renet v0.0.16 [INFO] [stderr] Downloaded renetcode v0.0.12 [INFO] [stderr] Downloaded octets v0.3.5 [INFO] [stderr] Downloaded egui-winit v0.30.0 [INFO] [stderr] Downloaded egui-wgpu v0.30.0 [INFO] [stderr] Downloaded triple_buffer v8.1.1 [INFO] [stderr] Downloaded kira v0.9.6 [INFO] [stderr] Downloaded ringbuf v0.3.3 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+03c609abb6638f9d7f49f34326d4137d07f5cd61" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 74a66448aaa60876e1798d29bff1786bd747dbba3d5b86779f5e99e8a5704552 [INFO] running `Command { std: "docker" "start" "-a" "74a66448aaa60876e1798d29bff1786bd747dbba3d5b86779f5e99e8a5704552", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "74a66448aaa60876e1798d29bff1786bd747dbba3d5b86779f5e99e8a5704552", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "74a66448aaa60876e1798d29bff1786bd747dbba3d5b86779f5e99e8a5704552", kill_on_drop: false }` [INFO] [stdout] 74a66448aaa60876e1798d29bff1786bd747dbba3d5b86779f5e99e8a5704552 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+03c609abb6638f9d7f49f34326d4137d07f5cd61" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 899f786810a0f7a52904f86b27672535f5939d19b8165d665383e213eb102cbf [INFO] running `Command { std: "docker" "start" "-a" "899f786810a0f7a52904f86b27672535f5939d19b8165d665383e213eb102cbf", kill_on_drop: false }` [INFO] [stderr] Checking bitflags v2.11.0 [INFO] [stderr] Compiling bytemuck_derive v1.10.2 [INFO] [stderr] Compiling wayland-sys v0.31.11 [INFO] [stderr] Compiling quick-xml v0.39.2 [INFO] [stderr] Compiling wayland-backend v0.3.15 [INFO] [stderr] Checking parking_lot_core v0.9.12 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking getrandom v0.3.4 [INFO] [stderr] Checking getrandom v0.2.17 [INFO] [stderr] Checking memmap2 v0.9.10 [INFO] [stderr] Compiling winit v0.30.13 [INFO] [stderr] Checking deranged v0.5.8 [INFO] [stderr] Checking x11-dl v2.21.0 [INFO] [stderr] Checking tracing-subscriber v0.3.23 [INFO] [stderr] Checking itertools v0.10.5 [INFO] [stderr] Checking ahash v0.8.12 [INFO] [stderr] Checking bumpalo v3.20.2 [INFO] [stderr] Checking profiling v1.0.17 [INFO] [stderr] Checking rustix v1.1.4 [INFO] [stderr] Checking rand_core v0.6.4 [INFO] [stderr] Checking rustix v0.38.44 [INFO] [stderr] Checking xkbcommon-dl v0.4.2 [INFO] [stderr] Checking parking_lot v0.12.5 [INFO] [stderr] Checking codespan-reporting v0.11.1 [INFO] [stderr] Checking spirv v0.3.0+sdk-1.3.268.0 [INFO] [stderr] Checking ppv-lite86 v0.2.21 [INFO] [stderr] Checking unicode-xid v0.2.6 [INFO] [stderr] Checking hashbrown v0.15.5 [INFO] [stderr] Checking crypto-common v0.1.7 [INFO] [stderr] Checking gpu-descriptor-types v0.2.0 [INFO] [stderr] Checking gpu-alloc-types v0.3.0 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking khronos-egl v6.0.0 [INFO] [stderr] Checking gpu-alloc v0.6.0 [INFO] [stderr] Checking renderdoc-sys v1.1.0 [INFO] [stderr] Checking cursor-icon v1.2.0 [INFO] [stderr] Checking dpi v0.1.2 [INFO] [stderr] Checking smol_str v0.2.2 [INFO] [stderr] Checking glam v0.29.3 [INFO] [stderr] Compiling wayland-scanner v0.31.10 [INFO] [stderr] Checking ron v0.8.1 [INFO] [stderr] Checking rand v0.8.5 [INFO] [stderr] Checking gpu-descriptor v0.3.2 [INFO] [stderr] Checking bincode v1.3.3 [INFO] [stderr] Checking rand_xorshift v0.3.0 [INFO] [stderr] Checking puffin v0.19.1 [INFO] [stderr] Checking inout v0.1.4 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Checking twox-hash v2.1.2 [INFO] [stderr] Checking zeroize v1.8.2 [INFO] [stderr] Checking serde_json v1.0.149 [INFO] [stderr] Checking universal-hash v0.5.1 [INFO] [stderr] Checking time v0.3.47 [INFO] [stderr] Compiling naga v23.1.0 [INFO] [stderr] Checking cipher v0.4.4 [INFO] [stderr] Checking lz4_flex v0.11.6 [INFO] [stderr] Checking bytemuck v1.25.0 [INFO] [stderr] Checking poly1305 v0.8.0 [INFO] [stderr] Compiling strum_macros v0.26.4 [INFO] [stderr] Checking chacha20 v0.9.1 [INFO] [stderr] Checking icu_normalizer v2.2.0 [INFO] [stderr] Checking aead v0.5.2 [INFO] [stderr] Checking noise v0.9.0 [INFO] [stderr] Checking tiny-skia-path v0.11.4 [INFO] [stderr] Checking symphonia-core v0.5.5 [INFO] [stderr] Checking emath v0.30.0 [INFO] [stderr] Compiling wgpu-hal v23.0.1 [INFO] [stderr] Compiling naga v24.0.0 [INFO] [stderr] Compiling alsa-sys v0.3.1 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Checking chacha20poly1305 v0.10.1 [INFO] [stderr] Checking wgpu-types v23.0.0 [INFO] [stderr] Compiling wgpu-core v23.0.1 [INFO] [stderr] Compiling wgpu-hal v24.0.4 [INFO] [stderr] Checking ecolor v0.30.0 [INFO] [stderr] Checking tiny-skia v0.11.4 [INFO] [stderr] Checking epaint_default_fonts v0.30.0 [INFO] [stderr] Checking idna v1.1.0 [INFO] [stderr] Checking renetcode v0.0.12 [INFO] [stderr] Checking epaint v0.30.0 [INFO] [stderr] Checking wgpu-types v24.0.0 [INFO] [stderr] Compiling wgpu v23.0.1 [INFO] [stderr] Checking ordered-float v4.6.0 [INFO] [stderr] Compiling wgpu-core v24.0.5 [INFO] [stderr] Checking octets v0.3.5 [INFO] [stderr] Checking symphonia-metadata v0.5.5 [INFO] [stderr] Checking extended v0.1.0 [INFO] [stderr] Checking symphonia-codec-pcm v0.5.5 [INFO] [stderr] Checking tokio v1.51.1 [INFO] [stderr] Checking renet v0.0.16 [INFO] [stderr] Checking url v2.5.8 [INFO] [stderr] Checking alsa v0.9.1 [INFO] [stderr] Checking symphonia-utils-xiph v0.5.5 [INFO] [stderr] Checking egui v0.30.0 [INFO] [stderr] Checking tracing-appender v0.2.4 [INFO] [stderr] Checking symphonia-format-riff v0.5.5 [INFO] [stderr] Checking symphonia-format-ogg v0.5.5 [INFO] [stderr] Checking symphonia-bundle-flac v0.5.5 [INFO] [stderr] Checking symphonia-codec-vorbis v0.5.5 [INFO] [stderr] Checking symphonia-bundle-mp3 v0.5.5 [INFO] [stderr] Checking flate2 v1.1.9 [INFO] [stderr] Checking fdeflate v0.3.7 [INFO] [stderr] Checking approx v0.5.1 [INFO] [stderr] Compiling wgpu v24.0.5 [INFO] [stderr] Checking pxfm v0.1.28 [INFO] [stderr] Checking rustc-hash v2.1.2 [INFO] [stderr] Checking type-map v0.5.1 [INFO] [stderr] Checking png v0.18.1 [INFO] [stderr] Checking webbrowser v1.2.0 [INFO] [stderr] Checking ringbuf v0.3.3 [INFO] [stderr] Checking triple_buffer v8.1.1 [INFO] [stderr] Checking strum v0.26.3 [INFO] [stderr] Checking pollster v0.4.0 [INFO] [stderr] Checking hashbrown v0.14.5 [INFO] [stderr] Checking spin v0.9.8 [INFO] [stderr] Checking cpal v0.15.3 [INFO] [stderr] Checking symphonia v0.5.5 [INFO] [stderr] Checking hecs v0.10.5 [INFO] [stderr] Checking polling v3.11.0 [INFO] [stderr] Checking gethostname v1.1.0 [INFO] [stderr] Checking tempfile v3.27.0 [INFO] [stderr] Checking x11rb v0.13.2 [INFO] [stderr] Checking calloop v0.13.0 [INFO] [stderr] Checking calloop v0.14.4 [INFO] [stderr] Checking wayland-client v0.31.14 [INFO] [stderr] Checking wayland-csd-frame v0.3.0 [INFO] [stderr] Checking moxcms v0.8.1 [INFO] [stderr] Checking kira v0.9.6 [INFO] [stderr] Checking wayland-protocols v0.32.12 [INFO] [stderr] Checking wayland-cursor v0.31.14 [INFO] [stderr] Checking calloop-wayland-source v0.3.0 [INFO] [stderr] Checking calloop-wayland-source v0.4.1 [INFO] [stderr] Checking arboard v3.6.1 [INFO] [stderr] Checking image v0.25.10 [INFO] [stderr] Checking wayland-protocols-wlr v0.3.12 [INFO] [stderr] Checking wayland-protocols-plasma v0.3.12 [INFO] [stderr] Checking wayland-protocols-misc v0.3.12 [INFO] [stderr] Checking wayland-protocols-experimental v20250721.0.1 [INFO] [stderr] Checking smithay-client-toolkit v0.19.2 [INFO] [stderr] Checking smithay-client-toolkit v0.20.0 [INFO] [stderr] Checking sctk-adwaita v0.10.1 [INFO] [stderr] Checking smithay-clipboard v0.7.3 [INFO] [stderr] Checking egui-wgpu v0.30.0 [INFO] [stderr] Checking engine_core v0.1.0 (/opt/rustwide/workdir/crates/engine_core) [INFO] [stderr] Checking egui-winit v0.30.0 [INFO] [stdout] warning: function `vec3_to_world_pos` is never used [INFO] [stdout] --> crates/engine_core/src/coords/conversions.rs:9:8 [INFO] [stdout] | [INFO] [stdout] 9 | pub fn vec3_to_world_pos(v: Vec3) -> WorldPos { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `world_pos_to_vec3` is never used [INFO] [stdout] --> crates/engine_core/src/coords/conversions.rs:15:8 [INFO] [stdout] | [INFO] [stdout] 15 | pub fn world_pos_to_vec3(pos: WorldPos) -> Vec3 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `chunk_origin` is never used [INFO] [stdout] --> crates/engine_core/src/coords/conversions.rs:25:8 [INFO] [stdout] | [INFO] [stdout] 25 | pub fn chunk_origin(chunk: ChunkPos) -> Vec3 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `chunk_center` is never used [INFO] [stdout] --> crates/engine_core/src/coords/conversions.rs:35:8 [INFO] [stdout] | [INFO] [stdout] 35 | pub fn chunk_center(chunk: ChunkPos) -> Vec3 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `ray_aabb` is never used [INFO] [stdout] --> crates/engine_core/src/math/intersect.rs:22:8 [INFO] [stdout] | [INFO] [stdout] 22 | pub fn ray_aabb(ray: &Ray, aabb: &Aabb) -> Option { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `ray_sphere` is never used [INFO] [stdout] --> crates/engine_core/src/math/intersect.rs:73:8 [INFO] [stdout] | [INFO] [stdout] 73 | pub fn ray_sphere(ray: &Ray, sphere: &Sphere) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `ray_plane` is never used [INFO] [stdout] --> crates/engine_core/src/math/intersect.rs:106:8 [INFO] [stdout] | [INFO] [stdout] 106 | pub fn ray_plane(ray: &Ray, plane: &Plane) -> Option { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `aabb_sphere` is never used [INFO] [stdout] --> crates/engine_core/src/math/intersect.rs:132:8 [INFO] [stdout] | [INFO] [stdout] 132 | pub fn aabb_sphere(aabb: &Aabb, sphere: &Sphere) -> bool { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `WindowError` is never used [INFO] [stdout] --> crates/engine_core/src/platform/window.rs:15:10 [INFO] [stdout] | [INFO] [stdout] 15 | pub enum WindowError { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AppHandler` is never constructed [INFO] [stdout] --> crates/engine_core/src/platform/window.rs:132:8 [INFO] [stdout] | [INFO] [stdout] 132 | struct AppHandler { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `run` is never used [INFO] [stdout] --> crates/engine_core/src/platform/window.rs:270:8 [INFO] [stdout] | [INFO] [stdout] 270 | pub fn run(config: WindowConfig, callback: F) -> Result<(), WindowError> [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking engine_world v0.1.0 (/opt/rustwide/workdir/crates/engine_world) [INFO] [stderr] Checking engine_ai v0.1.0 (/opt/rustwide/workdir/crates/engine_ai) [INFO] [stderr] Checking engine_network v0.1.0 (/opt/rustwide/workdir/crates/engine_network) [INFO] [stderr] Checking engine_audio v0.1.0 (/opt/rustwide/workdir/crates/engine_audio) [INFO] [stderr] Checking engine_physics v0.1.0 (/opt/rustwide/workdir/crates/engine_physics) [INFO] [stdout] warning: unused import: `approx::assert_relative_eq` [INFO] [stdout] --> crates/engine_ai/src/swim_ai.rs:403:9 [INFO] [stdout] | [INFO] [stdout] 403 | use approx::assert_relative_eq; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `AmbientState` is never used [INFO] [stdout] --> crates/engine_audio/src/ambient.rs:40:10 [INFO] [stdout] | [INFO] [stdout] 40 | pub enum AmbientState { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `closest_capsule_point` is never read [INFO] [stdout] --> crates/engine_physics/src/collision/capsule_aabb.rs:95:37 [INFO] [stdout] | [INFO] [stdout] 95 | let mut closest_capsule_point = capsule.base; [INFO] [stdout] | ^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 112 | closest_capsule_point = closest_point_on_segment(capsule.base, capsule.tip, closest_aabb_point); [INFO] [stdout] | ----------------------------------------------------------------------------------------------- `closest_capsule_point` is overwritten here before the previous value is read [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `closest_capsule_point` is never read [INFO] [stdout] --> crates/engine_physics/src/collision/capsule_aabb.rs:106:13 [INFO] [stdout] | [INFO] [stdout] 106 | closest_capsule_point = capsule_point; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `WindowError` is never used [INFO] [stdout] --> crates/engine_core/src/platform/window.rs:15:10 [INFO] [stdout] | [INFO] [stdout] 15 | pub enum WindowError { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AppHandler` is never constructed [INFO] [stdout] --> crates/engine_core/src/platform/window.rs:132:8 [INFO] [stdout] | [INFO] [stdout] 132 | struct AppHandler { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `run` is never used [INFO] [stdout] --> crates/engine_core/src/platform/window.rs:270:8 [INFO] [stdout] | [INFO] [stdout] 270 | pub fn run(config: WindowConfig, callback: F) -> Result<(), WindowError> [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `closest_capsule_point` is never read [INFO] [stdout] --> crates/engine_physics/src/collision/capsule_aabb.rs:95:37 [INFO] [stdout] | [INFO] [stdout] 95 | let mut closest_capsule_point = capsule.base; [INFO] [stdout] | ^^^^^^^^^^^^ this value is reassigned later and never used [INFO] [stdout] ... [INFO] [stdout] 112 | closest_capsule_point = closest_point_on_segment(capsule.base, capsule.tip, closest_aabb_point); [INFO] [stdout] | ----------------------------------------------------------------------------------------------- `closest_capsule_point` is overwritten here before the previous value is read [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: value assigned to `closest_capsule_point` is never read [INFO] [stdout] --> crates/engine_physics/src/collision/capsule_aabb.rs:106:13 [INFO] [stdout] | [INFO] [stdout] 106 | closest_capsule_point = capsule_point; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: maybe it is overwritten before being read? [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `AmbientState` is never used [INFO] [stdout] --> crates/engine_audio/src/ambient.rs:40:10 [INFO] [stdout] | [INFO] [stdout] 40 | pub enum AmbientState { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `seed` is never read [INFO] [stdout] --> crates/engine_world/src/generation/noise.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 22 | pub struct TerrainNoise { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] 23 | seed: u64, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `AIR` is never used [INFO] [stdout] --> crates/engine_world/src/generation/structures.rs:9:15 [INFO] [stdout] | [INFO] [stdout] 9 | pub const AIR: u16 = 0; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `TrenchFeature` is never used [INFO] [stdout] --> crates/engine_world/src/ocean/trench.rs:37:10 [INFO] [stdout] | [INFO] [stdout] 37 | pub enum TrenchFeature { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking engine_ui v0.1.0 (/opt/rustwide/workdir/crates/engine_ui) [INFO] [stdout] warning: unused variable: `entity_id` [INFO] [stdout] --> crates/engine_network/src/sync/relevancy.rs:109:33 [INFO] [stdout] | [INFO] [stdout] 109 | pub fn should_update(&self, entity_id: u64, entity_pos: Vec3) -> bool { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_entity_id` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `tick_rate` is never read [INFO] [stdout] --> crates/engine_network/src/sync/interpolation.rs:61:5 [INFO] [stdout] | [INFO] [stdout] 53 | pub struct InterpolationBuffer { [INFO] [stdout] | ------------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 61 | tick_rate: u32, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking engine_render v0.1.0 (/opt/rustwide/workdir/crates/engine_render) [INFO] [stderr] Checking abyss_server v0.1.0 (/opt/rustwide/workdir/crates/server) [INFO] [stdout] warning: unused import: `ScrollArea` [INFO] [stdout] --> crates/engine_ui/src/screens/chat.rs:5:31 [INFO] [stdout] | [INFO] [stdout] 5 | use egui::{Color32, RichText, ScrollArea, Vec2}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `ScrollArea` [INFO] [stdout] --> crates/engine_ui/src/screens/chat.rs:5:31 [INFO] [stdout] | [INFO] [stdout] 5 | use egui::{Color32, RichText, ScrollArea, Vec2}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `entity_id` [INFO] [stdout] --> crates/engine_network/src/sync/relevancy.rs:109:33 [INFO] [stdout] | [INFO] [stdout] 109 | pub fn should_update(&self, entity_id: u64, entity_pos: Vec3) -> bool { [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_entity_id` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: falling back to `f32` as the trait bound `f32: From` is not satisfied [INFO] [stdout] --> crates/engine_ui/src/hud/debug_console.rs:150:47 [INFO] [stdout] | [INFO] [stdout] 150 | .stroke(egui::Stroke::new(1.0, egui::Color32::GRAY)); [INFO] [stdout] | ^^^ help: explicitly specify the type as `f32`: `1.0_f32` [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #154024 [INFO] [stdout] = note: `#[warn(float_literal_f32_fallback)]` (part of `#[warn(future_incompatible)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: falling back to `f32` as the trait bound `f32: From` is not satisfied [INFO] [stdout] --> crates/engine_ui/src/hud/hotbar.rs:119:64 [INFO] [stdout] | [INFO] [stdout] 119 | painter.rect_stroke(rect, Rounding::same(4.0), Stroke::new(1.0, SLOT_BORDER)); [INFO] [stdout] | ^^^ help: explicitly specify the type as `f32`: `1.0_f32` [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #154024 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `AIR` is never used [INFO] [stdout] --> crates/engine_world/src/generation/structures.rs:9:15 [INFO] [stdout] | [INFO] [stdout] 9 | pub const AIR: u16 = 0; [INFO] [stdout] | ^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `TrenchFeature` is never used [INFO] [stdout] --> crates/engine_world/src/ocean/trench.rs:37:10 [INFO] [stdout] | [INFO] [stdout] 37 | pub enum TrenchFeature { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: falling back to `f32` as the trait bound `f32: From` is not satisfied [INFO] [stdout] --> crates/engine_ui/src/hud/tooltip.rs:138:38 [INFO] [stdout] | [INFO] [stdout] 138 | frame.stroke = egui::Stroke::new(1.0, Color32::from_rgb(80, 80, 120)); [INFO] [stdout] | ^^^ help: explicitly specify the type as `f32`: `1.0_f32` [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #154024 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `glam::IVec3` [INFO] [stdout] --> crates/engine_render/src/lighting/block_light.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use glam::IVec3; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `glam::Vec3` [INFO] [stdout] --> crates/engine_render/src/lighting/light_uniform.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use glam::Vec3; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> crates/engine_render/src/underwater/particles/sediment.rs:33:20 [INFO] [stdout] | [INFO] [stdout] 33 | let hash = ((position[0] * 17.3 + position[2] * 31.7).rem_euclid(1.0)); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 33 - let hash = ((position[0] * 17.3 + position[2] * 31.7).rem_euclid(1.0)); [INFO] [stdout] 33 + let hash = (position[0] * 17.3 + position[2] * 31.7).rem_euclid(1.0); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `shutdown`, `current_tick`, and `player_count` are never used [INFO] [stdout] --> crates/server/src/server.rs:331:12 [INFO] [stdout] | [INFO] [stdout] 69 | impl LatticeServer { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 331 | pub fn shutdown(&mut self) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 336 | pub fn current_tick(&self) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 341 | pub fn player_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `egui::Slider::<'a>::clamp_to_range`: Use `slider.clamping(…) instead [INFO] [stdout] --> crates/engine_ui/src/screens/settings.rs:416:18 [INFO] [stdout] | [INFO] [stdout] 416 | .clamp_to_range(true); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `egui::Slider::<'a>::clamp_to_range`: Use `slider.clamping(…) instead [INFO] [stdout] --> crates/engine_ui/src/screens/settings.rs:430:18 [INFO] [stdout] | [INFO] [stdout] 430 | .clamp_to_range(true); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `egui::Slider::<'a>::clamp_to_range`: Use `slider.clamping(…) instead [INFO] [stdout] --> crates/engine_ui/src/screens/settings.rs:453:18 [INFO] [stdout] | [INFO] [stdout] 453 | .clamp_to_range(true); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `egui::Slider::<'a>::clamp_to_range`: Use `slider.clamping(…) instead [INFO] [stdout] --> crates/engine_ui/src/screens/settings.rs:468:18 [INFO] [stdout] | [INFO] [stdout] 468 | .clamp_to_range(true); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `egui::Slider::<'a>::clamp_to_range`: Use `slider.clamping(…) instead [INFO] [stdout] --> crates/engine_ui/src/screens/settings.rs:483:18 [INFO] [stdout] | [INFO] [stdout] 483 | .clamp_to_range(true); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `egui::Slider::<'a>::clamp_to_range`: Use `slider.clamping(…) instead [INFO] [stdout] --> crates/engine_ui/src/screens/settings.rs:498:18 [INFO] [stdout] | [INFO] [stdout] 498 | .clamp_to_range(true); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `egui::Slider::<'a>::clamp_to_range`: Use `slider.clamping(…) instead [INFO] [stdout] --> crates/engine_ui/src/screens/settings.rs:513:18 [INFO] [stdout] | [INFO] [stdout] 513 | .clamp_to_range(true); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `egui::Slider::<'a>::clamp_to_range`: Use `slider.clamping(…) instead [INFO] [stdout] --> crates/engine_ui/src/screens/settings.rs:537:18 [INFO] [stdout] | [INFO] [stdout] 537 | .clamp_to_range(true); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `shutdown`, `current_tick`, and `player_count` are never used [INFO] [stdout] --> crates/server/src/server.rs:331:12 [INFO] [stdout] | [INFO] [stdout] 69 | impl LatticeServer { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 331 | pub fn shutdown(&mut self) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 336 | pub fn current_tick(&self) -> u64 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 341 | pub fn player_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: falling back to `f32` as the trait bound `f32: From` is not satisfied [INFO] [stdout] --> crates/engine_ui/src/hud/debug_console.rs:150:47 [INFO] [stdout] | [INFO] [stdout] 150 | .stroke(egui::Stroke::new(1.0, egui::Color32::GRAY)); [INFO] [stdout] | ^^^ help: explicitly specify the type as `f32`: `1.0_f32` [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #154024 [INFO] [stdout] = note: `#[warn(float_literal_f32_fallback)]` (part of `#[warn(future_incompatible)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `screen_rect` [INFO] [stdout] --> crates/engine_ui/src/hud/health_bar.rs:88:9 [INFO] [stdout] | [INFO] [stdout] 88 | let screen_rect = ctx.screen_rect(); [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_screen_rect` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: falling back to `f32` as the trait bound `f32: From` is not satisfied [INFO] [stdout] --> crates/engine_ui/src/hud/hotbar.rs:119:64 [INFO] [stdout] | [INFO] [stdout] 119 | painter.rect_stroke(rect, Rounding::same(4.0), Stroke::new(1.0, SLOT_BORDER)); [INFO] [stdout] | ^^^ help: explicitly specify the type as `f32`: `1.0_f32` [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #154024 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `glam::IVec3` [INFO] [stdout] --> crates/engine_render/src/lighting/block_light.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | use glam::IVec3; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `approx::assert_relative_eq` [INFO] [stdout] --> crates/engine_render/src/underwater/particles/plankton.rs:293:9 [INFO] [stdout] | [INFO] [stdout] 293 | use approx::assert_relative_eq; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary parentheses around assigned value [INFO] [stdout] --> crates/engine_render/src/underwater/particles/sediment.rs:33:20 [INFO] [stdout] | [INFO] [stdout] 33 | let hash = ((position[0] * 17.3 + position[2] * 31.7).rem_euclid(1.0)); [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] help: remove these parentheses [INFO] [stdout] | [INFO] [stdout] 33 - let hash = ((position[0] * 17.3 + position[2] * 31.7).rem_euclid(1.0)); [INFO] [stdout] 33 + let hash = (position[0] * 17.3 + position[2] * 31.7).rem_euclid(1.0); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: falling back to `f32` as the trait bound `f32: From` is not satisfied [INFO] [stdout] --> crates/engine_ui/src/hud/tooltip.rs:138:38 [INFO] [stdout] | [INFO] [stdout] 138 | frame.stroke = egui::Stroke::new(1.0, Color32::from_rgb(80, 80, 120)); [INFO] [stdout] | ^^^ help: explicitly specify the type as `f32`: `1.0_f32` [INFO] [stdout] | [INFO] [stdout] = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release! [INFO] [stdout] = note: for more information, see issue #154024 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HEART_HALF` is never used [INFO] [stdout] --> crates/engine_ui/src/hud/health_bar.rs:17:7 [INFO] [stdout] | [INFO] [stdout] 17 | const HEART_HALF: Color32 = Color32::from_rgb(200, 40, 40); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `NoTextures` is never constructed [INFO] [stdout] --> crates/engine_ui/src/hud/hotbar.rs:61:12 [INFO] [stdout] | [INFO] [stdout] 61 | pub struct NoTextures; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `count` and `source` are never read [INFO] [stdout] --> crates/engine_ui/src/screens/inventory_screen.rs:86:5 [INFO] [stdout] | [INFO] [stdout] 82 | struct CursorItem { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 86 | count: u32, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 87 | /// Source slot the item was picked up from. [INFO] [stdout] 88 | source: CursorSource, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CursorItem` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Slot` and `Equipment` are never constructed [INFO] [stdout] --> crates/engine_ui/src/screens/inventory_screen.rs:95:5 [INFO] [stdout] | [INFO] [stdout] 93 | enum CursorSource { [INFO] [stdout] | ------------ variants in this enum [INFO] [stdout] 94 | /// From inventory slot index. [INFO] [stdout] 95 | Slot(usize), [INFO] [stdout] | ^^^^ [INFO] [stdout] 96 | /// From equipment slot. [INFO] [stdout] 97 | Equipment(EquipmentSlot), [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CursorSource` 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: use of deprecated method `egui::Slider::<'a>::clamp_to_range`: Use `slider.clamping(…) instead [INFO] [stdout] --> crates/engine_ui/src/screens/settings.rs:416:18 [INFO] [stdout] | [INFO] [stdout] 416 | .clamp_to_range(true); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `egui::Slider::<'a>::clamp_to_range`: Use `slider.clamping(…) instead [INFO] [stdout] --> crates/engine_ui/src/screens/settings.rs:430:18 [INFO] [stdout] | [INFO] [stdout] 430 | .clamp_to_range(true); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `egui::Slider::<'a>::clamp_to_range`: Use `slider.clamping(…) instead [INFO] [stdout] --> crates/engine_ui/src/screens/settings.rs:453:18 [INFO] [stdout] | [INFO] [stdout] 453 | .clamp_to_range(true); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `egui::Slider::<'a>::clamp_to_range`: Use `slider.clamping(…) instead [INFO] [stdout] --> crates/engine_ui/src/screens/settings.rs:468:18 [INFO] [stdout] | [INFO] [stdout] 468 | .clamp_to_range(true); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `egui::Slider::<'a>::clamp_to_range`: Use `slider.clamping(…) instead [INFO] [stdout] --> crates/engine_ui/src/screens/settings.rs:483:18 [INFO] [stdout] | [INFO] [stdout] 483 | .clamp_to_range(true); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `egui::Slider::<'a>::clamp_to_range`: Use `slider.clamping(…) instead [INFO] [stdout] --> crates/engine_ui/src/screens/settings.rs:498:18 [INFO] [stdout] | [INFO] [stdout] 498 | .clamp_to_range(true); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `egui::Slider::<'a>::clamp_to_range`: Use `slider.clamping(…) instead [INFO] [stdout] --> crates/engine_ui/src/screens/settings.rs:513:18 [INFO] [stdout] | [INFO] [stdout] 513 | .clamp_to_range(true); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated method `egui::Slider::<'a>::clamp_to_range`: Use `slider.clamping(…) instead [INFO] [stdout] --> crates/engine_ui/src/screens/settings.rs:537:18 [INFO] [stdout] | [INFO] [stdout] 537 | .clamp_to_range(true); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `screen_rect` [INFO] [stdout] --> crates/engine_ui/src/hud/health_bar.rs:88:9 [INFO] [stdout] | [INFO] [stdout] 88 | let screen_rect = ctx.screen_rect(); [INFO] [stdout] | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_screen_rect` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `HEART_HALF` is never used [INFO] [stdout] --> crates/engine_ui/src/hud/health_bar.rs:17:7 [INFO] [stdout] | [INFO] [stdout] 17 | const HEART_HALF: Color32 = Color32::from_rgb(200, 40, 40); [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `count` and `source` are never read [INFO] [stdout] --> crates/engine_ui/src/screens/inventory_screen.rs:86:5 [INFO] [stdout] | [INFO] [stdout] 82 | struct CursorItem { [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] ... [INFO] [stdout] 86 | count: u32, [INFO] [stdout] | ^^^^^ [INFO] [stdout] 87 | /// Source slot the item was picked up from. [INFO] [stdout] 88 | source: CursorSource, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CursorItem` 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 `0` is never read [INFO] [stdout] --> crates/engine_ui/src/screens/inventory_screen.rs:95:10 [INFO] [stdout] | [INFO] [stdout] 95 | Slot(usize), [INFO] [stdout] | ---- ^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `CursorSource` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 95 - Slot(usize), [INFO] [stdout] 95 + Slot(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Equipment` is never constructed [INFO] [stdout] --> crates/engine_ui/src/screens/inventory_screen.rs:97:5 [INFO] [stdout] | [INFO] [stdout] 93 | enum CursorSource { [INFO] [stdout] | ------------ variant in this enum [INFO] [stdout] ... [INFO] [stdout] 97 | Equipment(EquipmentSlot), [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CursorSource` 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: struct `NeighborLightData` is never constructed [INFO] [stdout] --> crates/engine_render/src/lighting/block_light.rs:279:12 [INFO] [stdout] | [INFO] [stdout] 279 | pub struct NeighborLightData { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `extract_from` is never used [INFO] [stdout] --> crates/engine_render/src/lighting/block_light.rs:305:12 [INFO] [stdout] | [INFO] [stdout] 302 | impl NeighborLightData { [INFO] [stdout] | ---------------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 305 | pub fn extract_from(map: &BlockLightMap) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `texture` is never read [INFO] [stdout] --> crates/engine_render/src/voxel/texture_atlas.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 31 | pub struct TextureAtlas { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] 32 | texture: wgpu::Texture, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `camera_bind_group_layout` is never read [INFO] [stdout] --> crates/engine_render/src/voxel/voxel_pipeline.rs:50:5 [INFO] [stdout] | [INFO] [stdout] 48 | pub struct VoxelPipeline { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] 49 | pipeline: wgpu::RenderPipeline, [INFO] [stdout] 50 | camera_bind_group_layout: wgpu::BindGroupLayout, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `NeighborLightData` is never constructed [INFO] [stdout] --> crates/engine_render/src/lighting/block_light.rs:279:12 [INFO] [stdout] | [INFO] [stdout] 279 | pub struct NeighborLightData { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `extract_from` is never used [INFO] [stdout] --> crates/engine_render/src/lighting/block_light.rs:305:12 [INFO] [stdout] | [INFO] [stdout] 302 | impl NeighborLightData { [INFO] [stdout] | ---------------------- associated function in this implementation [INFO] [stdout] ... [INFO] [stdout] 305 | pub fn extract_from(map: &BlockLightMap) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `texture` is never read [INFO] [stdout] --> crates/engine_render/src/voxel/texture_atlas.rs:32:5 [INFO] [stdout] | [INFO] [stdout] 31 | pub struct TextureAtlas { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] 32 | texture: wgpu::Texture, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `camera_bind_group_layout` is never read [INFO] [stdout] --> crates/engine_render/src/voxel/voxel_pipeline.rs:50:5 [INFO] [stdout] | [INFO] [stdout] 48 | pub struct VoxelPipeline { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] 49 | pipeline: wgpu::RenderPipeline, [INFO] [stdout] 50 | camera_bind_group_layout: wgpu::BindGroupLayout, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking abyss_game v0.1.0 (/opt/rustwide/workdir/crates/game) [INFO] [stdout] warning: unused import: `hecs::World` [INFO] [stdout] --> crates/game/src/ai/lod.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use hecs::World; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Recipe` [INFO] [stdout] --> crates/game/src/crafting/furnace.rs:6:40 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::crafting::{CraftingStation, Recipe, RecipeRegistry}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Inventory` [INFO] [stdout] --> crates/game/src/crafting/furnace.rs:7:24 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::inventory::{Inventory, ItemId, ItemStack}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> crates/game/src/ecs/entity_save.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Quat` and `Vec3` [INFO] [stdout] --> crates/game/src/ecs/entity_save.rs:9:12 [INFO] [stdout] | [INFO] [stdout] 9 | use glam::{Quat, Vec3}; [INFO] [stdout] | ^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `engine_world::chunk::BlockId` [INFO] [stdout] --> crates/game/src/survival/mining.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use engine_world::chunk::BlockId; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `hecs::World` [INFO] [stdout] --> crates/game/src/ai/lod.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use hecs::World; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `approx::assert_relative_eq` [INFO] [stdout] --> crates/game/src/crafting/deep_forge.rs:215:9 [INFO] [stdout] | [INFO] [stdout] 215 | use approx::assert_relative_eq; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Recipe` [INFO] [stdout] --> crates/game/src/crafting/furnace.rs:6:40 [INFO] [stdout] | [INFO] [stdout] 6 | use crate::crafting::{CraftingStation, Recipe, RecipeRegistry}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Inventory` [INFO] [stdout] --> crates/game/src/crafting/furnace.rs:7:24 [INFO] [stdout] | [INFO] [stdout] 7 | use crate::inventory::{Inventory, ItemId, ItemStack}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> crates/game/src/ecs/entity_save.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `engine_world::chunk::BlockId` [INFO] [stdout] --> crates/game/src/survival/mining.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use engine_world::chunk::BlockId; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `approx::assert_relative_eq` [INFO] [stdout] --> crates/game/src/world/resources.rs:315:9 [INFO] [stdout] | [INFO] [stdout] 315 | use approx::assert_relative_eq; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `approx::assert_relative_eq` [INFO] [stdout] --> crates/game/src/integration_tests.rs:98:5 [INFO] [stdout] | [INFO] [stdout] 98 | use approx::assert_relative_eq; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `damage` and `time` are never read [INFO] [stdout] --> crates/game/src/diving/decompression.rs:72:9 [INFO] [stdout] | [INFO] [stdout] 70 | pub struct NitrogenBubble { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 71 | /// Damage from this event. [INFO] [stdout] 72 | pub damage: f32, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 73 | /// Time when the event occurred. [INFO] [stdout] 74 | pub time: f32, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `NitrogenBubble` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `WALL_GRAB_DECEL` is never used [INFO] [stdout] --> crates/game/src/diving/movement.rs:18:11 [INFO] [stdout] | [INFO] [stdout] 18 | pub const WALL_GRAB_DECEL: f32 = 10.0; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `InventoryError` is never used [INFO] [stdout] --> crates/game/src/inventory/container.rs:231:10 [INFO] [stdout] | [INFO] [stdout] 231 | pub enum InventoryError { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_TANKS` is never used [INFO] [stdout] --> crates/game/src/oxygen/tank.rs:7:11 [INFO] [stdout] | [INFO] [stdout] 7 | pub const MAX_TANKS: usize = 3; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TankManager` is never constructed [INFO] [stdout] --> crates/game/src/oxygen/tank.rs:94:12 [INFO] [stdout] | [INFO] [stdout] 94 | pub struct TankManager { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> crates/game/src/oxygen/tank.rs:108:12 [INFO] [stdout] | [INFO] [stdout] 105 | impl TankManager { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 108 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 117 | pub fn equip_tank(&mut self, tank: OxygenTank) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 127 | pub fn unequip_slot(&mut self, slot: TankSlot) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 136 | pub fn get(&self, slot: TankSlot) -> Option<&OxygenTank> { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 145 | pub fn total_capacity(&self) -> f32 { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 156 | pub fn equipped_count(&self) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 162 | pub fn slot_occupied(&self, slot: TankSlot) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 168 | pub fn all_slots_full(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 173 | pub fn equipped_tanks(&self) -> impl Iterator { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DAMAGE_INVINCIBILITY` is never used [INFO] [stdout] --> crates/game/src/survival/combat.rs:12:11 [INFO] [stdout] | [INFO] [stdout] 12 | pub const DAMAGE_INVINCIBILITY: f32 = 0.5; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `half_z` [INFO] [stdout] --> crates/game/src/ecs/entity_save.rs:324:55 [INFO] [stdout] | [INFO] [stdout] 324 | ColliderShapeSerde::Box { half_x, half_y, half_z } => { [INFO] [stdout] | ^^^^^^ help: try ignoring the field: `half_z: _` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `spawns` [INFO] [stdout] --> crates/game/src/entities/spawning.rs:399:13 [INFO] [stdout] | [INFO] [stdout] 399 | let spawns = system.tick(10.0, Vec3::ZERO, BiomeType::Plains, &[Vec3::new(50.0, 64.0, 50.0)]); [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_spawns` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `start` [INFO] [stdout] --> crates/game/src/pressure/suit.rs:227:13 [INFO] [stdout] | [INFO] [stdout] 227 | let start = suit.integrity(); [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_start` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `initial_hunger` [INFO] [stdout] --> crates/game/src/survival/hunger.rs:236:13 [INFO] [stdout] | [INFO] [stdout] 236 | let initial_hunger = hunger.current(); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_initial_hunger` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `damage` and `time` are never read [INFO] [stdout] --> crates/game/src/diving/decompression.rs:72:9 [INFO] [stdout] | [INFO] [stdout] 70 | pub struct NitrogenBubble { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 71 | /// Damage from this event. [INFO] [stdout] 72 | pub damage: f32, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 73 | /// Time when the event occurred. [INFO] [stdout] 74 | pub time: f32, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `NitrogenBubble` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `WALL_GRAB_DECEL` is never used [INFO] [stdout] --> crates/game/src/diving/movement.rs:18:11 [INFO] [stdout] | [INFO] [stdout] 18 | pub const WALL_GRAB_DECEL: f32 = 10.0; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `InventoryError` is never used [INFO] [stdout] --> crates/game/src/inventory/container.rs:231:10 [INFO] [stdout] | [INFO] [stdout] 231 | pub enum InventoryError { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `get` and `equipped_tanks` are never used [INFO] [stdout] --> crates/game/src/oxygen/tank.rs:136:12 [INFO] [stdout] | [INFO] [stdout] 105 | impl TankManager { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 136 | pub fn get(&self, slot: TankSlot) -> Option<&OxygenTank> { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 173 | pub fn equipped_tanks(&self) -> impl Iterator { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `DAMAGE_INVINCIBILITY` is never used [INFO] [stdout] --> crates/game/src/survival/combat.rs:12:11 [INFO] [stdout] | [INFO] [stdout] 12 | pub const DAMAGE_INVINCIBILITY: f32 = 0.5; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 29s [INFO] running `Command { std: "docker" "inspect" "899f786810a0f7a52904f86b27672535f5939d19b8165d665383e213eb102cbf", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "899f786810a0f7a52904f86b27672535f5939d19b8165d665383e213eb102cbf", kill_on_drop: false }` [INFO] [stdout] 899f786810a0f7a52904f86b27672535f5939d19b8165d665383e213eb102cbf