[INFO] cloning repository https://github.com/SJBarrett/light-rehnda
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/SJBarrett/light-rehnda" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSJBarrett%2Flight-rehnda", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSJBarrett%2Flight-rehnda'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 89020f2953b4f17708298f88a691ac0f92a99728
[INFO] checking SJBarrett/light-rehnda against 1.95.0 for pr-155915
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSJBarrett%2Flight-rehnda" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/SJBarrett/light-rehnda
[INFO] finished tweaking git repo https://github.com/SJBarrett/light-rehnda
[INFO] tweaked toml for git repo https://github.com/SJBarrett/light-rehnda written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/SJBarrett/light-rehnda 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/SJBarrett/light-rehnda 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]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded crossbeam-deque v0.8.2
[INFO] [stderr]   Downloaded num_threads v0.1.6
[INFO] [stderr]   Downloaded crossbeam-epoch v0.9.13
[INFO] [stderr]   Downloaded clap_lex v0.3.1
[INFO] [stderr]   Downloaded bit_field v0.10.1
[INFO] [stderr]   Downloaded futures-sink v0.3.26
[INFO] [stderr]   Downloaded futures-core v0.3.26
[INFO] [stderr]   Downloaded simplelog v0.12.0
[INFO] [stderr]   Downloaded console v0.15.5
[INFO] [stderr]   Downloaded os_str_bytes v6.4.1
[INFO] [stderr]   Downloaded clap_derive v4.1.0
[INFO] [stderr]   Downloaded spin v0.9.4
[INFO] [stderr]   Downloaded bytemuck v1.13.0
[INFO] [stderr]   Downloaded indicatif v0.17.3
[INFO] [stderr]   Downloaded rayon-core v1.10.2
[INFO] [stderr]   Downloaded portable-atomic v0.3.19
[INFO] [stderr]   Downloaded crossbeam-channel v0.5.6
[INFO] [stderr]   Downloaded rayon v1.6.1
[INFO] [stderr]   Downloaded clap v4.1.4
[INFO] [stderr]   Downloaded exr v1.5.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] 668dd67911f122c89b278390d412e3697c7a636f439569756701c179a7cc79f7
[INFO] running `Command { std: "docker" "start" "-a" "668dd67911f122c89b278390d412e3697c7a636f439569756701c179a7cc79f7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "668dd67911f122c89b278390d412e3697c7a636f439569756701c179a7cc79f7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "668dd67911f122c89b278390d412e3697c7a636f439569756701c179a7cc79f7", kill_on_drop: false }`
[INFO] [stdout] 668dd67911f122c89b278390d412e3697c7a636f439569756701c179a7cc79f7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] 9fa354cd5e8946fad397a2d90f183516563f023ed2b6cfb416a1d790cee99f89
[INFO] running `Command { std: "docker" "start" "-a" "9fa354cd5e8946fad397a2d90f183516563f023ed2b6cfb416a1d790cee99f89", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.139
[INFO] [stderr]    Compiling proc-macro2 v1.0.50
[INFO] [stderr]    Compiling quote v1.0.23
[INFO] [stderr]    Compiling unicode-ident v1.0.6
[INFO] [stderr]    Compiling syn v1.0.107
[INFO] [stderr]     Checking scopeguard v1.1.0
[INFO] [stderr]    Compiling crossbeam-utils v0.8.14
[INFO] [stderr]    Compiling memoffset v0.7.1
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.13
[INFO] [stderr]    Compiling version_check v0.9.4
[INFO] [stderr]    Compiling lock_api v0.4.9
[INFO] [stderr]     Checking adler v1.0.2
[INFO] [stderr]    Compiling rayon-core v1.10.2
[INFO] [stderr]    Compiling crc32fast v1.3.2
[INFO] [stderr]     Checking miniz_oxide v0.6.2
[INFO] [stderr]    Compiling num-traits v0.2.15
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]    Compiling futures-core v0.3.26
[INFO] [stderr]    Compiling io-lifetimes v1.0.4
[INFO] [stderr]     Checking crossbeam-channel v0.5.6
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]     Checking crossbeam-deque v0.8.2
[INFO] [stderr]    Compiling num-integer v0.1.45
[INFO] [stderr]    Compiling serde_derive v1.0.152
[INFO] [stderr]     Checking either v1.8.1
[INFO] [stderr]    Compiling rustix v0.36.7
[INFO] [stderr]     Checking flate2 v1.0.25
[INFO] [stderr]     Checking spin v0.9.4
[INFO] [stderr]    Compiling num-rational v0.4.1
[INFO] [stderr]     Checking futures-sink v0.3.26
[INFO] [stderr]     Checking linux-raw-sys v0.1.4
[INFO] [stderr]     Checking weezl v0.1.7
[INFO] [stderr]    Compiling portable-atomic v0.3.19
[INFO] [stderr]    Compiling log v0.4.17
[INFO] [stderr]    Compiling serde v1.0.152
[INFO] [stderr]     Checking getrandom v0.2.8
[INFO] [stderr]     Checking num_cpus v1.15.0
[INFO] [stderr]     Checking nanorand v0.7.0
[INFO] [stderr]    Compiling time-core v0.1.0
[INFO] [stderr]    Compiling time-macros v0.2.6
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking threadpool v1.8.1
[INFO] [stderr]     Checking num_threads v0.1.6
[INFO] [stderr]     Checking smallvec v1.10.0
[INFO] [stderr]    Compiling heck v0.4.0
[INFO] [stderr]     Checking unicode-width v0.1.10
[INFO] [stderr]     Checking bit_field v0.10.1
[INFO] [stderr]     Checking lebe v0.5.2
[INFO] [stderr]     Checking lazy_static v1.4.0
[INFO] [stderr]     Checking itoa v1.0.5
[INFO] [stderr]     Checking color_quant v1.1.0
[INFO] [stderr]     Checking termcolor v1.1.3
[INFO] [stderr]     Checking half v2.2.1
[INFO] [stderr]     Checking os_str_bytes v6.4.1
[INFO] [stderr]     Checking gif v0.11.4
[INFO] [stderr]     Checking rayon v1.6.1
[INFO] [stderr]     Checking clap_lex v0.3.1
[INFO] [stderr]     Checking console v0.15.5
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking png v0.17.7
[INFO] [stderr]     Checking base64 v0.13.1
[INFO] [stderr]     Checking byteorder v1.4.3
[INFO] [stderr]     Checking time v0.3.17
[INFO] [stderr]     Checking bytemuck v1.13.0
[INFO] [stderr]     Checking is-terminal v0.4.2
[INFO] [stderr]     Checking once_cell v1.17.0
[INFO] [stderr]     Checking scoped_threadpool v0.1.9
[INFO] [stderr]     Checking strsim v0.10.0
[INFO] [stderr]     Checking number_prefix v0.4.0
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking indicatif v0.17.3
[INFO] [stderr]     Checking glam v0.22.0
[INFO] [stderr]     Checking simplelog v0.12.0
[INFO] [stderr]     Checking jpeg-decoder v0.3.0
[INFO] [stderr]     Checking tiff v0.8.1
[INFO] [stderr]    Compiling pin-project-internal v1.0.12
[INFO] [stderr]    Compiling clap_derive v4.1.0
[INFO] [stderr]     Checking pin-project v1.0.12
[INFO] [stderr]     Checking flume v0.10.14
[INFO] [stderr]     Checking clap v4.1.4
[INFO] [stderr]     Checking exr v1.5.2
[INFO] [stderr]     Checking image v0.24.5
[INFO] [stderr]     Checking ron v0.8.0
[INFO] [stderr]     Checking light-rehnda v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `crate::hittable::Hittable`
[INFO] [stdout]   --> src/main.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::hittable::Hittable;
[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: `error`
[INFO] [stdout]  --> src/hittable/constant_medium.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | use log::{error, warn};
[INFO] [stdout]   |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ImageFormat` and `RgbImage`
[INFO] [stdout]  --> src/image/image_writer.rs:4:27
[INFO] [stdout]   |
[INFO] [stdout] 4 | use image::{DynamicImage, ImageFormat, ImageResult, Rgb, Rgb32FImage, RgbImage};
[INFO] [stdout]   |                           ^^^^^^^^^^^                                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `image::buffer::ConvertBuffer`
[INFO] [stdout]  --> src/image/image_writer.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use image::buffer::ConvertBuffer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::iter::once`
[INFO] [stdout]  --> src/scene/scene_builder.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::iter::once;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::hittable::Hittable`
[INFO] [stdout]   --> src/main.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::hittable::Hittable;
[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: `error`
[INFO] [stdout]  --> src/hittable/constant_medium.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | use log::{error, warn};
[INFO] [stdout]   |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ImageFormat` and `RgbImage`
[INFO] [stdout]  --> src/image/image_writer.rs:4:27
[INFO] [stdout]   |
[INFO] [stdout] 4 | use image::{DynamicImage, ImageFormat, ImageResult, Rgb, Rgb32FImage, RgbImage};
[INFO] [stdout]   |                           ^^^^^^^^^^^                                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `image::buffer::ConvertBuffer`
[INFO] [stdout]  --> src/image/image_writer.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use image::buffer::ConvertBuffer;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::iter::once`
[INFO] [stdout]  --> src/scene/scene_builder.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::iter::once;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_0`
[INFO] [stdout]   --> src/hittable/hittable.rs:51:28
[INFO] [stdout]    |
[INFO] [stdout] 51 |     fn bounding_box(&self, time_0: f32, time_1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_0`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_1`
[INFO] [stdout]   --> src/hittable/hittable.rs:51:41
[INFO] [stdout]    |
[INFO] [stdout] 51 |     fn bounding_box(&self, time_0: f32, time_1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/hittable/box_hittable.rs:20:13
[INFO] [stdout]    |
[INFO] [stdout] 20 |         let mut sides: Vec<Arc<dyn Hittable>> = vec![
[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: `time_0`
[INFO] [stdout]   --> src/hittable/box_hittable.rs:42:28
[INFO] [stdout]    |
[INFO] [stdout] 42 |     fn bounding_box(&self, time_0: f32, time_1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_1`
[INFO] [stdout]   --> src/hittable/box_hittable.rs:42:41
[INFO] [stdout]    |
[INFO] [stdout] 42 |     fn bounding_box(&self, time_0: f32, time_1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_0`
[INFO] [stdout]   --> src/hittable/xy_rect.rs:59:28
[INFO] [stdout]    |
[INFO] [stdout] 59 |     fn bounding_box(&self, time_0: f32, time_1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_1`
[INFO] [stdout]   --> src/hittable/xy_rect.rs:59:41
[INFO] [stdout]    |
[INFO] [stdout] 59 |     fn bounding_box(&self, time_0: f32, time_1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_0`
[INFO] [stdout]   --> src/hittable/xz_rect.rs:60:28
[INFO] [stdout]    |
[INFO] [stdout] 60 |     fn bounding_box(&self, time_0: f32, time_1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_1`
[INFO] [stdout]   --> src/hittable/xz_rect.rs:60:41
[INFO] [stdout]    |
[INFO] [stdout] 60 |     fn bounding_box(&self, time_0: f32, time_1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_0`
[INFO] [stdout]   --> src/hittable/yz_rect.rs:59:28
[INFO] [stdout]    |
[INFO] [stdout] 59 |     fn bounding_box(&self, time_0: f32, time_1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_1`
[INFO] [stdout]   --> src/hittable/yz_rect.rs:59:41
[INFO] [stdout]    |
[INFO] [stdout] 59 |     fn bounding_box(&self, time_0: f32, time_1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `uv`
[INFO] [stdout]   --> src/material/material.rs:17:23
[INFO] [stdout]    |
[INFO] [stdout] 17 |     fn emitted(&self, uv: &Uv, point: &Point3f) -> ColorRgbF {
[INFO] [stdout]    |                       ^^ help: if this is intentional, prefix it with an underscore: `_uv`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `point`
[INFO] [stdout]   --> src/material/material.rs:17:32
[INFO] [stdout]    |
[INFO] [stdout] 17 |     fn emitted(&self, uv: &Uv, point: &Point3f) -> ColorRgbF {
[INFO] [stdout]    |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_point`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ray_in`
[INFO] [stdout]   --> src/material/diffuse_light.rs:30:23
[INFO] [stdout]    |
[INFO] [stdout] 30 |     fn scatter(&self, ray_in: &Ray, hit_result: &HitResult) -> Option<Scatter> {
[INFO] [stdout]    |                       ^^^^^^ help: if this is intentional, prefix it with an underscore: `_ray_in`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hit_result`
[INFO] [stdout]   --> src/material/diffuse_light.rs:30:37
[INFO] [stdout]    |
[INFO] [stdout] 30 |     fn scatter(&self, ray_in: &Ray, hit_result: &HitResult) -> Option<Scatter> {
[INFO] [stdout]    |                                     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_hit_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/scene/scene_builder.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 40 |         _ => unimplemented!("Unsupported scene name!")
[INFO] [stdout]    |         ^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]   --> src/scene/scene_builder.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |         SceneName::RandomSpheres => random_spheres_scene(&settings.camera_settings),
[INFO] [stdout]    |         ------------------------ matches some of the same values
[INFO] [stdout] 34 |         SceneName::ThreeSpheres => three_spheres_scene(&settings.camera_settings),
[INFO] [stdout]    |         ----------------------- matches some of the same values
[INFO] [stdout] 35 |         SceneName::Globe => globe_scene(&settings.camera_settings),
[INFO] [stdout]    |         ---------------- matches some of the same values
[INFO] [stdout] 36 |         SceneName::LightsDemo => lights_demo_scene(&settings.camera_settings),
[INFO] [stdout]    |         --------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 40 |         _ => unimplemented!("Unsupported scene name!")
[INFO] [stdout]    |         ^ ...and 3 other patterns collectively make this unreachable
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `point`
[INFO] [stdout]   --> src/texture/image.rs:23:31
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn sample(&self, uv: &Uv, point: &Point3f) -> ColorRgbF {
[INFO] [stdout]    |                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_point`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `uv`
[INFO] [stdout]   --> src/texture/noise.rs:11:22
[INFO] [stdout]    |
[INFO] [stdout] 11 |     fn sample(&self, uv: &Uv, point: &Point3f) -> ColorRgbF {
[INFO] [stdout]    |                      ^^ help: if this is intentional, prefix it with an underscore: `_uv`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/util/perlin.rs:57:13
[INFO] [stdout]    |
[INFO] [stdout] 57 |         for i in 0..depth {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ColorRgb8` is never constructed
[INFO] [stdout]  --> src/core/color.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct ColorRgb8 {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_0`
[INFO] [stdout]   --> src/hittable/hittable.rs:51:28
[INFO] [stdout]    |
[INFO] [stdout] 51 |     fn bounding_box(&self, time_0: f32, time_1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_0`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `from_color_rgb_f` is never used
[INFO] [stdout]   --> src/core/color.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl ColorRgb8 {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 14 |     pub fn from_color_rgb_f(color_rgb: ColorRgbF) -> ColorRgb8 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_1`
[INFO] [stdout]   --> src/hittable/hittable.rs:51:41
[INFO] [stdout]    |
[INFO] [stdout] 51 |     fn bounding_box(&self, time_0: f32, time_1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new_with_texture` is never used
[INFO] [stdout]   --> src/hittable/constant_medium.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl ConstantMedium {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 19 |     pub fn new_with_texture(boundary: Arc<dyn Hittable>, density: f32, texture: Arc<dyn Texture>) -> ConstantMedium {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `write_image_buffer_to_ppm` is never used
[INFO] [stdout]   --> src/image/image_writer.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl ImageFileWriter<'_> {
[INFO] [stdout]    | ------------------------ method in this implementation
[INFO] [stdout] 15 |     pub fn write_image_buffer_to_ppm(&self, image_buffer: &ImageBuffer, num_samples: usize) -> Result<(), Error> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new_with_texture` is never used
[INFO] [stdout]   --> src/material/isotropic.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl IsotropicMaterial {
[INFO] [stdout]    | ---------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn new_with_texture(texture: Arc<dyn Texture>) -> IsotropicMaterial {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `aspect_ratio` and `look_direction` are never read
[INFO] [stdout]  --> src/scene/camera.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Camera {
[INFO] [stdout]   |            ------ fields in this struct
[INFO] [stdout] 6 |     aspect_ratio: f32,
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 9 |     look_direction: Vec3f,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Camera` 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: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/acceleration/bvh.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult> {
[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] 85 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult<'_>> {
[INFO] [stdout]    |                                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/hittable/hittable.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult>;
[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] 32 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult<'_>>;
[INFO] [stdout]    |                                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/hittable/hittable.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult> {
[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] 38 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult<'_>> {
[INFO] [stdout]    |                                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/hittable/box_hittable.rs:20:13
[INFO] [stdout]    |
[INFO] [stdout] 20 |         let mut sides: Vec<Arc<dyn Hittable>> = vec![
[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: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/hittable/box_hittable.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult> {
[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] 38 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult<'_>> {
[INFO] [stdout]    |                                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_0`
[INFO] [stdout]   --> src/hittable/box_hittable.rs:42:28
[INFO] [stdout]    |
[INFO] [stdout] 42 |     fn bounding_box(&self, time_0: f32, time_1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/hittable/constant_medium.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult> {
[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] 40 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult<'_>> {
[INFO] [stdout]    |                                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_1`
[INFO] [stdout]   --> src/hittable/box_hittable.rs:42:41
[INFO] [stdout]    |
[INFO] [stdout] 42 |     fn bounding_box(&self, time_0: f32, time_1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/hittable/rotate_y.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 60 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult> {
[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] 60 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult<'_>> {
[INFO] [stdout]    |                                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/hittable/sphere.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult> {
[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] 17 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult<'_>> {
[INFO] [stdout]    |                                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/hittable/translate.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult> {
[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] 22 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult<'_>> {
[INFO] [stdout]    |                                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/hittable/xy_rect.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult> {
[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] 34 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult<'_>> {
[INFO] [stdout]    |                                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/hittable/xz_rect.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 35 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult> {
[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] 35 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult<'_>> {
[INFO] [stdout]    |                                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/hittable/yz_rect.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult> {
[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] 34 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult<'_>> {
[INFO] [stdout]    |                                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_0`
[INFO] [stdout]   --> src/hittable/xy_rect.rs:59:28
[INFO] [stdout]    |
[INFO] [stdout] 59 |     fn bounding_box(&self, time_0: f32, time_1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_1`
[INFO] [stdout]   --> src/hittable/xy_rect.rs:59:41
[INFO] [stdout]    |
[INFO] [stdout] 59 |     fn bounding_box(&self, time_0: f32, time_1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_0`
[INFO] [stdout]   --> src/hittable/xz_rect.rs:60:28
[INFO] [stdout]    |
[INFO] [stdout] 60 |     fn bounding_box(&self, time_0: f32, time_1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_1`
[INFO] [stdout]   --> src/hittable/xz_rect.rs:60:41
[INFO] [stdout]    |
[INFO] [stdout] 60 |     fn bounding_box(&self, time_0: f32, time_1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_0`
[INFO] [stdout]   --> src/hittable/yz_rect.rs:59:28
[INFO] [stdout]    |
[INFO] [stdout] 59 |     fn bounding_box(&self, time_0: f32, time_1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                            ^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_1`
[INFO] [stdout]   --> src/hittable/yz_rect.rs:59:41
[INFO] [stdout]    |
[INFO] [stdout] 59 |     fn bounding_box(&self, time_0: f32, time_1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `uv`
[INFO] [stdout]   --> src/material/material.rs:17:23
[INFO] [stdout]    |
[INFO] [stdout] 17 |     fn emitted(&self, uv: &Uv, point: &Point3f) -> ColorRgbF {
[INFO] [stdout]    |                       ^^ help: if this is intentional, prefix it with an underscore: `_uv`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `point`
[INFO] [stdout]   --> src/material/material.rs:17:32
[INFO] [stdout]    |
[INFO] [stdout] 17 |     fn emitted(&self, uv: &Uv, point: &Point3f) -> ColorRgbF {
[INFO] [stdout]    |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_point`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ray_in`
[INFO] [stdout]   --> src/material/diffuse_light.rs:30:23
[INFO] [stdout]    |
[INFO] [stdout] 30 |     fn scatter(&self, ray_in: &Ray, hit_result: &HitResult) -> Option<Scatter> {
[INFO] [stdout]    |                       ^^^^^^ help: if this is intentional, prefix it with an underscore: `_ray_in`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hit_result`
[INFO] [stdout]   --> src/material/diffuse_light.rs:30:37
[INFO] [stdout]    |
[INFO] [stdout] 30 |     fn scatter(&self, ray_in: &Ray, hit_result: &HitResult) -> Option<Scatter> {
[INFO] [stdout]    |                                     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_hit_result`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/scene/scene_builder.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 40 |         _ => unimplemented!("Unsupported scene name!")
[INFO] [stdout]    |         ^ no value can reach this
[INFO] [stdout]    |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]   --> src/scene/scene_builder.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |         SceneName::RandomSpheres => random_spheres_scene(&settings.camera_settings),
[INFO] [stdout]    |         ------------------------ matches some of the same values
[INFO] [stdout] 34 |         SceneName::ThreeSpheres => three_spheres_scene(&settings.camera_settings),
[INFO] [stdout]    |         ----------------------- matches some of the same values
[INFO] [stdout] 35 |         SceneName::Globe => globe_scene(&settings.camera_settings),
[INFO] [stdout]    |         ---------------- matches some of the same values
[INFO] [stdout] 36 |         SceneName::LightsDemo => lights_demo_scene(&settings.camera_settings),
[INFO] [stdout]    |         --------------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 40 |         _ => unimplemented!("Unsupported scene name!")
[INFO] [stdout]    |         ^ ...and 3 other patterns collectively make this unreachable
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `point`
[INFO] [stdout]   --> src/texture/image.rs:23:31
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn sample(&self, uv: &Uv, point: &Point3f) -> ColorRgbF {
[INFO] [stdout]    |                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_point`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `uv`
[INFO] [stdout]   --> src/texture/noise.rs:11:22
[INFO] [stdout]    |
[INFO] [stdout] 11 |     fn sample(&self, uv: &Uv, point: &Point3f) -> ColorRgbF {
[INFO] [stdout]    |                      ^^ help: if this is intentional, prefix it with an underscore: `_uv`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/util/perlin.rs:57:13
[INFO] [stdout]    |
[INFO] [stdout] 57 |         for i in 0..depth {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ColorRgb8` is never constructed
[INFO] [stdout]  --> src/core/color.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct ColorRgb8 {
[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 `from_color_rgb_f` is never used
[INFO] [stdout]   --> src/core/color.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl ColorRgb8 {
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 14 |     pub fn from_color_rgb_f(color_rgb: ColorRgbF) -> ColorRgb8 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new_with_texture` is never used
[INFO] [stdout]   --> src/hittable/constant_medium.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl ConstantMedium {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 19 |     pub fn new_with_texture(boundary: Arc<dyn Hittable>, density: f32, texture: Arc<dyn Texture>) -> ConstantMedium {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `write_image_buffer_to_ppm` is never used
[INFO] [stdout]   --> src/image/image_writer.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl ImageFileWriter<'_> {
[INFO] [stdout]    | ------------------------ method in this implementation
[INFO] [stdout] 15 |     pub fn write_image_buffer_to_ppm(&self, image_buffer: &ImageBuffer, num_samples: usize) -> Result<(), Error> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new_with_texture` is never used
[INFO] [stdout]   --> src/material/isotropic.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl IsotropicMaterial {
[INFO] [stdout]    | ---------------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn new_with_texture(texture: Arc<dyn Texture>) -> IsotropicMaterial {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `aspect_ratio` and `look_direction` are never read
[INFO] [stdout]  --> src/scene/camera.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Camera {
[INFO] [stdout]   |            ------ fields in this struct
[INFO] [stdout] 6 |     aspect_ratio: f32,
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 9 |     look_direction: Vec3f,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Camera` 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: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/acceleration/bvh.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult> {
[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] 85 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult<'_>> {
[INFO] [stdout]    |                                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/hittable/hittable.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 32 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult>;
[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] 32 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult<'_>>;
[INFO] [stdout]    |                                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/hittable/hittable.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult> {
[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] 38 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult<'_>> {
[INFO] [stdout]    |                                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/hittable/box_hittable.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult> {
[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] 38 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult<'_>> {
[INFO] [stdout]    |                                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/hittable/constant_medium.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult> {
[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] 40 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult<'_>> {
[INFO] [stdout]    |                                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/hittable/rotate_y.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 60 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult> {
[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] 60 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult<'_>> {
[INFO] [stdout]    |                                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/hittable/sphere.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult> {
[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] 17 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult<'_>> {
[INFO] [stdout]    |                                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/hittable/translate.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 22 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult> {
[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] 22 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult<'_>> {
[INFO] [stdout]    |                                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/hittable/xy_rect.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult> {
[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] 34 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult<'_>> {
[INFO] [stdout]    |                                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/hittable/xz_rect.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 35 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult> {
[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] 35 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult<'_>> {
[INFO] [stdout]    |                                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/hittable/yz_rect.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 34 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult> {
[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] 34 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitResult<'_>> {
[INFO] [stdout]    |                                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 45.49s
[INFO] running `Command { std: "docker" "inspect" "9fa354cd5e8946fad397a2d90f183516563f023ed2b6cfb416a1d790cee99f89", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9fa354cd5e8946fad397a2d90f183516563f023ed2b6cfb416a1d790cee99f89", kill_on_drop: false }`
[INFO] [stdout] 9fa354cd5e8946fad397a2d90f183516563f023ed2b6cfb416a1d790cee99f89
