[INFO] cloning repository https://github.com/Boothwhack/ray-tracing
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Boothwhack/ray-tracing" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBoothwhack%2Fray-tracing", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBoothwhack%2Fray-tracing'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] ff8a45c94d8f66b8226decf2912e41150b80dff8
[INFO] checking Boothwhack/ray-tracing against 1.95.0 for pr-155915
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBoothwhack%2Fray-tracing" "/workspace/builds/worker-5-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Boothwhack/ray-tracing
[INFO] finished tweaking git repo https://github.com/Boothwhack/ray-tracing
[INFO] tweaked toml for git repo https://github.com/Boothwhack/ray-tracing written to /workspace/builds/worker-5-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Boothwhack/ray-tracing on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Boothwhack/ray-tracing 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" "+1.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded proc-macro2 v1.0.63
[INFO] [stderr]   Downloaded thiserror-impl v1.0.40
[INFO] [stderr]   Downloaded xml-rs v0.8.14
[INFO] [stderr]   Downloaded simd-adler32 v0.3.5
[INFO] [stderr]   Downloaded thiserror v1.0.40
[INFO] [stderr]   Downloaded equivalent v1.0.0
[INFO] [stderr]   Downloaded async-channel v1.8.0
[INFO] [stderr]   Downloaded nalgebra-macros v0.2.0
[INFO] [stderr]   Downloaded gpu-descriptor v0.2.3
[INFO] [stderr]   Downloaded is-terminal v0.4.8
[INFO] [stderr]   Downloaded async-net v1.7.0
[INFO] [stderr]   Downloaded unicode-ident v1.0.9
[INFO] [stderr]   Downloaded num-complex v0.4.3
[INFO] [stderr]   Downloaded matrixmultiply v0.3.7
[INFO] [stderr]   Downloaded wgpu-types v0.16.0
[INFO] [stderr]   Downloaded safe_arch v0.7.0
[INFO] [stderr]   Downloaded wide v0.7.10
[INFO] [stderr]   Downloaded winnow v0.4.7
[INFO] [stderr]   Downloaded toml_edit v0.19.11
[INFO] [stderr]   Downloaded glow v0.12.2
[INFO] [stderr]   Downloaded wgpu v0.16.1
[INFO] [stderr]   Downloaded smol v1.3.0
[INFO] [stderr]   Downloaded syn v2.0.22
[INFO] [stderr]   Downloaded regex v1.8.4
[INFO] [stderr]   Downloaded wgpu-hal v0.16.1
[INFO] [stderr]   Downloaded regex-syntax v0.7.2
[INFO] [stderr]   Downloaded rustix v0.38.1
[INFO] [stderr]   Downloaded rustix v0.37.21
[INFO] [stderr]   Downloaded nalgebra v0.32.2
[INFO] [stderr]   Downloaded naga v0.12.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] ea6d2643caf474b6831b649e9837be442f02310db13e0b0d0a99d1d372c4474b
[INFO] running `Command { std: "docker" "start" "-a" "ea6d2643caf474b6831b649e9837be442f02310db13e0b0d0a99d1d372c4474b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "ea6d2643caf474b6831b649e9837be442f02310db13e0b0d0a99d1d372c4474b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ea6d2643caf474b6831b649e9837be442f02310db13e0b0d0a99d1d372c4474b", kill_on_drop: false }`
[INFO] [stdout] ea6d2643caf474b6831b649e9837be442f02310db13e0b0d0a99d1d372c4474b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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" "+1.95.0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] efb0e774aff4fd41fb1ce6cd6bd8b3479439dcbfd7702fca634ac7c883d1d1ea
[INFO] running `Command { std: "docker" "start" "-a" "efb0e774aff4fd41fb1ce6cd6bd8b3479439dcbfd7702fca634ac7c883d1d1ea", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.147
[INFO] [stderr]    Compiling proc-macro2 v1.0.63
[INFO] [stderr]    Compiling unicode-ident v1.0.9
[INFO] [stderr]    Compiling quote v1.0.29
[INFO] [stderr]     Checking log v0.4.19
[INFO] [stderr]     Checking once_cell v1.18.0
[INFO] [stderr]    Compiling pkg-config v0.3.27
[INFO] [stderr]    Compiling num-traits v0.2.15
[INFO] [stderr]    Compiling xml-rs v0.8.14
[INFO] [stderr]     Checking libloading v0.8.0
[INFO] [stderr]     Checking smallvec v1.10.0
[INFO] [stderr]    Compiling futures-core v0.3.28
[INFO] [stderr]    Compiling thiserror v1.0.40
[INFO] [stderr]     Checking dlib v0.5.2
[INFO] [stderr]     Checking concurrent-queue v2.2.0
[INFO] [stderr]     Checking futures-io v0.3.28
[INFO] [stderr]     Checking fastrand v1.9.0
[INFO] [stderr]    Compiling wayland-sys v0.29.5
[INFO] [stderr]     Checking bytemuck v1.13.1
[INFO] [stderr]     Checking parking v2.1.0
[INFO] [stderr]     Checking async-lock v2.7.0
[INFO] [stderr]    Compiling slab v0.4.8
[INFO] [stderr]     Checking futures-lite v1.13.0
[INFO] [stderr]     Checking simd-adler32 v0.3.5
[INFO] [stderr]     Checking bitflags v2.3.3
[INFO] [stderr]    Compiling io-lifetimes v1.0.11
[INFO] [stderr]    Compiling slotmap v1.0.6
[INFO] [stderr]    Compiling lock_api v0.4.10
[INFO] [stderr]    Compiling polling v2.8.0
[INFO] [stderr]    Compiling rustix v0.37.21
[INFO] [stderr]    Compiling parking_lot_core v0.9.8
[INFO] [stderr]     Checking termcolor v1.2.0
[INFO] [stderr]     Checking miniz_oxide v0.7.1
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]    Compiling wayland-scanner v0.29.5
[INFO] [stderr]    Compiling syn v2.0.22
[INFO] [stderr]    Compiling async-io v1.13.0
[INFO] [stderr]     Checking linux-raw-sys v0.3.8
[INFO] [stderr]     Checking async-task v4.4.0
[INFO] [stderr]     Checking unicode-width v0.1.10
[INFO] [stderr]     Checking codespan-reporting v0.11.1
[INFO] [stderr]     Checking flate2 v1.0.26
[INFO] [stderr]     Checking getrandom v0.2.10
[INFO] [stderr]     Checking ahash v0.7.6
[INFO] [stderr]     Checking nix v0.24.3
[INFO] [stderr]     Checking nix v0.25.1
[INFO] [stderr]     Checking socket2 v0.4.9
[INFO] [stderr]     Checking hashbrown v0.12.3
[INFO] [stderr]    Compiling wayland-client v0.29.5
[INFO] [stderr]    Compiling wayland-protocols v0.29.5
[INFO] [stderr]     Checking indexmap v1.9.3
[INFO] [stderr]     Checking xcursor v0.3.4
[INFO] [stderr]     Checking spirv v0.2.0+1.5.4
[INFO] [stderr]     Checking fdeflate v0.3.0
[INFO] [stderr]     Checking wayland-commons v0.29.5
[INFO] [stderr]     Checking async-channel v1.8.0
[INFO] [stderr]    Compiling smithay-client-toolkit v0.16.0
[INFO] [stderr]     Checking gpu-descriptor-types v0.1.1
[INFO] [stderr]    Compiling rustix v0.38.1
[INFO] [stderr]     Checking ttf-parser v0.19.1
[INFO] [stderr]     Checking atomic-waker v1.1.1
[INFO] [stderr]    Compiling thiserror-impl v1.0.40
[INFO] [stderr]     Checking vec_map v0.8.2
[INFO] [stderr]    Compiling signal-hook v0.3.15
[INFO] [stderr]    Compiling paste v1.0.12
[INFO] [stderr]     Checking tiny-skia-path v0.8.4
[INFO] [stderr]     Checking blocking v1.3.1
[INFO] [stderr]     Checking gpu-descriptor v0.2.3
[INFO] [stderr]     Checking png v0.17.9
[INFO] [stderr]     Checking parking_lot v0.12.1
[INFO] [stderr]     Checking crossbeam-epoch v0.9.15
[INFO] [stderr]     Checking wayland-cursor v0.29.5
[INFO] [stderr]     Checking khronos-egl v4.1.0
[INFO] [stderr]     Checking signal-hook-registry v1.4.1
[INFO] [stderr]     Checking memmap2 v0.5.10
[INFO] [stderr]     Checking ash v0.37.3+1.3.251
[INFO] [stderr]     Checking naga v0.12.2
[INFO] [stderr]     Checking calloop v0.10.6
[INFO] [stderr]     Checking wgpu-types v0.16.0
[INFO] [stderr]     Checking safe_arch v0.7.0
[INFO] [stderr]    Compiling x11-dl v2.21.0
[INFO] [stderr]    Compiling async-fs v1.6.0
[INFO] [stderr]    Compiling matrixmultiply v0.3.7
[INFO] [stderr]    Compiling async-process v1.7.0
[INFO] [stderr]    Compiling async-net v1.7.0
[INFO] [stderr]    Compiling typenum v1.16.0
[INFO] [stderr]    Compiling rayon-core v1.11.0
[INFO] [stderr]     Checking linux-raw-sys v0.4.3
[INFO] [stderr]     Checking profiling v1.0.8
[INFO] [stderr]     Checking glow v0.12.2
[INFO] [stderr]    Compiling winit v0.28.6
[INFO] [stderr]     Checking tiny-skia v0.8.4
[INFO] [stderr]     Checking owned_ttf_parser v0.19.0
[INFO] [stderr]     Checking ab_glyph v0.2.21
[INFO] [stderr]     Checking wide v0.7.10
[INFO] [stderr]     Checking crossbeam-deque v0.8.3
[INFO] [stderr]     Checking num-integer v0.1.45
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]     Checking num_cpus v1.16.0
[INFO] [stderr]     Checking approx v0.5.1
[INFO] [stderr]     Checking num-complex v0.4.3
[INFO] [stderr]     Checking aho-corasick v1.0.2
[INFO] [stderr]     Checking regex-syntax v0.7.2
[INFO] [stderr]     Checking simba v0.8.1
[INFO] [stderr]     Checking num-rational v0.4.1
[INFO] [stderr]     Checking is-terminal v0.4.8
[INFO] [stderr]     Checking regex v1.8.4
[INFO] [stderr]     Checking mio v0.8.8
[INFO] [stderr]     Checking async-executor v1.5.1
[INFO] [stderr]     Checking percent-encoding v2.3.0
[INFO] [stderr]     Checking either v1.8.1
[INFO] [stderr]     Checking env_logger v0.10.0
[INFO] [stderr]     Checking smol v1.3.0
[INFO] [stderr]     Checking rayon v1.7.0
[INFO] [stderr]    Compiling bytemuck_derive v1.4.1
[INFO] [stderr]     Checking fastrand v2.0.0
[INFO] [stderr]     Checking float-ord v0.3.2
[INFO] [stderr]    Compiling nalgebra-macros v0.2.0
[INFO] [stderr]     Checking nalgebra v0.32.2
[INFO] [stderr]     Checking wgpu-hal v0.16.1
[INFO] [stderr]     Checking wgpu-core v0.16.1
[INFO] [stderr]     Checking wgpu v0.16.1
[INFO] [stderr]     Checking sctk-adwaita v0.5.4
[INFO] [stderr]     Checking ray-tracing v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `Sphere`
[INFO] [stdout]   --> src/main.rs:16:22
[INFO] [stdout]    |
[INFO] [stdout] 16 | use object::{Object, Sphere};
[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: `Hit`
[INFO] [stdout]   --> src/render.rs:13:18
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::ray::{Hit, Ray};
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around closure body
[INFO] [stdout]    --> src/render.rs:144:18
[INFO] [stdout]     |
[INFO] [stdout] 144 |         .map(|i| (i * chunk_len..i * chunk_len + chunk_len))
[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] 144 -         .map(|i| (i * chunk_len..i * chunk_len + chunk_len))
[INFO] [stdout] 144 +         .map(|i| i * chunk_len..i * chunk_len + chunk_len )
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Sphere`
[INFO] [stdout]   --> src/main.rs:16:22
[INFO] [stdout]    |
[INFO] [stdout] 16 | use object::{Object, Sphere};
[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: `Hit`
[INFO] [stdout]   --> src/render.rs:13:18
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::ray::{Hit, Ray};
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around closure body
[INFO] [stdout]    --> src/render.rs:144:18
[INFO] [stdout]     |
[INFO] [stdout] 144 |         .map(|i| (i * chunk_len..i * chunk_len + chunk_len))
[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] 144 -         .map(|i| (i * chunk_len..i * chunk_len + chunk_len))
[INFO] [stdout] 144 +         .map(|i| i * chunk_len..i * chunk_len + chunk_len )
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:227:25
[INFO] [stdout]     |
[INFO] [stdout] 227 |                     let mut state = state.lock().expect("state write lock");
[INFO] [stdout]     |                         ----^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `up`
[INFO] [stdout]    --> src/main.rs:210:63
[INFO] [stdout]     |
[INFO] [stdout] 210 |                     if let CameraDirection::LookAt { look_at, up } = &state.camera.direction {
[INFO] [stdout]     |                                                               ^^ help: try ignoring the field: `up: _`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `position`
[INFO] [stdout]    --> src/main.rs:226:79
[INFO] [stdout]     |
[INFO] [stdout] 226 |                 WindowEvent::MouseWheel { delta: MouseScrollDelta::PixelDelta(position), .. } if interactive => {
[INFO] [stdout]     |                                                                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/main.rs:227:25
[INFO] [stdout]     |
[INFO] [stdout] 227 |                     let mut state = state.lock().expect("state write lock");
[INFO] [stdout]     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOOK_SENSITIVITY` is never used
[INFO] [stdout]   --> src/main.rs:34:7
[INFO] [stdout]    |
[INFO] [stdout] 34 | const LOOK_SENSITIVITY: f32 = 0.005;
[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 `0` is never read
[INFO] [stdout]   --> src/gpu.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | struct Vertex {
[INFO] [stdout]    |        ^^^^^^ field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]   --> src/gpu.rs:18:1
[INFO] [stdout]    |
[INFO] [stdout] 18 | #[repr(C)]
[INFO] [stdout]    | ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `picture` is never used
[INFO] [stdout]    --> src/gpu.rs:292:12
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl<P: PixelFormat> Frame<P> {
[INFO] [stdout]     | ----------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 292 |     pub fn picture(&self) -> Picture<&[P]> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Rotation` is never constructed
[INFO] [stdout]  --> src/camera.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum CameraDirection {
[INFO] [stdout]   |          --------------- variant in this enum
[INFO] [stdout] 7 |     LookAt { look_at: Point3<f32>, up: UnitVector3<f32> },
[INFO] [stdout] 8 |     Rotation(Rotation3<f32>),
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `CameraDirection` 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: constant `SINGLE_SAMPLE_PATTERN` is never used
[INFO] [stdout]   --> src/render.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const SINGLE_SAMPLE_PATTERN: [Vector2<f32>; 1] = [vector![0.5, 0.5]];
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MULTISAMPLE_2X_PATTERN` is never used
[INFO] [stdout]   --> src/render.rs:28:11
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub const MULTISAMPLE_2X_PATTERN: [Vector2<f32>; 2] = [
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MULTISAMPLE_4X_PATTERN` is never used
[INFO] [stdout]   --> src/render.rs:32:11
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub const MULTISAMPLE_4X_PATTERN: [Vector2<f32>; 4] = [
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]   --> src/picture.rs:87:1
[INFO] [stdout]    |
[INFO] [stdout] 87 | #[repr(C)]
[INFO] [stdout]    | ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/picture.rs:88:12
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub struct RGBA8 {
[INFO] [stdout]    |            ^^^^^ field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant `WHITE` is never used
[INFO] [stdout]    --> src/picture.rs:117:22
[INFO] [stdout]     |
[INFO] [stdout] 116 | impl RGBA8 {
[INFO] [stdout]     | ---------- associated constant in this implementation
[INFO] [stdout] 117 |     pub(crate) const WHITE: RGBA8 = RGBA8::new_hex(0xFFFFFFFF);
[INFO] [stdout]     |                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `size` is never read
[INFO] [stdout]    --> src/picture.rs:149:5
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub struct Picture<P> {
[INFO] [stdout]     |            ------- field in this struct
[INFO] [stdout] 148 |     pixels: P,
[INFO] [stdout] 149 |     size: (u32, u32),
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `width`, `height`, and `to_index` are never used
[INFO] [stdout]    --> src/picture.rs:157:12
[INFO] [stdout]     |
[INFO] [stdout] 152 | impl<P> Picture<P> {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn width(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn height(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     fn to_index(&self, x: u32, y: u32) -> usize {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `pixel` is never used
[INFO] [stdout]    --> src/picture.rs:171:12
[INFO] [stdout]     |
[INFO] [stdout] 170 | impl<'a, T> Picture<&'a [T]> {
[INFO] [stdout]     | ---------------------------- method in this implementation
[INFO] [stdout] 171 |     pub fn pixel(&self, x: u32, y: u32) -> &T {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `pixel_mut` and `slice_mut` are never used
[INFO] [stdout]    --> src/picture.rs:177:12
[INFO] [stdout]     |
[INFO] [stdout] 176 | impl<'a, T> Picture<&'a mut [T]> {
[INFO] [stdout]     | -------------------------------- methods in this implementation
[INFO] [stdout] 177 |     pub fn pixel_mut(&mut self, x: u32, y: u32) -> &mut T {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn slice_mut(&mut self, x: u32, y: u32, len: usize) -> &mut [T] {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `fill_gradient` and `clear` are never used
[INFO] [stdout]    --> src/picture.rs:193:12
[INFO] [stdout]     |
[INFO] [stdout] 192 | impl<'a> Picture<&'a mut [RGBA8]> {
[INFO] [stdout]     | --------------------------------- methods in this implementation
[INFO] [stdout] 193 |     pub fn fill_gradient(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub fn clear(&mut self, color: RGBA8) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/object.rs:21:19
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn hit<R>(&self, ray: &Ray, t_rng: R) -> Option<Hit>
[INFO] [stdout]    |                   ^^^^^ the lifetime is elided here     ^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn hit<R>(&self, ray: &Ray, t_rng: R) -> Option<Hit<'_>>
[INFO] [stdout]    |                                                            ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/object.rs:71:19
[INFO] [stdout]    |
[INFO] [stdout] 71 |     pub fn hit<R>(&self, ray: &Ray, t_rng: R) -> Option<Hit>
[INFO] [stdout]    |                   ^^^^^ the lifetime is elided here     ^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 71 |     pub fn hit<R>(&self, ray: &Ray, t_rng: R) -> Option<Hit<'_>>
[INFO] [stdout]    |                                                            ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:227:25
[INFO] [stdout]     |
[INFO] [stdout] 227 |                     let mut state = state.lock().expect("state write lock");
[INFO] [stdout]     |                         ----^^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `up`
[INFO] [stdout]    --> src/main.rs:210:63
[INFO] [stdout]     |
[INFO] [stdout] 210 |                     if let CameraDirection::LookAt { look_at, up } = &state.camera.direction {
[INFO] [stdout]     |                                                               ^^ help: try ignoring the field: `up: _`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `position`
[INFO] [stdout]    --> src/main.rs:226:79
[INFO] [stdout]     |
[INFO] [stdout] 226 |                 WindowEvent::MouseWheel { delta: MouseScrollDelta::PixelDelta(position), .. } if interactive => {
[INFO] [stdout]     |                                                                               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_position`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state`
[INFO] [stdout]    --> src/main.rs:227:25
[INFO] [stdout]     |
[INFO] [stdout] 227 |                     let mut state = state.lock().expect("state write lock");
[INFO] [stdout]     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `LOOK_SENSITIVITY` is never used
[INFO] [stdout]   --> src/main.rs:34:7
[INFO] [stdout]    |
[INFO] [stdout] 34 | const LOOK_SENSITIVITY: f32 = 0.005;
[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 `0` is never read
[INFO] [stdout]   --> src/gpu.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | struct Vertex {
[INFO] [stdout]    |        ^^^^^^ field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]   --> src/gpu.rs:18:1
[INFO] [stdout]    |
[INFO] [stdout] 18 | #[repr(C)]
[INFO] [stdout]    | ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `picture` is never used
[INFO] [stdout]    --> src/gpu.rs:292:12
[INFO] [stdout]     |
[INFO] [stdout] 258 | impl<P: PixelFormat> Frame<P> {
[INFO] [stdout]     | ----------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 292 |     pub fn picture(&self) -> Picture<&[P]> {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Rotation` is never constructed
[INFO] [stdout]  --> src/camera.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum CameraDirection {
[INFO] [stdout]   |          --------------- variant in this enum
[INFO] [stdout] 7 |     LookAt { look_at: Point3<f32>, up: UnitVector3<f32> },
[INFO] [stdout] 8 |     Rotation(Rotation3<f32>),
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `CameraDirection` 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: constant `SINGLE_SAMPLE_PATTERN` is never used
[INFO] [stdout]   --> src/render.rs:27:11
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub const SINGLE_SAMPLE_PATTERN: [Vector2<f32>; 1] = [vector![0.5, 0.5]];
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MULTISAMPLE_2X_PATTERN` is never used
[INFO] [stdout]   --> src/render.rs:28:11
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub const MULTISAMPLE_2X_PATTERN: [Vector2<f32>; 2] = [
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MULTISAMPLE_4X_PATTERN` is never used
[INFO] [stdout]   --> src/render.rs:32:11
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub const MULTISAMPLE_4X_PATTERN: [Vector2<f32>; 4] = [
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check` is never used
[INFO] [stdout]   --> src/picture.rs:87:1
[INFO] [stdout]    |
[INFO] [stdout] 87 | #[repr(C)]
[INFO] [stdout]    | ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/picture.rs:88:12
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub struct RGBA8 {
[INFO] [stdout]    |            ^^^^^ field in this struct
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider removing this field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant `WHITE` is never used
[INFO] [stdout]    --> src/picture.rs:117:22
[INFO] [stdout]     |
[INFO] [stdout] 116 | impl RGBA8 {
[INFO] [stdout]     | ---------- associated constant in this implementation
[INFO] [stdout] 117 |     pub(crate) const WHITE: RGBA8 = RGBA8::new_hex(0xFFFFFFFF);
[INFO] [stdout]     |                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `size` is never read
[INFO] [stdout]    --> src/picture.rs:149:5
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub struct Picture<P> {
[INFO] [stdout]     |            ------- field in this struct
[INFO] [stdout] 148 |     pixels: P,
[INFO] [stdout] 149 |     size: (u32, u32),
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `width`, `height`, and `to_index` are never used
[INFO] [stdout]    --> src/picture.rs:157:12
[INFO] [stdout]     |
[INFO] [stdout] 152 | impl<P> Picture<P> {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 157 |     pub fn width(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn height(&self) -> u32 {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     fn to_index(&self, x: u32, y: u32) -> usize {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `pixel` is never used
[INFO] [stdout]    --> src/picture.rs:171:12
[INFO] [stdout]     |
[INFO] [stdout] 170 | impl<'a, T> Picture<&'a [T]> {
[INFO] [stdout]     | ---------------------------- method in this implementation
[INFO] [stdout] 171 |     pub fn pixel(&self, x: u32, y: u32) -> &T {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `pixel_mut` and `slice_mut` are never used
[INFO] [stdout]    --> src/picture.rs:177:12
[INFO] [stdout]     |
[INFO] [stdout] 176 | impl<'a, T> Picture<&'a mut [T]> {
[INFO] [stdout]     | -------------------------------- methods in this implementation
[INFO] [stdout] 177 |     pub fn pixel_mut(&mut self, x: u32, y: u32) -> &mut T {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 182 |     pub fn slice_mut(&mut self, x: u32, y: u32, len: usize) -> &mut [T] {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `fill_gradient` and `clear` are never used
[INFO] [stdout]    --> src/picture.rs:193:12
[INFO] [stdout]     |
[INFO] [stdout] 192 | impl<'a> Picture<&'a mut [RGBA8]> {
[INFO] [stdout]     | --------------------------------- methods in this implementation
[INFO] [stdout] 193 |     pub fn fill_gradient(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub fn clear(&mut self, color: RGBA8) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/object.rs:21:19
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn hit<R>(&self, ray: &Ray, t_rng: R) -> Option<Hit>
[INFO] [stdout]    |                   ^^^^^ the lifetime is elided here     ^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn hit<R>(&self, ray: &Ray, t_rng: R) -> Option<Hit<'_>>
[INFO] [stdout]    |                                                            ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/object.rs:71:19
[INFO] [stdout]    |
[INFO] [stdout] 71 |     pub fn hit<R>(&self, ray: &Ray, t_rng: R) -> Option<Hit>
[INFO] [stdout]    |                   ^^^^^ the lifetime is elided here     ^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 71 |     pub fn hit<R>(&self, ray: &Ray, t_rng: R) -> Option<Hit<'_>>
[INFO] [stdout]    |                                                            ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 41s
[INFO] running `Command { std: "docker" "inspect" "efb0e774aff4fd41fb1ce6cd6bd8b3479439dcbfd7702fca634ac7c883d1d1ea", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "efb0e774aff4fd41fb1ce6cd6bd8b3479439dcbfd7702fca634ac7c883d1d1ea", kill_on_drop: false }`
[INFO] [stdout] efb0e774aff4fd41fb1ce6cd6bd8b3479439dcbfd7702fca634ac7c883d1d1ea
