[INFO] cloning repository https://github.com/emilstekcor/particle-life
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/emilstekcor/particle-life" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Femilstekcor%2Fparticle-life", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Femilstekcor%2Fparticle-life'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 2e5813963be95eb4fdeca3465dbde15b8f7ee4a6
[INFO] checking emilstekcor/particle-life against master#89a99936d9e76a50e8df622e7242190841fd871b for pr-156160
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Femilstekcor%2Fparticle-life" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/emilstekcor/particle-life
[INFO] finished tweaking git repo https://github.com/emilstekcor/particle-life
[INFO] tweaked toml for git repo https://github.com/emilstekcor/particle-life written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/emilstekcor/particle-life on toolchain 89a99936d9e76a50e8df622e7242190841fd871b
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+89a99936d9e76a50e8df622e7242190841fd871b" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/emilstekcor/particle-life 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" "+89a99936d9e76a50e8df622e7242190841fd871b" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded egui-winit v0.26.2
[INFO] [stderr]   Downloaded egui-wgpu v0.26.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/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:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] e5f7bdc0422df6de656751e0c7aa5a50bf2a2407bd84dc4c815d651a6ccff59e
[INFO] running `Command { std: "docker" "start" "e5f7bdc0422df6de656751e0c7aa5a50bf2a2407bd84dc4c815d651a6ccff59e", 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" "e5f7bdc0422df6de656751e0c7aa5a50bf2a2407bd84dc4c815d651a6ccff59e" "/opt/rustwide/cargo-home/bin/cargo" "+89a99936d9e76a50e8df622e7242190841fd871b" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e5f7bdc0422df6de656751e0c7aa5a50bf2a2407bd84dc4c815d651a6ccff59e", 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" "e5f7bdc0422df6de656751e0c7aa5a50bf2a2407bd84dc4c815d651a6ccff59e" "/opt/rustwide/cargo-home/bin/cargo" "+89a99936d9e76a50e8df622e7242190841fd871b" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]     Checking bitflags v2.11.0
[INFO] [stderr]    Compiling libc v0.2.184
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]     Checking wayland-sys v0.31.11
[INFO] [stderr]    Compiling wayland-scanner v0.31.10
[INFO] [stderr]     Checking owned_ttf_parser v0.25.1
[INFO] [stderr]     Checking bit-vec v0.6.3
[INFO] [stderr]    Compiling wgpu-hal v0.19.5
[INFO] [stderr]     Checking libloading v0.7.4
[INFO] [stderr]     Checking codespan-reporting v0.11.1
[INFO] [stderr]    Compiling ash v0.37.3+1.3.251
[INFO] [stderr]     Checking tracing v0.1.44
[INFO] [stderr]    Compiling smithay-client-toolkit v0.18.1
[INFO] [stderr]     Checking aho-corasick v1.1.4
[INFO] [stderr]    Compiling wgpu-core v0.19.4
[INFO] [stderr]     Checking nohash-hasher v0.2.0
[INFO] [stderr]     Checking glow v0.13.1
[INFO] [stderr]     Checking profiling v1.0.17
[INFO] [stderr]     Checking form_urlencoded v1.2.2
[INFO] [stderr]    Compiling wgpu v0.19.4
[INFO] [stderr]     Checking ab_glyph v0.2.32
[INFO] [stderr]    Compiling winit v0.29.15
[INFO] [stderr]     Checking web-time v0.2.4
[INFO] [stderr]     Checking bit-set v0.5.3
[INFO] [stderr]     Checking smol_str v0.2.2
[INFO] [stderr]     Checking home v0.5.12
[INFO] [stderr]     Checking anstream v1.0.0
[INFO] [stderr]     Checking rustix v1.1.4
[INFO] [stderr]     Checking rustix v0.38.44
[INFO] [stderr]     Checking spirv v0.3.0+sdk-1.3.268.0
[INFO] [stderr]     Checking gpu-alloc-types v0.3.0
[INFO] [stderr]     Checking gpu-descriptor-types v0.1.2
[INFO] [stderr]     Checking wgpu-types v0.19.2
[INFO] [stderr]     Checking xkbcommon-dl v0.4.2
[INFO] [stderr]     Checking type-map v0.5.1
[INFO] [stderr]     Checking jiff v0.2.23
[INFO] [stderr]     Checking glam v0.25.0
[INFO] [stderr]     Checking gpu-alloc v0.6.0
[INFO] [stderr]     Checking pollster v0.3.0
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking getrandom v0.3.4
[INFO] [stderr]     Checking parking_lot_core v0.9.12
[INFO] [stderr]     Checking memmap2 v0.9.10
[INFO] [stderr]     Checking khronos-egl v6.0.0
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]     Checking x11-dl v2.21.0
[INFO] [stderr]     Checking dirs-sys v0.4.1
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]     Checking dirs v5.0.1
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking parking_lot v0.12.5
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking gpu-descriptor v0.2.4
[INFO] [stderr]     Checking regex v1.12.3
[INFO] [stderr]     Checking env_filter v1.0.1
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]     Checking env_logger v0.11.10
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling bytemuck_derive v1.10.2
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking naga v0.19.2
[INFO] [stderr]     Checking thiserror v2.0.18
[INFO] [stderr]     Checking wayland-backend v0.3.15
[INFO] [stderr]     Checking polling v3.11.0
[INFO] [stderr]     Checking gethostname v1.1.0
[INFO] [stderr]     Checking x11rb v0.13.2
[INFO] [stderr]     Checking zerofrom v0.1.7
[INFO] [stderr]     Checking yoke v0.8.2
[INFO] [stderr]     Checking calloop v0.14.4
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]     Checking zerovec v0.11.6
[INFO] [stderr]     Checking bytemuck v1.25.0
[INFO] [stderr]     Checking calloop v0.12.4
[INFO] [stderr]     Checking tiny-skia-path v0.11.4
[INFO] [stderr]     Checking emath v0.26.2
[INFO] [stderr]     Checking ecolor v0.26.2
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]     Checking potential_utf v0.1.5
[INFO] [stderr]     Checking epaint v0.26.2
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]     Checking tiny-skia v0.11.4
[INFO] [stderr]     Checking wayland-client v0.31.14
[INFO] [stderr]     Checking wayland-csd-frame v0.3.0
[INFO] [stderr]     Checking egui v0.26.2
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]     Checking arboard v3.6.1
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]     Checking wayland-protocols v0.31.2
[INFO] [stderr]     Checking wayland-cursor v0.31.14
[INFO] [stderr]     Checking wayland-protocols v0.32.12
[INFO] [stderr]     Checking calloop-wayland-source v0.2.0
[INFO] [stderr]     Checking calloop-wayland-source v0.4.1
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking webbrowser v0.8.15
[INFO] [stderr]     Checking wayland-protocols-wlr v0.2.0
[INFO] [stderr]     Checking wayland-protocols-plasma v0.2.0
[INFO] [stderr]     Checking wayland-protocols-misc v0.3.12
[INFO] [stderr]     Checking wayland-protocols-experimental v20250721.0.1
[INFO] [stderr]     Checking wayland-protocols-wlr v0.3.12
[INFO] [stderr]     Checking sctk-adwaita v0.8.3
[INFO] [stderr]     Checking smithay-client-toolkit v0.20.0
[INFO] [stderr]     Checking smithay-clipboard v0.7.3
[INFO] [stderr]     Checking egui-winit v0.26.2
[INFO] [stderr]     Checking egui-wgpu v0.26.2
[INFO] [stderr]     Checking particle_life_3d v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]     --> src/ui/mod.rs:1549:5
[INFO] [stdout]      |
[INFO] [stdout] 1549 |     ctx: &Context,
[INFO] [stdout]      |     ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]     --> src/ui/mod.rs:1558:9
[INFO] [stdout]      |
[INFO] [stdout] 1558 |     let n = sim.params.type_count;
[INFO] [stdout]      |         ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CrashProfile` is never constructed
[INFO] [stdout]   --> src/crash_profile.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct CrashProfile {
[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 `save_crash_profile` is never used
[INFO] [stdout]   --> src/crash_profile.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub fn save_crash_profile(sim: &SimState, ui: &UiState) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `sync_selection` is never used
[INFO] [stdout]   --> src/renderer/mod.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 64 | impl Renderer {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 65 |     /// Sync GPU selection with CPU selected_indices
[INFO] [stdout] 66 |     pub fn sync_selection(&mut self, ui: &mut UiState) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `bind_group_layout`, `trace_prev_pos_buf`, and `readback_buf` are never read
[INFO] [stdout]   --> src/renderer/compute.rs:83:5
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct ComputePipeline {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 82 |     pipeline: wgpu::ComputePipeline,
[INFO] [stdout] 83 |     bind_group_layout: wgpu::BindGroupLayout,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 95 |     pub trace_prev_pos_buf: wgpu::Buffer, // trace previous positions (vec3 per particle)
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98 |     readback_buf: wgpu::Buffer,      // staging buffer for GPU->CPU readback
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `clear_selection`, `readback_selection`, and `clear_trace_timers` are never used
[INFO] [stdout]    --> src/renderer/compute.rs:680:12
[INFO] [stdout]     |
[INFO] [stdout] 116 | impl ComputePipeline {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 680 |     pub fn clear_selection(&self, queue: &wgpu::Queue, particle_count: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 687 |     pub fn readback_selection(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 823 |     pub fn clear_trace_timers(&self, encoder: &mut wgpu::CommandEncoder, max_particles: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `with_color` are never used
[INFO] [stdout]   --> src/renderer/draw.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl Vertex {
[INFO] [stdout]    | ----------- associated functions in this implementation
[INFO] [stdout] 15 |     fn new(pos: Vec3, kind: u32) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     fn with_color(pos: Vec3, color: [f32; 3]) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_particles_in_rect` is never used
[INFO] [stdout]  --> src/selection.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn query_particles_in_rect(
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_particles_in_brush` is never used
[INFO] [stdout]   --> src/selection.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn query_particles_in_brush(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_particles_in_slice` is never used
[INFO] [stdout]   --> src/selection.rs:46:8
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub fn query_particles_in_slice(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `nearest_particle_in_screen_radius` is never used
[INFO] [stdout]   --> src/selection.rs:67:8
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub fn nearest_particle_in_screen_radius(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `world_to_screen` is never used
[INFO] [stdout]    --> src/selection.rs:103:4
[INFO] [stdout]     |
[INFO] [stdout] 103 | fn world_to_screen(view_proj: Mat4, pos: Vec3, viewport: [u32; 2]) -> Option<egui::Pos2> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_sim_params` is never used
[INFO] [stdout]   --> src/sim/mod.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | impl RuntimeSimParams {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 84 |     pub fn from_sim_params(params: &SimParams) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/ui/mod.rs:63:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct UiState {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub traces: bool, // Java-style simple boolean
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub trace_clipboard: Option<Vec<u32>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 89 |     pub trace_presets: Vec<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93 |     pub selected_creature: Option<usize>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 94 |     pub save_profile_now: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 95 |     pub auto_save_profiles: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 96 |     pub auto_save_interval: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Simple` is never constructed
[INFO] [stdout]    --> src/ui/mod.rs:116:5
[INFO] [stdout]     |
[INFO] [stdout] 114 | pub enum TraceRenderMode {
[INFO] [stdout]     |          --------------- variant in this enum
[INFO] [stdout] 115 |     Off,
[INFO] [stdout] 116 |     Simple, // Java-style framebuffer accumulation
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TraceRenderMode` 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 `SelectionOp` is never used
[INFO] [stdout]    --> src/ui/mod.rs:131:10
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub enum SelectionOp {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_selection_op` is never used
[INFO] [stdout]    --> src/ui/mod.rs:301:4
[INFO] [stdout]     |
[INFO] [stdout] 301 | fn apply_selection_op(selected: &mut Vec<usize>, hits: &[usize], op: SelectionOp) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dedup_selection` is never used
[INFO] [stdout]    --> src/ui/mod.rs:318:4
[INFO] [stdout]     |
[INFO] [stdout] 318 | fn dedup_selection(v: &mut Vec<usize>) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_trace_preset` is never used
[INFO] [stdout]     --> src/ui/mod.rs:1634:4
[INFO] [stdout]      |
[INFO] [stdout] 1634 | fn apply_trace_preset(sim: &mut SimState, preset: &str, max_trace: u32) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_force_matrix_ui` is never used
[INFO] [stdout]  --> src/ui/matrix_ui.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn draw_force_matrix_ui(ui: &mut Ui, sim: &mut SimState, _state: &mut UiState) {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_reaction_matrix_ui` is never used
[INFO] [stdout]   --> src/ui/matrix_ui.rs:93:8
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub fn draw_reaction_matrix_ui(ui: &mut Ui, sim: &mut SimState, state: &mut UiState) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_selection_controls` is never used
[INFO] [stdout]  --> src/ui/selection_ui.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn draw_selection_controls(ui: &mut Ui, sim: &mut SimState, state: &mut UiState) {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_selection_debug` is never used
[INFO] [stdout]   --> src/ui/selection_ui.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub fn draw_selection_debug(ui: &mut Ui, _sim: &mut SimState, state: &mut UiState) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_trace_controls` is never used
[INFO] [stdout]  --> src/ui/trace_ui.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn draw_trace_controls(ui: &mut Ui, sim: &mut SimState, state: &mut UiState) {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_trace_matrix_ui` is never used
[INFO] [stdout]   --> src/ui/trace_ui.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn draw_trace_matrix_ui(ui: &mut Ui, sim: &mut SimState, state: &mut UiState) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_trace_debug` is never used
[INFO] [stdout]    --> src/ui/trace_ui.rs:181:8
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub fn draw_trace_debug(ui: &mut Ui, _sim: &mut SimState, state: &mut UiState) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_debug_panel` is never used
[INFO] [stdout]  --> src/ui/debug_ui.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn draw_debug_panel(ui: &mut Ui, sim: &mut SimState, state: &mut UiState) {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_book_ui` is never used
[INFO] [stdout]  --> src/ui/book_ui.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn draw_book_ui(ui: &mut Ui, sim: &mut SimState, state: &mut UiState) {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_profile_ui` is never used
[INFO] [stdout]   --> src/ui/book_ui.rs:82:8
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub fn draw_profile_ui(ui: &mut Ui, _sim: &mut SimState, state: &mut UiState) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ctx`
[INFO] [stdout]     --> src/ui/mod.rs:1549:5
[INFO] [stdout]      |
[INFO] [stdout] 1549 |     ctx: &Context,
[INFO] [stdout]      |     ^^^ help: if this is intentional, prefix it with an underscore: `_ctx`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]     --> src/ui/mod.rs:1558:9
[INFO] [stdout]      |
[INFO] [stdout] 1558 |     let n = sim.params.type_count;
[INFO] [stdout]      |         ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CrashProfile` is never constructed
[INFO] [stdout]   --> src/crash_profile.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct CrashProfile {
[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 `save_crash_profile` is never used
[INFO] [stdout]   --> src/crash_profile.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub fn save_crash_profile(sim: &SimState, ui: &UiState) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `sync_selection` is never used
[INFO] [stdout]   --> src/renderer/mod.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 64 | impl Renderer {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 65 |     /// Sync GPU selection with CPU selected_indices
[INFO] [stdout] 66 |     pub fn sync_selection(&mut self, ui: &mut UiState) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `bind_group_layout`, `trace_prev_pos_buf`, and `readback_buf` are never read
[INFO] [stdout]   --> src/renderer/compute.rs:83:5
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub struct ComputePipeline {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout] 82 |     pipeline: wgpu::ComputePipeline,
[INFO] [stdout] 83 |     bind_group_layout: wgpu::BindGroupLayout,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 95 |     pub trace_prev_pos_buf: wgpu::Buffer, // trace previous positions (vec3 per particle)
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98 |     readback_buf: wgpu::Buffer,      // staging buffer for GPU->CPU readback
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `clear_selection`, `readback_selection`, and `clear_trace_timers` are never used
[INFO] [stdout]    --> src/renderer/compute.rs:680:12
[INFO] [stdout]     |
[INFO] [stdout] 116 | impl ComputePipeline {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 680 |     pub fn clear_selection(&self, queue: &wgpu::Queue, particle_count: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 687 |     pub fn readback_selection(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 823 |     pub fn clear_trace_timers(&self, encoder: &mut wgpu::CommandEncoder, max_particles: usize) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new` and `with_color` are never used
[INFO] [stdout]   --> src/renderer/draw.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl Vertex {
[INFO] [stdout]    | ----------- associated functions in this implementation
[INFO] [stdout] 15 |     fn new(pos: Vec3, kind: u32) -> Self {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     fn with_color(pos: Vec3, color: [f32; 3]) -> Self {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_particles_in_rect` is never used
[INFO] [stdout]  --> src/selection.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn query_particles_in_rect(
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_particles_in_brush` is never used
[INFO] [stdout]   --> src/selection.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn query_particles_in_brush(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `query_particles_in_slice` is never used
[INFO] [stdout]   --> src/selection.rs:46:8
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub fn query_particles_in_slice(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `nearest_particle_in_screen_radius` is never used
[INFO] [stdout]   --> src/selection.rs:67:8
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub fn nearest_particle_in_screen_radius(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `world_to_screen` is never used
[INFO] [stdout]    --> src/selection.rs:103:4
[INFO] [stdout]     |
[INFO] [stdout] 103 | fn world_to_screen(view_proj: Mat4, pos: Vec3, viewport: [u32; 2]) -> Option<egui::Pos2> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_sim_params` is never used
[INFO] [stdout]   --> src/sim/mod.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | impl RuntimeSimParams {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 84 |     pub fn from_sim_params(params: &SimParams) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/ui/mod.rs:63:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct UiState {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 63 |     pub traces: bool, // Java-style simple boolean
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 84 |     pub trace_clipboard: Option<Vec<u32>>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 89 |     pub trace_presets: Vec<String>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93 |     pub selected_creature: Option<usize>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 94 |     pub save_profile_now: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 95 |     pub auto_save_profiles: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 96 |     pub auto_save_interval: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Simple` is never constructed
[INFO] [stdout]    --> src/ui/mod.rs:116:5
[INFO] [stdout]     |
[INFO] [stdout] 114 | pub enum TraceRenderMode {
[INFO] [stdout]     |          --------------- variant in this enum
[INFO] [stdout] 115 |     Off,
[INFO] [stdout] 116 |     Simple, // Java-style framebuffer accumulation
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `TraceRenderMode` 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 `SelectionOp` is never used
[INFO] [stdout]    --> src/ui/mod.rs:131:10
[INFO] [stdout]     |
[INFO] [stdout] 131 | pub enum SelectionOp {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_selection_op` is never used
[INFO] [stdout]    --> src/ui/mod.rs:301:4
[INFO] [stdout]     |
[INFO] [stdout] 301 | fn apply_selection_op(selected: &mut Vec<usize>, hits: &[usize], op: SelectionOp) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dedup_selection` is never used
[INFO] [stdout]    --> src/ui/mod.rs:318:4
[INFO] [stdout]     |
[INFO] [stdout] 318 | fn dedup_selection(v: &mut Vec<usize>) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_trace_preset` is never used
[INFO] [stdout]     --> src/ui/mod.rs:1634:4
[INFO] [stdout]      |
[INFO] [stdout] 1634 | fn apply_trace_preset(sim: &mut SimState, preset: &str, max_trace: u32) {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_force_matrix_ui` is never used
[INFO] [stdout]  --> src/ui/matrix_ui.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn draw_force_matrix_ui(ui: &mut Ui, sim: &mut SimState, _state: &mut UiState) {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_reaction_matrix_ui` is never used
[INFO] [stdout]   --> src/ui/matrix_ui.rs:93:8
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub fn draw_reaction_matrix_ui(ui: &mut Ui, sim: &mut SimState, state: &mut UiState) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_selection_controls` is never used
[INFO] [stdout]  --> src/ui/selection_ui.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn draw_selection_controls(ui: &mut Ui, sim: &mut SimState, state: &mut UiState) {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_selection_debug` is never used
[INFO] [stdout]   --> src/ui/selection_ui.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub fn draw_selection_debug(ui: &mut Ui, _sim: &mut SimState, state: &mut UiState) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_trace_controls` is never used
[INFO] [stdout]  --> src/ui/trace_ui.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn draw_trace_controls(ui: &mut Ui, sim: &mut SimState, state: &mut UiState) {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_trace_matrix_ui` is never used
[INFO] [stdout]   --> src/ui/trace_ui.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn draw_trace_matrix_ui(ui: &mut Ui, sim: &mut SimState, state: &mut UiState) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_trace_debug` is never used
[INFO] [stdout]    --> src/ui/trace_ui.rs:181:8
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub fn draw_trace_debug(ui: &mut Ui, _sim: &mut SimState, state: &mut UiState) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_debug_panel` is never used
[INFO] [stdout]  --> src/ui/debug_ui.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn draw_debug_panel(ui: &mut Ui, sim: &mut SimState, state: &mut UiState) {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_book_ui` is never used
[INFO] [stdout]  --> src/ui/book_ui.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn draw_book_ui(ui: &mut Ui, sim: &mut SimState, state: &mut UiState) {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_profile_ui` is never used
[INFO] [stdout]   --> src/ui/book_ui.rs:82:8
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub fn draw_profile_ui(ui: &mut Ui, _sim: &mut SimState, state: &mut UiState) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 08s
[INFO] running `Command { std: "docker" "inspect" "e5f7bdc0422df6de656751e0c7aa5a50bf2a2407bd84dc4c815d651a6ccff59e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e5f7bdc0422df6de656751e0c7aa5a50bf2a2407bd84dc4c815d651a6ccff59e", kill_on_drop: false }`
[INFO] [stdout] e5f7bdc0422df6de656751e0c7aa5a50bf2a2407bd84dc4c815d651a6ccff59e
