[INFO] cloning repository https://github.com/leoherbsthofer/rust_raytracer
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/leoherbsthofer/rust_raytracer" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fleoherbsthofer%2Frust_raytracer", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fleoherbsthofer%2Frust_raytracer'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 13d7f8bace0d1ac69a10ce4c262be75cd581efa6
[INFO] checking leoherbsthofer/rust_raytracer against try#09eeb2bacb9b40b2ed1d47f03177442c0632cda1 for pr-157710
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fleoherbsthofer%2Frust_raytracer" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/leoherbsthofer/rust_raytracer
[INFO] finished tweaking git repo https://github.com/leoherbsthofer/rust_raytracer
[INFO] tweaked toml for git repo https://github.com/leoherbsthofer/rust_raytracer written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/leoherbsthofer/rust_raytracer on toolchain 09eeb2bacb9b40b2ed1d47f03177442c0632cda1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+09eeb2bacb9b40b2ed1d47f03177442c0632cda1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/leoherbsthofer/rust_raytracer 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" "+09eeb2bacb9b40b2ed1d47f03177442c0632cda1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/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] ceb87562ae86fc8695793fab4a95f349c8052f1d28bb37448753d09cfb069dd1
[INFO] running `Command { std: "docker" "start" "ceb87562ae86fc8695793fab4a95f349c8052f1d28bb37448753d09cfb069dd1", 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" "ceb87562ae86fc8695793fab4a95f349c8052f1d28bb37448753d09cfb069dd1" "/opt/rustwide/cargo-home/bin/cargo" "+09eeb2bacb9b40b2ed1d47f03177442c0632cda1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "ceb87562ae86fc8695793fab4a95f349c8052f1d28bb37448753d09cfb069dd1", 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" "ceb87562ae86fc8695793fab4a95f349c8052f1d28bb37448753d09cfb069dd1" "/opt/rustwide/cargo-home/bin/cargo" "+09eeb2bacb9b40b2ed1d47f03177442c0632cda1" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling autocfg v1.0.0
[INFO] [stderr]    Compiling maybe-uninit v2.0.0
[INFO] [stderr]     Checking adler32 v1.0.4
[INFO] [stderr]    Compiling rayon-core v1.7.0
[INFO] [stderr]    Compiling cfg-if v0.1.10
[INFO] [stderr]    Compiling getrandom v0.1.14
[INFO] [stderr]    Compiling crc32fast v1.2.0
[INFO] [stderr]     Checking either v1.5.3
[INFO] [stderr]     Checking num_cpus v1.13.0
[INFO] [stderr]     Checking rand_os v0.1.3
[INFO] [stderr]    Compiling sdl2 v0.34.1
[INFO] [stderr]    Compiling cgmath v0.17.0
[INFO] [stderr]     Checking ppv-lite86 v0.2.6
[INFO] [stderr]     Checking gif v0.10.3
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking bytemuck v1.2.0
[INFO] [stderr]     Checking inflate v0.4.5
[INFO] [stderr]     Checking deflate v0.8.4
[INFO] [stderr]    Compiling sdl2-sys v0.34.0
[INFO] [stderr]     Checking miniz_oxide v0.3.6
[INFO] [stderr]    Compiling raytracer v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking colored v1.9.3
[INFO] [stderr]     Checking threadpool v1.8.0
[INFO] [stderr]     Checking dyn-clone v1.0.1
[INFO] [stderr]     Checking rand v0.6.5
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]    Compiling crossbeam-utils v0.7.2
[INFO] [stderr]    Compiling num-traits v0.2.11
[INFO] [stderr]    Compiling memoffset v0.5.4
[INFO] [stderr]    Compiling crossbeam-epoch v0.8.2
[INFO] [stderr]    Compiling num-integer v0.1.42
[INFO] [stderr]    Compiling num-iter v0.1.40
[INFO] [stderr]    Compiling num-rational v0.2.4
[INFO] [stderr]     Checking tiff v0.4.0
[INFO] [stderr]     Checking rand_chacha v0.2.2
[INFO] [stderr]     Checking rand v0.7.3
[INFO] [stderr]     Checking crossbeam-queue v0.2.1
[INFO] [stderr]     Checking png v0.16.3
[INFO] [stderr]     Checking crossbeam-deque v0.7.3
[INFO] [stderr]     Checking approx v0.3.2
[INFO] [stderr]     Checking rayon v1.3.0
[INFO] [stderr]     Checking jpeg-decoder v0.1.19
[INFO] [stderr]     Checking image v0.23.4
[INFO] [stdout] warning: unused import: `dyn_clone::DynClone`
[INFO] [stdout]  --> src/hitable.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use dyn_clone::DynClone;
[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: `Texture`
[INFO] [stdout]  --> src/sphere.rs:7:22
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::texture::{Texture, UVCoords};
[INFO] [stdout]   |                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `image::error::LimitErrorKind::DimensionError`
[INFO] [stdout]  --> src/dielectric.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use image::error::LimitErrorKind::DimensionError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::image_output::ImageOutput`
[INFO] [stdout]  --> src/render_engine_multithread.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::image_output::ImageOutput;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]  --> src/render_engine_multithread.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::thread;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::mpsc::Sender`
[INFO] [stdout]   --> src/render_engine_multithread.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::sync::mpsc::Sender;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::EventPump`
[INFO] [stdout]  --> src/sdl_preview/sdl_output.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use sdl2::EventPump;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Texture` and `WindowCanvas`
[INFO] [stdout]  --> src/sdl_preview/sdl_output.rs:4:20
[INFO] [stdout]   |
[INFO] [stdout] 4 | use sdl2::render::{WindowCanvas, Texture};
[INFO] [stdout]   |                    ^^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Point`
[INFO] [stdout]  --> src/sdl_preview/sdl_output.rs:5:18
[INFO] [stdout]   |
[INFO] [stdout] 5 | use sdl2::rect::{Point, Rect};
[INFO] [stdout]   |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::thread_rng`
[INFO] [stdout]   --> src/sdl_preview/sdl_output.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use rand::thread_rng;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/sdl_preview/sdl_output.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `max` and `min`
[INFO] [stdout]  --> src/AABB.rs:3:16
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::cmp::{min, max};
[INFO] [stdout]   |                ^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::image_output::ImageOutput`
[INFO] [stdout]   --> src/main.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use crate::image_output::ImageOutput;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::log::Category::Render`
[INFO] [stdout]   --> src/main.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 46 | use sdl2::log::Category::Render;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::bvh_node::BVHNode`
[INFO] [stdout]   --> src/main.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 48 | use crate::bvh_node::BVHNode;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `dyn_clone::DynClone`
[INFO] [stdout]  --> src/hitable.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use dyn_clone::DynClone;
[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: `Texture`
[INFO] [stdout]  --> src/sphere.rs:7:22
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::texture::{Texture, UVCoords};
[INFO] [stdout]   |                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `image::error::LimitErrorKind::DimensionError`
[INFO] [stdout]  --> src/dielectric.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use image::error::LimitErrorKind::DimensionError;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::image_output::ImageOutput`
[INFO] [stdout]  --> src/render_engine_multithread.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::image_output::ImageOutput;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]  --> src/render_engine_multithread.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::thread;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::mpsc::Sender`
[INFO] [stdout]   --> src/render_engine_multithread.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::sync::mpsc::Sender;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::EventPump`
[INFO] [stdout]  --> src/sdl_preview/sdl_output.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use sdl2::EventPump;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Texture` and `WindowCanvas`
[INFO] [stdout]  --> src/sdl_preview/sdl_output.rs:4:20
[INFO] [stdout]   |
[INFO] [stdout] 4 | use sdl2::render::{WindowCanvas, Texture};
[INFO] [stdout]   |                    ^^^^^^^^^^^^  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Point`
[INFO] [stdout]  --> src/sdl_preview/sdl_output.rs:5:18
[INFO] [stdout]   |
[INFO] [stdout] 5 | use sdl2::rect::{Point, Rect};
[INFO] [stdout]   |                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::thread_rng`
[INFO] [stdout]   --> src/sdl_preview/sdl_output.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use rand::thread_rng;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/sdl_preview/sdl_output.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `max` and `min`
[INFO] [stdout]  --> src/AABB.rs:3:16
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::cmp::{min, max};
[INFO] [stdout]   |                ^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::image_output::ImageOutput`
[INFO] [stdout]   --> src/main.rs:29:5
[INFO] [stdout]    |
[INFO] [stdout] 29 | use crate::image_output::ImageOutput;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::log::Category::Render`
[INFO] [stdout]   --> src/main.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 46 | use sdl2::log::Category::Render;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::bvh_node::BVHNode`
[INFO] [stdout]   --> src/main.rs:48:5
[INFO] [stdout]    |
[INFO] [stdout] 48 | use crate::bvh_node::BVHNode;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/image_output.rs:17:37
[INFO] [stdout]    |
[INFO] [stdout] 17 |     fn save (&mut self, path: &str, info: RenderInformation) {
[INFO] [stdout]    |                                     ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y`
[INFO] [stdout]   --> src/image_output.rs:28:27
[INFO] [stdout]    |
[INFO] [stdout] 28 |     fn set_row(&mut self, y: usize, c: Vec<Color>) {
[INFO] [stdout]    |                           ^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `c`
[INFO] [stdout]   --> src/image_output.rs:28:37
[INFO] [stdout]    |
[INFO] [stdout] 28 |     fn set_row(&mut self, y: usize, c: Vec<Color>) {
[INFO] [stdout]    |                                     ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/image_output.rs:65:13
[INFO] [stdout]    |
[INFO] [stdout] 65 |         for mut i in self.pixels.iter_mut() { //remap pixel between 0 and 1
[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: variable does not need to be mutable
[INFO] [stdout]   --> src/image_output.rs:66:17
[INFO] [stdout]    |
[INFO] [stdout] 66 |             for mut j in i.iter_mut() {
[INFO] [stdout]    |                 ----^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time0`
[INFO] [stdout]   --> src/sphere.rs:66:28
[INFO] [stdout]    |
[INFO] [stdout] 66 |     fn bounding_box(&self, time0: f64, time1: f64, output_box: &mut AABB) -> bool {
[INFO] [stdout]    |                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_time0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time1`
[INFO] [stdout]   --> src/sphere.rs:66:40
[INFO] [stdout]    |
[INFO] [stdout] 66 |     fn bounding_box(&self, time0: f64, time1: f64, output_box: &mut AABB) -> bool {
[INFO] [stdout]    |                                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_time1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/dielectric.rs:47:13
[INFO] [stdout]    |
[INFO] [stdout] 47 |         let mut reflect_prob: f64;
[INFO] [stdout]    |             ----^^^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/dielectric.rs:48:13
[INFO] [stdout]    |
[INFO] [stdout] 48 |         let mut cosine: f64;
[INFO] [stdout]    |             ----^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `outward_normal` is never read
[INFO] [stdout]   --> src/dielectric.rs:42:34
[INFO] [stdout]    |
[INFO] [stdout] 42 |         let mut outward_normal = Vector3::new(0.0, 0.0, 0.0);
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 54 |             outward_normal = rec.normal;
[INFO] [stdout]    |             --------------------------- `outward_normal` is overwritten here before the previous value is read
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]   --> src/render_engine_multithread.rs:76:25
[INFO] [stdout]    |
[INFO] [stdout] 76 |                     for s in 0..ns {
[INFO] [stdout]    |                         ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/render_engine_multithread.rs:114:17
[INFO] [stdout]     |
[INFO] [stdout] 114 |             let mut emissive = false;
[INFO] [stdout]     |                 ----^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/render_engine_multithread.rs:115:17
[INFO] [stdout]     |
[INFO] [stdout] 115 |             let mut emission = Vector3::new(0.0, 0.0, 0.0);
[INFO] [stdout]     |                 ----^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `emissive`
[INFO] [stdout]    --> src/render_engine_multithread.rs:114:17
[INFO] [stdout]     |
[INFO] [stdout] 114 |             let mut emissive = false;
[INFO] [stdout]     |                 ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_emissive`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `emission`
[INFO] [stdout]    --> src/render_engine_multithread.rs:115:17
[INFO] [stdout]     |
[INFO] [stdout] 115 |             let mut emission = Vector3::new(0.0, 0.0, 0.0);
[INFO] [stdout]     |                 ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_emission`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `path`
[INFO] [stdout]   --> src/sdl_preview/sdl_output.rs:25:24
[INFO] [stdout]    |
[INFO] [stdout] 25 |     fn save(&mut self, path: &str, info: RenderInformation) {
[INFO] [stdout]    |                        ^^^^ help: if this is intentional, prefix it with an underscore: `_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/sdl_preview/sdl_output.rs:25:36
[INFO] [stdout]    |
[INFO] [stdout] 25 |     fn save(&mut self, path: &str, info: RenderInformation) {
[INFO] [stdout]    |                                    ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pitch`
[INFO] [stdout]    --> src/sdl_preview/sdl_output.rs:139:61
[INFO] [stdout]     |
[INFO] [stdout] 139 |                 texture.with_lock(None, |buffer: &mut [u8], pitch: usize| {
[INFO] [stdout]     |                                                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_pitch`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y`
[INFO] [stdout]    --> src/sdl_preview/sdl_output.rs:165:13
[INFO] [stdout]     |
[INFO] [stdout] 165 |         for y in 0..height {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time0`
[INFO] [stdout]   --> src/bvh_node.rs:85:28
[INFO] [stdout]    |
[INFO] [stdout] 85 |     fn bounding_box(&self, time0: f64, time1: f64, output_box: &mut AABB) -> bool {
[INFO] [stdout]    |                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_time0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time1`
[INFO] [stdout]   --> src/bvh_node.rs:85:40
[INFO] [stdout]    |
[INFO] [stdout] 85 |     fn bounding_box(&self, time0: f64, time1: f64, output_box: &mut AABB) -> bool {
[INFO] [stdout]    |                                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_time1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `u`
[INFO] [stdout]  --> src/solid_color_texture.rs:9:21
[INFO] [stdout]   |
[INFO] [stdout] 9 |     fn value(&self, u: f64, v: f64, p: Vector3<f64>) -> Vector3<f64> {
[INFO] [stdout]   |                     ^ help: if this is intentional, prefix it with an underscore: `_u`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]  --> src/solid_color_texture.rs:9:29
[INFO] [stdout]   |
[INFO] [stdout] 9 |     fn value(&self, u: f64, v: f64, p: Vector3<f64>) -> Vector3<f64> {
[INFO] [stdout]   |                             ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]  --> src/solid_color_texture.rs:9:37
[INFO] [stdout]   |
[INFO] [stdout] 9 |     fn value(&self, u: f64, v: f64, p: Vector3<f64>) -> Vector3<f64> {
[INFO] [stdout]   |                                     ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> src/main.rs:52:9
[INFO] [stdout]    |
[INFO] [stdout] 52 |     let n = 500;
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/image_output.rs:17:37
[INFO] [stdout]    |
[INFO] [stdout] 17 |     fn save (&mut self, path: &str, info: RenderInformation) {
[INFO] [stdout]    |                                     ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y`
[INFO] [stdout]   --> src/image_output.rs:28:27
[INFO] [stdout]    |
[INFO] [stdout] 28 |     fn set_row(&mut self, y: usize, c: Vec<Color>) {
[INFO] [stdout]    |                           ^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_scene` is never used
[INFO] [stdout]   --> src/main.rs:51:4
[INFO] [stdout]    |
[INFO] [stdout] 51 | fn random_scene(scene: &mut Vec<Arc<dyn Hitable>>) {
[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: `c`
[INFO] [stdout]   --> src/image_output.rs:28:37
[INFO] [stdout]    |
[INFO] [stdout] 28 |     fn set_row(&mut self, y: usize, c: Vec<Color>) {
[INFO] [stdout]    |                                     ^ help: if this is intentional, prefix it with an underscore: `_c`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImageOutput` is never constructed
[INFO] [stdout]   --> src/image_output.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct ImageOutput {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `remap_pixel_range` are never used
[INFO] [stdout]   --> src/image_output.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl ImageOutput {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 38 |     pub fn new (width: u32, height: u32) -> ImageOutput {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn remap_pixel_range(&mut self, max_brightness: f64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_sdl_color` is never used
[INFO] [stdout]   --> src/color.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | impl Color {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub fn to_sdl_color(&self) -> sdl2::pixels::Color {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `duplicate` is never used
[INFO] [stdout]   --> src/scene.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Scene {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] 13 |     pub fn duplicate(&self) -> Scene {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `bounding_box` is never used
[INFO] [stdout]   --> src/hitable.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub trait Hitable: Send + Sync {
[INFO] [stdout]    |           ------- method in this trait
[INFO] [stdout] 41 |     fn hit(&self, r: &Ray, t_min: f64, t_max: f64, rec: &mut HitRecord) -> bool;
[INFO] [stdout] 42 |     fn bounding_box(&self, time0: f64, time1: f64, output_box: &mut AABB) -> bool;
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MovingSphere` is never constructed
[INFO] [stdout]  --> src/moving_sphere.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct MovingSphere {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `center` are never used
[INFO] [stdout]   --> src/moving_sphere.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl MovingSphere {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 18 |     pub fn new(center0: Vector3<f64>, center1: Vector3<f64>, t0: f64, t1: f64, radius: f64, material: Box<dyn Material>) -> MovingSp...
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     fn center(&self, time: f64) -> Vector3<f64>{
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `width` and `height` are never read
[INFO] [stdout]   --> src/sdl_preview/sdl_output.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct SDLOutput {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 17 |     pub width: u32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 18 |     pub height: u32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/image_output.rs:65:13
[INFO] [stdout]    |
[INFO] [stdout] 65 |         for mut i in self.pixels.iter_mut() { //remap pixel between 0 and 1
[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: fields `duration`, `avg_per_pixel`, and `samples` are never read
[INFO] [stdout]  --> src/render_information.rs:2:9
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct RenderInformation {
[INFO] [stdout]   |            ----------------- fields in this struct
[INFO] [stdout] 2 |     pub duration: u32,
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout] 3 |     pub avg_per_pixel: u32,
[INFO] [stdout]   |         ^^^^^^^^^^^^^
[INFO] [stdout] 4 |     pub samples: u32,
[INFO] [stdout]   |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AABB` is never constructed
[INFO] [stdout]  --> src/AABB.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct AABB {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `hit`, and `surrounding_box` are never used
[INFO] [stdout]   --> src/AABB.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl AABB {
[INFO] [stdout]    | --------- associated items in this implementation
[INFO] [stdout] 12 |     pub fn new(minimum: Vector3<f64>, maximum: Vector3<f64>) -> AABB {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub fn hit(&self, r: &Ray, t_min: f64, t_max: f64) -> bool {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn surrounding_box(box0: &AABB, box1: &AABB) -> AABB {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BVHNode` is never constructed
[INFO] [stdout]  --> src/bvh_node.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct BVHNode {
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `box_compare`, `box_x_compare`, `box_y_compare`, `box_z_compare`, and `new` are never used
[INFO] [stdout]   --> src/bvh_node.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl BVHNode {
[INFO] [stdout]    | ------------ associated functions in this implementation
[INFO] [stdout] 16 |     fn box_compare(a: &Arc<dyn Hitable>, b: &Arc<dyn Hitable>, axis: usize) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     fn box_x_compare(a: &Arc<dyn Hitable>, b: &Arc<dyn Hitable>) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     fn box_y_compare(a: &Arc<dyn Hitable>, b: &Arc<dyn Hitable>) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     fn box_z_compare(a: &Arc<dyn Hitable>, b: &Arc<dyn Hitable>) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn new(src_objects: Vec<Arc<dyn Hitable>>, start: usize, end: usize, time0: f64, time1: f64) -> BVHNode {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: module `AABB` should have a snake case name
[INFO] [stdout]   --> src/main.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | mod AABB;
[INFO] [stdout]    |     ^^^^ help: convert the identifier to snake case: `aabb`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/image_output.rs:66:17
[INFO] [stdout]    |
[INFO] [stdout] 66 |             for mut j in i.iter_mut() {
[INFO] [stdout]    |                 ----^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `RGB` should have a snake case name
[INFO] [stdout]   --> src/color.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout] 71 |     pub fn RGB(r: u8, g: u8, b: u8) -> Color {
[INFO] [stdout]    |            ^^^ help: convert the identifier to snake case: `rgb`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `newTime` should have a snake case name
[INFO] [stdout]   --> src/ray.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn newTime(origin: Vector3<f64>, direction: Vector3<f64>, time: f64) -> Ray {
[INFO] [stdout]    |            ^^^^^^^ help: convert the identifier to snake case: `new_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time0`
[INFO] [stdout]   --> src/sphere.rs:66:28
[INFO] [stdout]    |
[INFO] [stdout] 66 |     fn bounding_box(&self, time0: f64, time1: f64, output_box: &mut AABB) -> bool {
[INFO] [stdout]    |                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_time0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time1`
[INFO] [stdout]   --> src/sphere.rs:66:40
[INFO] [stdout]    |
[INFO] [stdout] 66 |     fn bounding_box(&self, time0: f64, time1: f64, output_box: &mut AABB) -> bool {
[INFO] [stdout]    |                                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_time1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/dielectric.rs:47:13
[INFO] [stdout]    |
[INFO] [stdout] 47 |         let mut reflect_prob: f64;
[INFO] [stdout]    |             ----^^^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/dielectric.rs:48:13
[INFO] [stdout]    |
[INFO] [stdout] 48 |         let mut cosine: f64;
[INFO] [stdout]    |             ----^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `outward_normal` is never read
[INFO] [stdout]   --> src/dielectric.rs:42:34
[INFO] [stdout]    |
[INFO] [stdout] 42 |         let mut outward_normal = Vector3::new(0.0, 0.0, 0.0);
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 54 |             outward_normal = rec.normal;
[INFO] [stdout]    |             --------------------------- `outward_normal` is overwritten here before the previous value is read
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]   --> src/render_engine_multithread.rs:76:25
[INFO] [stdout]    |
[INFO] [stdout] 76 |                     for s in 0..ns {
[INFO] [stdout]    |                         ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/render_engine_multithread.rs:114:17
[INFO] [stdout]     |
[INFO] [stdout] 114 |             let mut emissive = false;
[INFO] [stdout]     |                 ----^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/render_engine_multithread.rs:115:17
[INFO] [stdout]     |
[INFO] [stdout] 115 |             let mut emission = Vector3::new(0.0, 0.0, 0.0);
[INFO] [stdout]     |                 ----^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `emissive`
[INFO] [stdout]    --> src/render_engine_multithread.rs:114:17
[INFO] [stdout]     |
[INFO] [stdout] 114 |             let mut emissive = false;
[INFO] [stdout]     |                 ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_emissive`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `emission`
[INFO] [stdout]    --> src/render_engine_multithread.rs:115:17
[INFO] [stdout]     |
[INFO] [stdout] 115 |             let mut emission = Vector3::new(0.0, 0.0, 0.0);
[INFO] [stdout]     |                 ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_emission`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `path`
[INFO] [stdout]   --> src/sdl_preview/sdl_output.rs:25:24
[INFO] [stdout]    |
[INFO] [stdout] 25 |     fn save(&mut self, path: &str, info: RenderInformation) {
[INFO] [stdout]    |                        ^^^^ help: if this is intentional, prefix it with an underscore: `_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]   --> src/sdl_preview/sdl_output.rs:25:36
[INFO] [stdout]    |
[INFO] [stdout] 25 |     fn save(&mut self, path: &str, info: RenderInformation) {
[INFO] [stdout]    |                                    ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/render_engine_multithread.rs:86:17
[INFO] [stdout]    |
[INFO] [stdout] 86 | /                 tx.send(RenderThreadResult {
[INFO] [stdout] 87 | |                     row: j,
[INFO] [stdout] 88 | |                     pixel: row,
[INFO] [stdout] 89 | |                 });
[INFO] [stdout]    | |__________________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 86 |                 let _ = tx.send(RenderThreadResult {
[INFO] [stdout]    |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/sdl_preview/sdl_output.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 |         self.render_end_window();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 26 |         let _ = self.render_end_window();
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/sdl_preview/sdl_output.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 |         self.sdl_thread.take().unwrap().join();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 27 |         let _ = self.sdl_thread.take().unwrap().join();
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/sdl_preview/sdl_output.rs:45:9
[INFO] [stdout]    |
[INFO] [stdout] 45 | /         self.send_vec.pop().unwrap().send(SetPixelResultRow {
[INFO] [stdout] 46 | |             y,
[INFO] [stdout] 47 | |             c,
[INFO] [stdout] 48 | |             is_real_value: true,
[INFO] [stdout] 49 | |         });
[INFO] [stdout]    | |__________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 45 |         let _ = self.send_vec.pop().unwrap().send(SetPixelResultRow {
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/sdl_preview/sdl_output.rs:169:13
[INFO] [stdout]     |
[INFO] [stdout] 169 |             SDLOutput::start_sdl_window(width, height, rx);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 169 |             let _ = SDLOutput::start_sdl_window(width, height, rx);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `pitch`
[INFO] [stdout]    --> src/sdl_preview/sdl_output.rs:139:61
[INFO] [stdout]     |
[INFO] [stdout] 139 |                 texture.with_lock(None, |buffer: &mut [u8], pitch: usize| {
[INFO] [stdout]     |                                                             ^^^^^ help: if this is intentional, prefix it with an underscore: `_pitch`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y`
[INFO] [stdout]    --> src/sdl_preview/sdl_output.rs:165:13
[INFO] [stdout]     |
[INFO] [stdout] 165 |         for y in 0..height {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time0`
[INFO] [stdout]   --> src/bvh_node.rs:85:28
[INFO] [stdout]    |
[INFO] [stdout] 85 |     fn bounding_box(&self, time0: f64, time1: f64, output_box: &mut AABB) -> bool {
[INFO] [stdout]    |                            ^^^^^ help: if this is intentional, prefix it with an underscore: `_time0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time1`
[INFO] [stdout]   --> src/bvh_node.rs:85:40
[INFO] [stdout]    |
[INFO] [stdout] 85 |     fn bounding_box(&self, time0: f64, time1: f64, output_box: &mut AABB) -> bool {
[INFO] [stdout]    |                                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_time1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `u`
[INFO] [stdout]  --> src/solid_color_texture.rs:9:21
[INFO] [stdout]   |
[INFO] [stdout] 9 |     fn value(&self, u: f64, v: f64, p: Vector3<f64>) -> Vector3<f64> {
[INFO] [stdout]   |                     ^ help: if this is intentional, prefix it with an underscore: `_u`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]  --> src/solid_color_texture.rs:9:29
[INFO] [stdout]   |
[INFO] [stdout] 9 |     fn value(&self, u: f64, v: f64, p: Vector3<f64>) -> Vector3<f64> {
[INFO] [stdout]   |                             ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]  --> src/solid_color_texture.rs:9:37
[INFO] [stdout]   |
[INFO] [stdout] 9 |     fn value(&self, u: f64, v: f64, p: Vector3<f64>) -> Vector3<f64> {
[INFO] [stdout]   |                                     ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> src/main.rs:52:9
[INFO] [stdout]    |
[INFO] [stdout] 52 |     let n = 500;
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_scene` is never used
[INFO] [stdout]   --> src/main.rs:51:4
[INFO] [stdout]    |
[INFO] [stdout] 51 | fn random_scene(scene: &mut Vec<Arc<dyn Hitable>>) {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImageOutput` is never constructed
[INFO] [stdout]   --> src/image_output.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct ImageOutput {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `remap_pixel_range` are never used
[INFO] [stdout]   --> src/image_output.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 37 | impl ImageOutput {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 38 |     pub fn new (width: u32, height: u32) -> ImageOutput {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     pub fn remap_pixel_range(&mut self, max_brightness: f64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_sdl_color` is never used
[INFO] [stdout]   --> src/color.rs:79:12
[INFO] [stdout]    |
[INFO] [stdout] 62 | impl Color {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 79 |     pub fn to_sdl_color(&self) -> sdl2::pixels::Color {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `duplicate` is never used
[INFO] [stdout]   --> src/scene.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Scene {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] 13 |     pub fn duplicate(&self) -> Scene {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `bounding_box` is never used
[INFO] [stdout]   --> src/hitable.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub trait Hitable: Send + Sync {
[INFO] [stdout]    |           ------- method in this trait
[INFO] [stdout] 41 |     fn hit(&self, r: &Ray, t_min: f64, t_max: f64, rec: &mut HitRecord) -> bool;
[INFO] [stdout] 42 |     fn bounding_box(&self, time0: f64, time1: f64, output_box: &mut AABB) -> bool;
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MovingSphere` is never constructed
[INFO] [stdout]  --> src/moving_sphere.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct MovingSphere {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `center` are never used
[INFO] [stdout]   --> src/moving_sphere.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl MovingSphere {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 18 |     pub fn new(center0: Vector3<f64>, center1: Vector3<f64>, t0: f64, t1: f64, radius: f64, material: Box<dyn Material>) -> MovingSp...
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     fn center(&self, time: f64) -> Vector3<f64>{
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `width` and `height` are never read
[INFO] [stdout]   --> src/sdl_preview/sdl_output.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct SDLOutput {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] 17 |     pub width: u32,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 18 |     pub height: u32,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `duration`, `avg_per_pixel`, and `samples` are never read
[INFO] [stdout]  --> src/render_information.rs:2:9
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct RenderInformation {
[INFO] [stdout]   |            ----------------- fields in this struct
[INFO] [stdout] 2 |     pub duration: u32,
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout] 3 |     pub avg_per_pixel: u32,
[INFO] [stdout]   |         ^^^^^^^^^^^^^
[INFO] [stdout] 4 |     pub samples: u32,
[INFO] [stdout]   |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AABB` is never constructed
[INFO] [stdout]  --> src/AABB.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct AABB {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `hit`, and `surrounding_box` are never used
[INFO] [stdout]   --> src/AABB.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl AABB {
[INFO] [stdout]    | --------- associated items in this implementation
[INFO] [stdout] 12 |     pub fn new(minimum: Vector3<f64>, maximum: Vector3<f64>) -> AABB {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub fn hit(&self, r: &Ray, t_min: f64, t_max: f64) -> bool {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub fn surrounding_box(box0: &AABB, box1: &AABB) -> AABB {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BVHNode` is never constructed
[INFO] [stdout]  --> src/bvh_node.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct BVHNode {
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `box_compare`, `box_x_compare`, `box_y_compare`, `box_z_compare`, and `new` are never used
[INFO] [stdout]   --> src/bvh_node.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl BVHNode {
[INFO] [stdout]    | ------------ associated functions in this implementation
[INFO] [stdout] 16 |     fn box_compare(a: &Arc<dyn Hitable>, b: &Arc<dyn Hitable>, axis: usize) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     fn box_x_compare(a: &Arc<dyn Hitable>, b: &Arc<dyn Hitable>) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     fn box_y_compare(a: &Arc<dyn Hitable>, b: &Arc<dyn Hitable>) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     fn box_z_compare(a: &Arc<dyn Hitable>, b: &Arc<dyn Hitable>) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn new(src_objects: Vec<Arc<dyn Hitable>>, start: usize, end: usize, time0: f64, time1: f64) -> BVHNode {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: module `AABB` should have a snake case name
[INFO] [stdout]   --> src/main.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | mod AABB;
[INFO] [stdout]    |     ^^^^ help: convert the identifier to snake case: `aabb`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `RGB` should have a snake case name
[INFO] [stdout]   --> src/color.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout] 71 |     pub fn RGB(r: u8, g: u8, b: u8) -> Color {
[INFO] [stdout]    |            ^^^ help: convert the identifier to snake case: `rgb`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `newTime` should have a snake case name
[INFO] [stdout]   --> src/ray.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn newTime(origin: Vector3<f64>, direction: Vector3<f64>, time: f64) -> Ray {
[INFO] [stdout]    |            ^^^^^^^ help: convert the identifier to snake case: `new_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/render_engine_multithread.rs:86:17
[INFO] [stdout]    |
[INFO] [stdout] 86 | /                 tx.send(RenderThreadResult {
[INFO] [stdout] 87 | |                     row: j,
[INFO] [stdout] 88 | |                     pixel: row,
[INFO] [stdout] 89 | |                 });
[INFO] [stdout]    | |__________________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 86 |                 let _ = tx.send(RenderThreadResult {
[INFO] [stdout]    |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/sdl_preview/sdl_output.rs:26:9
[INFO] [stdout]    |
[INFO] [stdout] 26 |         self.render_end_window();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 26 |         let _ = self.render_end_window();
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/sdl_preview/sdl_output.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 |         self.sdl_thread.take().unwrap().join();
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 27 |         let _ = self.sdl_thread.take().unwrap().join();
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/sdl_preview/sdl_output.rs:45:9
[INFO] [stdout]    |
[INFO] [stdout] 45 | /         self.send_vec.pop().unwrap().send(SetPixelResultRow {
[INFO] [stdout] 46 | |             y,
[INFO] [stdout] 47 | |             c,
[INFO] [stdout] 48 | |             is_real_value: true,
[INFO] [stdout] 49 | |         });
[INFO] [stdout]    | |__________^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 45 |         let _ = self.send_vec.pop().unwrap().send(SetPixelResultRow {
[INFO] [stdout]    |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/sdl_preview/sdl_output.rs:169:13
[INFO] [stdout]     |
[INFO] [stdout] 169 |             SDLOutput::start_sdl_window(width, height, rx);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 169 |             let _ = SDLOutput::start_sdl_window(width, height, rx);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 11.00s
[INFO] running `Command { std: "docker" "inspect" "ceb87562ae86fc8695793fab4a95f349c8052f1d28bb37448753d09cfb069dd1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ceb87562ae86fc8695793fab4a95f349c8052f1d28bb37448753d09cfb069dd1", kill_on_drop: false }`
[INFO] [stdout] ceb87562ae86fc8695793fab4a95f349c8052f1d28bb37448753d09cfb069dd1
