[INFO] cloning repository https://github.com/arora-aditya/just-another-ray-tracer
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/arora-aditya/just-another-ray-tracer" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Farora-aditya%2Fjust-another-ray-tracer", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Farora-aditya%2Fjust-another-ray-tracer'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 3e2d170c47330f795ca19a1109c4a7e6eb8118e7
[INFO] checking arora-aditya/just-another-ray-tracer/3e2d170c47330f795ca19a1109c4a7e6eb8118e7 against master#f28ac764c36004fa6a6e098d15b4016a838c13c6 for pr-158320
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Farora-aditya%2Fjust-another-ray-tracer" "/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/arora-aditya/just-another-ray-tracer
[INFO] finished tweaking git repo https://github.com/arora-aditya/just-another-ray-tracer
[INFO] tweaked toml for git repo https://github.com/arora-aditya/just-another-ray-tracer written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/arora-aditya/just-another-ray-tracer on toolchain f28ac764c36004fa6a6e098d15b4016a838c13c6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+f28ac764c36004fa6a6e098d15b4016a838c13c6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/arora-aditya/just-another-ray-tracer 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" "+f28ac764c36004fa6a6e098d15b4016a838c13c6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded hermit-abi v0.1.3
[INFO] [stderr]   Downloaded num_cpus v1.11.1
[INFO] [stderr]   Downloaded rayon v1.2.1
[INFO] [stderr]   Downloaded scopeguard v1.0.0
[INFO] [stderr]   Downloaded crossbeam-queue v0.2.0
[INFO] [stderr]   Downloaded memoffset v0.5.3
[INFO] [stderr]   Downloaded getrandom v0.1.12
[INFO] [stderr]   Downloaded gif v0.11.2
[INFO] [stderr]   Downloaded bytemuck v1.5.1
[INFO] [stderr]   Downloaded crossbeam-utils v0.7.0
[INFO] [stderr]   Downloaded crossbeam-deque v0.7.2
[INFO] [stderr]   Downloaded crossbeam-epoch v0.8.0
[INFO] [stderr]   Downloaded weezl v0.1.5
[INFO] [stderr]   Downloaded rayon-core v1.6.1
[INFO] [stderr]   Downloaded wasi v0.7.0
[INFO] [stderr]   Downloaded rand v0.7.2
[INFO] [stderr]   Downloaded libc v0.2.62
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 0900cd1b8bd7c274d087fa7c38781e4fabf3d78fe696c3732055e553f1d8fb4a
[INFO] running `Command { std: "docker" "start" "0900cd1b8bd7c274d087fa7c38781e4fabf3d78fe696c3732055e553f1d8fb4a", 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" "0900cd1b8bd7c274d087fa7c38781e4fabf3d78fe696c3732055e553f1d8fb4a" "/opt/rustwide/cargo-home/bin/cargo" "+f28ac764c36004fa6a6e098d15b4016a838c13c6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "0900cd1b8bd7c274d087fa7c38781e4fabf3d78fe696c3732055e553f1d8fb4a", 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" "0900cd1b8bd7c274d087fa7c38781e4fabf3d78fe696c3732055e553f1d8fb4a" "/opt/rustwide/cargo-home/bin/cargo" "+f28ac764c36004fa6a6e098d15b4016a838c13c6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling autocfg v0.1.7
[INFO] [stderr]    Compiling libc v0.2.62
[INFO] [stderr]     Checking scopeguard v1.0.0
[INFO] [stderr]    Compiling num-traits v0.2.14
[INFO] [stderr]    Compiling rayon-core v1.6.1
[INFO] [stderr]    Compiling num-integer v0.1.44
[INFO] [stderr]    Compiling getrandom v0.1.12
[INFO] [stderr]    Compiling memoffset v0.5.3
[INFO] [stderr]    Compiling miniz_oxide v0.4.4
[INFO] [stderr]    Compiling crc32fast v1.2.1
[INFO] [stderr]     Checking either v1.5.3
[INFO] [stderr]    Compiling num-rational v0.3.2
[INFO] [stderr]    Compiling num-iter v0.1.42
[INFO] [stderr]     Checking byteorder v1.4.3
[INFO] [stderr]     Checking ppv-lite86 v0.2.5
[INFO] [stderr]     Checking weezl v0.1.5
[INFO] [stderr]    Compiling crossbeam-utils v0.7.0
[INFO] [stderr]    Compiling crossbeam-epoch v0.8.0
[INFO] [stderr]     Checking deflate v0.8.6
[INFO] [stderr]     Checking c2-chacha v0.2.2
[INFO] [stderr]     Checking num_cpus v1.11.1
[INFO] [stderr]     Checking crossbeam-queue v0.2.0
[INFO] [stderr]     Checking miniz_oxide v0.3.7
[INFO] [stderr]    Compiling libm v0.2.1
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]     Checking gif v0.11.2
[INFO] [stderr]     Checking rand_chacha v0.2.1
[INFO] [stderr]     Checking bytemuck v1.5.1
[INFO] [stderr]     Checking scoped_threadpool v0.1.9
[INFO] [stderr]     Checking crossbeam-deque v0.7.2
[INFO] [stderr]     Checking rand v0.7.2
[INFO] [stderr]     Checking png v0.16.8
[INFO] [stderr]     Checking rayon v1.2.1
[INFO] [stderr]     Checking jpeg-decoder v0.1.22
[INFO] [stderr]     Checking tiff v0.6.1
[INFO] [stderr]     Checking image v0.23.14
[INFO] [stderr]     Checking ray-tracing-in-a-weekend v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/render/mod.rs:7:26
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::tracer::ray::{self, Ray};
[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: `crate::material`
[INFO] [stdout]   --> src/render/mod.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::material;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SphereThing`
[INFO] [stdout]   --> src/render/mod.rs:16:52
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::objects::sphere::{Sphere, MovingSphere, SphereThing};
[INFO] [stdout]    |                                                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]   --> src/render/mod.rs:18:29
[INFO] [stdout]    |
[INFO] [stdout] 18 | use crate::camera::camera::{self, Camera};
[INFO] [stdout]    |                             ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::textures::texture::Texture`
[INFO] [stdout]   --> src/render/mod.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::textures::texture::Texture;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/render/mod.rs:40:16
[INFO] [stdout]    |
[INFO] [stdout] 40 |             if ((center-Vec3{e: [4.0,0.2,0.0]}).length() > 0.9) {
[INFO] [stdout]    |                ^                                              ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 40 -             if ((center-Vec3{e: [4.0,0.2,0.0]}).length() > 0.9) {
[INFO] [stdout] 40 +             if (center-Vec3{e: [4.0,0.2,0.0]}).length() > 0.9  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Random`
[INFO] [stdout]   --> src/tracer/vec3.rs:13:26
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::utils::{self, Random};
[INFO] [stdout]    |                          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]   --> src/tracer/vec3.rs:88:9
[INFO] [stdout]    |
[INFO] [stdout] 88 |         (self.e[0]*self.e[0] + self.e[1]*self.e[1] + self.e[2]*self.e[2])
[INFO] [stdout]    |         ^                                                               ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 88 -         (self.e[0]*self.e[0] + self.e[1]*self.e[1] + self.e[2]*self.e[2])
[INFO] [stdout] 88 +         self.e[0]*self.e[0] + self.e[1]*self.e[1] + self.e[2]*self.e[2] 
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MulAssign`
[INFO] [stdout]  --> src/tracer/color.rs:1:48
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::ops::{Add, AddAssign, DivAssign, Mul, MulAssign};
[INFO] [stdout]   |                                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::borrow::Borrow`
[INFO] [stdout]  --> src/objects/hittable_list.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use core::borrow::Borrow;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/objects/hittable_list.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 |         if (self.hitables.is_empty()){
[INFO] [stdout]    |            ^                        ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 27 -         if (self.hitables.is_empty()){
[INFO] [stdout] 27 +         if self.hitables.is_empty() {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::borrow::Borrow`
[INFO] [stdout]  --> src/objects/aabb.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use core::borrow::Borrow;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::objects::hittable::Hittable`
[INFO] [stdout]  --> src/objects/aabb.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::objects::hittable::Hittable;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::objects::hittable::HitRecord`
[INFO] [stdout]  --> src/objects/aabb.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::objects::hittable::HitRecord;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::material::metal::MetalMaterial`
[INFO] [stdout]  --> src/objects/aabb.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::material::metal::MetalMaterial;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/objects/aabb.rs:39:16
[INFO] [stdout]    |
[INFO] [stdout] 39 |             if (inv_d < 0.0){
[INFO] [stdout]    |                ^           ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 39 -             if (inv_d < 0.0){
[INFO] [stdout] 39 +             if inv_d < 0.0 {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/objects/aabb.rs:42:29
[INFO] [stdout]    |
[INFO] [stdout] 42 |             let t_min2 = if (t0 > t_min) { t0 } else { t_min };
[INFO] [stdout]    |                             ^          ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 42 -             let t_min2 = if (t0 > t_min) { t0 } else { t_min };
[INFO] [stdout] 42 +             let t_min2 = if t0 > t_min  { t0 } else { t_min };
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/objects/aabb.rs:43:29
[INFO] [stdout]    |
[INFO] [stdout] 43 |             let t_max2 = if (t1 < t_max) { t1 } else { t_max };
[INFO] [stdout]    |                             ^          ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 43 -             let t_max2 = if (t1 < t_max) { t1 } else { t_max };
[INFO] [stdout] 43 +             let t_max2 = if t1 < t_max  { t1 } else { t_max };
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/objects/aabb.rs:44:16
[INFO] [stdout]    |
[INFO] [stdout] 44 |             if (t_max2 <= t_min2){
[INFO] [stdout]    |                ^                ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 44 -             if (t_max2 <= t_min2){
[INFO] [stdout] 44 +             if t_max2 <= t_min2 {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::tracer::vec3`
[INFO] [stdout]  --> src/objects/bvh_node.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::tracer::vec3;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Vec3` and `self`
[INFO] [stdout]  --> src/material/base.rs:4:27
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::tracer::vec3::{self, Vec3};
[INFO] [stdout]   |                           ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/material/base.rs:5:20
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::utils::{self, Random};
[INFO] [stdout]   |                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: patterns aren't allowed in functions without bodies
[INFO] [stdout]   --> src/material/base.rs:13:23
[INFO] [stdout]    |
[INFO] [stdout] 13 |     fn scatter(&self, mut random: &mut Random, r_in: Ray, hit_record: HitRecord) -> Option<ScatterRecord>;
[INFO] [stdout]    |                       ^^^^^^^^^^ help: remove `mut` from the parameter: `random`
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #35203 <https://github.com/rust-lang/rust/issues/35203>
[INFO] [stdout]    = note: `#[deny(patterns_in_fns_without_body)]` (part of `#[deny(future_incompatible)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/material/dielectric.rs:7:20
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::utils::{self, Random};
[INFO] [stdout]   |                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::textures::perlin::Perlin`
[INFO] [stdout]  --> src/textures/image.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::textures::perlin::Perlin;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/sphere.rs:14:23
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub material: Box<Material>,
[INFO] [stdout]    |                       ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub material: Box<dyn Material>,
[INFO] [stdout]    |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/sphere.rs:74:23
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub material: Box<Material>,
[INFO] [stdout]    |                       ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub material: Box<dyn Material>,
[INFO] [stdout]    |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/sphere.rs:19:57
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new(center: Vec3, radius: f32, material: Box<Material>) -> Sphere{
[INFO] [stdout]    |                                                         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new(center: Vec3, radius: f32, material: Box<dyn Material>) -> Sphere{
[INFO] [stdout]    |                                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> src/render/mod.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 |     let n: i32 = 500;
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/render/mod.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 |     let i: i32 = 1;
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/render/mod.rs:189:9
[INFO] [stdout]     |
[INFO] [stdout] 189 |     let mut nx: i32 = 200;
[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] [stderr] error: could not compile `ray-tracing-in-a-weekend` (bin "ray-tracing-in-a-weekend") due to 1 previous error; 77 warnings emitted
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/render/mod.rs:190:9
[INFO] [stdout]     |
[INFO] [stdout] 190 |     let mut ny: i32 = 100;
[INFO] [stdout]     |         ----^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/render/mod.rs:191:9
[INFO] [stdout]     |
[INFO] [stdout] 191 |     let mut ns: i32;
[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/mod.rs:192:9
[INFO] [stdout]     |
[INFO] [stdout] 192 |     let mut vfov: f32;
[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/mod.rs:194:9
[INFO] [stdout]     |
[INFO] [stdout] 194 |     let mut lookfrom: Vec3;
[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/mod.rs:195:9
[INFO] [stdout]     |
[INFO] [stdout] 195 |     let mut lookat: Vec3;
[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/mod.rs:196:9
[INFO] [stdout]     |
[INFO] [stdout] 196 |     let mut dist_to_focus: f32;
[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/mod.rs:198:9
[INFO] [stdout]     |
[INFO] [stdout] 198 |     let mut background: Vec3;
[INFO] [stdout]     |         ----^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `aperture`
[INFO] [stdout]    --> src/render/mod.rs:193:9
[INFO] [stdout]     |
[INFO] [stdout] 193 |     let mut aperture: f32;
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_aperture`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `r`
[INFO] [stdout]    --> src/render/mod.rs:202:9
[INFO] [stdout]     |
[INFO] [stdout] 202 |     let r: f32 = (std::f32::consts::PI/4.0).cos();
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_r`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> src/render/mod.rs:292:17
[INFO] [stdout]     |
[INFO] [stdout] 292 |             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: value assigned to `aperture` is never read
[INFO] [stdout]    --> src/render/mod.rs:211:13
[INFO] [stdout]     |
[INFO] [stdout] 211 |             aperture = 0.0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 216 |             aperture = 0.1;
[INFO] [stdout]     |             -------------- `aperture` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `aperture` is never read
[INFO] [stdout]    --> src/render/mod.rs:222:13
[INFO] [stdout]     |
[INFO] [stdout] 222 |             aperture = 0.0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 227 |             aperture = 0.1;
[INFO] [stdout]     |             -------------- `aperture` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `aperture` is never read
[INFO] [stdout]    --> src/render/mod.rs:233:13
[INFO] [stdout]     |
[INFO] [stdout] 233 |             aperture = 0.0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 238 |             aperture = 0.1;
[INFO] [stdout]     |             -------------- `aperture` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `aperture` is never read
[INFO] [stdout]    --> src/render/mod.rs:244:13
[INFO] [stdout]     |
[INFO] [stdout] 244 |             aperture = 0.0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 249 |             aperture = 0.1;
[INFO] [stdout]     |             -------------- `aperture` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `aperture` is never read
[INFO] [stdout]    --> src/render/mod.rs:255:13
[INFO] [stdout]     |
[INFO] [stdout] 255 |             aperture = 0.0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 260 |             aperture = 0.1;
[INFO] [stdout]     |             -------------- `aperture` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `aperture` is never read
[INFO] [stdout]    --> src/render/mod.rs:266:13
[INFO] [stdout]     |
[INFO] [stdout] 266 |             aperture = 0.0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 271 |             aperture = 0.1;
[INFO] [stdout]     |             -------------- `aperture` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/objects/hittable_list.rs:31:13
[INFO] [stdout]    |
[INFO] [stdout] 31 |         let mut first_box: bool = true;
[INFO] [stdout]    |             ----^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `first_box`
[INFO] [stdout]   --> src/objects/hittable_list.rs:31:13
[INFO] [stdout]    |
[INFO] [stdout] 31 |         let mut first_box: bool = true;
[INFO] [stdout]    |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_first_box`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time0`
[INFO] [stdout]   --> src/objects/sphere.rs:64:28
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn bounding_box(&self, time0: f32, time1: f32) -> Option<AABB> {
[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/objects/sphere.rs:64:40
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn bounding_box(&self, time0: f32, time1: f32) -> Option<AABB> {
[INFO] [stdout]    |                                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_time1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time0`
[INFO] [stdout]    --> src/objects/bvh_node.rs:115:28
[INFO] [stdout]     |
[INFO] [stdout] 115 |     fn bounding_box(&self, time0: f32, time1: f32) -> Option<AABB> {
[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/objects/bvh_node.rs:115:40
[INFO] [stdout]     |
[INFO] [stdout] 115 |     fn bounding_box(&self, time0: f32, time1: f32) -> Option<AABB> {
[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/material/metal.rs:25:23
[INFO] [stdout]    |
[INFO] [stdout] 25 |     fn scatter(&self, mut random: &mut Random, r_in: Ray, hit_record: HitRecord) -> Option<ScatterRecord> {
[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/material/dielectric.rs:38:23
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn scatter(&self, mut random: &mut Random, r_in: Ray, hit_record: HitRecord) -> Option<ScatterRecord> {        
[INFO] [stdout]    |                       ----^^^^^^
[INFO] [stdout]    |                       |
[INFO] [stdout]    |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `u`
[INFO] [stdout]   --> src/textures/solid_color.rs:18:21
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn value(&self, u: f32, v: f32, p: &Vec3) -> Color3 {
[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/textures/solid_color.rs:18:29
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn value(&self, u: f32, v: f32, p: &Vec3) -> Color3 {
[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/textures/solid_color.rs:18:37
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn value(&self, u: f32, v: f32, p: &Vec3) -> Color3 {
[INFO] [stdout]    |                                     ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_in_unit_sphere` is never used
[INFO] [stdout]    --> src/render/mod.rs:156:12
[INFO] [stdout]     |
[INFO] [stdout] 156 |     pub fn random_in_unit_sphere(random: &mut utils::Random) -> Vec3 {
[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 `new` is never used
[INFO] [stdout]   --> src/tracer/ray.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Ray {
[INFO] [stdout]    | -------- associated function in this implementation
[INFO] [stdout] 13 |     pub fn new(origin: Vec3, dir: Vec3, time: f32) -> Ray {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `zero` is never used
[INFO] [stdout]   --> src/objects/hittable.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl<'a> HitRecord<'a> {
[INFO] [stdout]    | ---------------------- method in this implementation
[INFO] [stdout] 17 |     pub fn zero(&mut self) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `bounding_box` is never used
[INFO] [stdout]   --> src/objects/hittable.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub trait Hittable  {
[INFO] [stdout]    |           -------- method in this trait
[INFO] [stdout] 27 |     fn hit(&self, r: &ray::Ray, t_min: f32, t_max: f32) -> Option<HitRecord>;
[INFO] [stdout] 28 |     fn bounding_box(&self, time0: f32, time1: f32) -> Option<aabb::AABB>;
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `bbox` is never read
[INFO] [stdout]   --> src/objects/sphere.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct Sphere {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 15 |     bbox: AABB,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `SphereThing` is never used
[INFO] [stdout]    --> src/objects/sphere.rs:127:10
[INFO] [stdout]     |
[INFO] [stdout] 127 | pub enum SphereThing {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `minimum` and `maximum` are never read
[INFO] [stdout]   --> src/objects/aabb.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct AABB {
[INFO] [stdout]    |            ---- fields in this struct
[INFO] [stdout] 13 |     pub minimum: Vec3,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 14 |     pub maximum: Vec3,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AABB` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `min` and `max` are never used
[INFO] [stdout]   --> src/objects/aabb.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl AABB {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] 18 |     pub fn min(&self) -> Vec3 {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn max(&self) -> Vec3 {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `hit` are never used
[INFO] [stdout]   --> src/objects/aabb.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl AABB {
[INFO] [stdout]    | --------- associated items in this implementation
[INFO] [stdout] 27 |     pub fn new(minimum: Vec3, maximum: Vec3) -> AABB {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> bool {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `surrounding_box` is never used
[INFO] [stdout]   --> src/objects/aabb.rs:64:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | 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/objects/bvh_node.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct BvhNode {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `new`, `box_compare`, `box_x_compare`, `box_y_compare`, and `box_z_compare` are never used
[INFO] [stdout]   --> src/objects/bvh_node.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl BvhNode {
[INFO] [stdout]    | ------------ associated functions in this implementation
[INFO] [stdout] 17 |     pub fn new(
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     pub fn box_compare(a: &Rc<dyn Hittable>, b: &Rc<dyn Hittable>, axis: u32) -> std::cmp::Ordering {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 85 |     pub fn box_x_compare(a: &Rc<dyn Hittable>, b: &Rc<dyn Hittable>) -> std::cmp::Ordering {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 89 |     pub fn box_y_compare(a: &Rc<dyn Hittable>, b: &Rc<dyn Hittable>) -> std::cmp::Ordering {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 93 |     pub fn box_z_compare(a: &Rc<dyn Hittable>, b: &Rc<dyn Hittable>) -> std::cmp::Ordering {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `w` is never read
[INFO] [stdout]   --> src/camera/camera.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct Camera {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub w: Vec3,
[INFO] [stdout]    |         ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `seed` is never read
[INFO] [stdout]  --> src/utils/mod.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Random {
[INFO] [stdout]   |            ------ field in this struct
[INFO] [stdout] 6 |     seed:  [u8; 32],
[INFO] [stdout]   |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/objects/hittable.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &ray::Ray, t_min: f32, t_max: f32) -> Option<HitRecord>;
[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] 27 |     fn hit(&self, r: &ray::Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>>;
[INFO] [stdout]    |                                                                            ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/objects/hittable_list.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[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] 14 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/objects/sphere.rs:41:12
[INFO] [stdout]    |
[INFO] [stdout] 41 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[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] 41 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/objects/sphere.rs:93:12
[INFO] [stdout]    |
[INFO] [stdout] 93 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[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] 93 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/objects/sphere.rs:133:12
[INFO] [stdout]     |
[INFO] [stdout] 133 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[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] 133 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]     |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/objects/bvh_node.rs:101:12
[INFO] [stdout]     |
[INFO] [stdout] 101 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[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] 101 |     fn hit(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]     |                                                                         ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `super::vec3`
[INFO] [stdout]   --> src/tracer/ray.rs:50:9
[INFO] [stdout]    |
[INFO] [stdout] 50 |     use super::vec3;
[INFO] [stdout]    |         ^^^^^^^----
[INFO] [stdout]    |                |
[INFO] [stdout]    |                no `vec3` in `tracer::ray`
[INFO] [stdout]    |
[INFO] [stdout] help: a similar name exists in the module (notice the capitalization)
[INFO] [stdout]    |
[INFO] [stdout] 50 -     use super::vec3;
[INFO] [stdout] 50 +     use super::Vec3;
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this module instead
[INFO] [stdout]    |
[INFO] [stdout] 50 -     use super::vec3;
[INFO] [stdout] 50 +     use crate::tracer::vec3;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0422]: cannot find struct, variant or union type `Vec3` in this scope
[INFO] [stdout]   --> src/tracer/ray.rs:57:20
[INFO] [stdout]    |
[INFO] [stdout] 57 |                 a: Vec3{e: [1.0, 0.0, 2.0]},
[INFO] [stdout]    |                    ^^^^
[INFO] [stdout]    |
[INFO] [stdout]   --> /rustc/f28ac764c36004fa6a6e098d15b4016a838c13c6/library/alloc/src/vec/mod.rs:436:0
[INFO] [stdout]    |
[INFO] [stdout]    = note: similarly named struct `Vec` defined here
[INFO] [stdout] help: a struct with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 57 -                 a: Vec3{e: [1.0, 0.0, 2.0]},
[INFO] [stdout] 57 +                 a: Vec{e: [1.0, 0.0, 2.0]},
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct through its public re-export
[INFO] [stdout]    |
[INFO] [stdout] 50 +     use crate::tracer::ray::Vec3;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0422]: cannot find struct, variant or union type `Vec3` in this scope
[INFO] [stdout]   --> src/tracer/ray.rs:58:20
[INFO] [stdout]    |
[INFO] [stdout] 58 |                 b: Vec3{e: [4.0, 5.0, 6.0]},
[INFO] [stdout]    |                    ^^^^
[INFO] [stdout]    |
[INFO] [stdout]   --> /rustc/f28ac764c36004fa6a6e098d15b4016a838c13c6/library/alloc/src/vec/mod.rs:436:0
[INFO] [stdout]    |
[INFO] [stdout]    = note: similarly named struct `Vec` defined here
[INFO] [stdout] help: a struct with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 58 -                 b: Vec3{e: [4.0, 5.0, 6.0]},
[INFO] [stdout] 58 +                 b: Vec{e: [4.0, 5.0, 6.0]},
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct through its public re-export
[INFO] [stdout]    |
[INFO] [stdout] 50 +     use crate::tracer::ray::Vec3;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0422]: cannot find struct, variant or union type `Vec3` in this scope
[INFO] [stdout]   --> src/tracer/ray.rs:60:13
[INFO] [stdout]    |
[INFO] [stdout] 60 |             Vec3{e: [17.0, 20.0, 26.0]}
[INFO] [stdout]    |             ^^^^
[INFO] [stdout]    |
[INFO] [stdout]   --> /rustc/f28ac764c36004fa6a6e098d15b4016a838c13c6/library/alloc/src/vec/mod.rs:436:0
[INFO] [stdout]    |
[INFO] [stdout]    = note: similarly named struct `Vec` defined here
[INFO] [stdout] help: a struct with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 60 -             Vec3{e: [17.0, 20.0, 26.0]}
[INFO] [stdout] 60 +             Vec{e: [17.0, 20.0, 26.0]}
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct through its public re-export
[INFO] [stdout]    |
[INFO] [stdout] 50 +     use crate::tracer::ray::Vec3;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0422]: cannot find struct, variant or union type `Vec3` in this scope
[INFO] [stdout]   --> src/tracer/ray.rs:68:20
[INFO] [stdout]    |
[INFO] [stdout] 68 |                 a: Vec3{e: [1.0, 0.0, 2.0]},
[INFO] [stdout]    |                    ^^^^
[INFO] [stdout]    |
[INFO] [stdout]   --> /rustc/f28ac764c36004fa6a6e098d15b4016a838c13c6/library/alloc/src/vec/mod.rs:436:0
[INFO] [stdout]    |
[INFO] [stdout]    = note: similarly named struct `Vec` defined here
[INFO] [stdout] help: a struct with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 68 -                 a: Vec3{e: [1.0, 0.0, 2.0]},
[INFO] [stdout] 68 +                 a: Vec{e: [1.0, 0.0, 2.0]},
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct through its public re-export
[INFO] [stdout]    |
[INFO] [stdout] 50 +     use crate::tracer::ray::Vec3;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0422]: cannot find struct, variant or union type `Vec3` in this scope
[INFO] [stdout]   --> src/tracer/ray.rs:69:20
[INFO] [stdout]    |
[INFO] [stdout] 69 |                 b: Vec3{e: [4.0, 5.0, 6.0]},
[INFO] [stdout]    |                    ^^^^
[INFO] [stdout]    |
[INFO] [stdout]   --> /rustc/f28ac764c36004fa6a6e098d15b4016a838c13c6/library/alloc/src/vec/mod.rs:436:0
[INFO] [stdout]    |
[INFO] [stdout]    = note: similarly named struct `Vec` defined here
[INFO] [stdout] help: a struct with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 69 -                 b: Vec3{e: [4.0, 5.0, 6.0]},
[INFO] [stdout] 69 +                 b: Vec{e: [4.0, 5.0, 6.0]},
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct through its public re-export
[INFO] [stdout]    |
[INFO] [stdout] 50 +     use crate::tracer::ray::Vec3;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0422]: cannot find struct, variant or union type `Vec3` in this scope
[INFO] [stdout]   --> src/tracer/ray.rs:71:13
[INFO] [stdout]    |
[INFO] [stdout] 71 |             Vec3{e: [1.0, 0.0, 2.0]}
[INFO] [stdout]    |             ^^^^
[INFO] [stdout]    |
[INFO] [stdout]   --> /rustc/f28ac764c36004fa6a6e098d15b4016a838c13c6/library/alloc/src/vec/mod.rs:436:0
[INFO] [stdout]    |
[INFO] [stdout]    = note: similarly named struct `Vec` defined here
[INFO] [stdout] help: a struct with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 71 -             Vec3{e: [1.0, 0.0, 2.0]}
[INFO] [stdout] 71 +             Vec{e: [1.0, 0.0, 2.0]}
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct through its public re-export
[INFO] [stdout]    |
[INFO] [stdout] 50 +     use crate::tracer::ray::Vec3;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0422]: cannot find struct, variant or union type `Vec3` in this scope
[INFO] [stdout]   --> src/tracer/ray.rs:79:20
[INFO] [stdout]    |
[INFO] [stdout] 79 |                 a: Vec3{e: [1.0, 0.0, 2.0]},
[INFO] [stdout]    |                    ^^^^
[INFO] [stdout]    |
[INFO] [stdout]   --> /rustc/f28ac764c36004fa6a6e098d15b4016a838c13c6/library/alloc/src/vec/mod.rs:436:0
[INFO] [stdout]    |
[INFO] [stdout]    = note: similarly named struct `Vec` defined here
[INFO] [stdout] help: a struct with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 79 -                 a: Vec3{e: [1.0, 0.0, 2.0]},
[INFO] [stdout] 79 +                 a: Vec{e: [1.0, 0.0, 2.0]},
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct through its public re-export
[INFO] [stdout]    |
[INFO] [stdout] 50 +     use crate::tracer::ray::Vec3;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0422]: cannot find struct, variant or union type `Vec3` in this scope
[INFO] [stdout]   --> src/tracer/ray.rs:80:20
[INFO] [stdout]    |
[INFO] [stdout] 80 |                 b: Vec3{e: [4.0, 5.0, 6.0]},
[INFO] [stdout]    |                    ^^^^
[INFO] [stdout]    |
[INFO] [stdout]   --> /rustc/f28ac764c36004fa6a6e098d15b4016a838c13c6/library/alloc/src/vec/mod.rs:436:0
[INFO] [stdout]    |
[INFO] [stdout]    = note: similarly named struct `Vec` defined here
[INFO] [stdout] help: a struct with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 80 -                 b: Vec3{e: [4.0, 5.0, 6.0]},
[INFO] [stdout] 80 +                 b: Vec{e: [4.0, 5.0, 6.0]},
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct through its public re-export
[INFO] [stdout]    |
[INFO] [stdout] 50 +     use crate::tracer::ray::Vec3;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0422]: cannot find struct, variant or union type `Vec3` in this scope
[INFO] [stdout]   --> src/tracer/ray.rs:82:13
[INFO] [stdout]    |
[INFO] [stdout] 82 |             Vec3{e: [4.0, 5.0, 6.0]}
[INFO] [stdout]    |             ^^^^
[INFO] [stdout]    |
[INFO] [stdout]   --> /rustc/f28ac764c36004fa6a6e098d15b4016a838c13c6/library/alloc/src/vec/mod.rs:436:0
[INFO] [stdout]    |
[INFO] [stdout]    = note: similarly named struct `Vec` defined here
[INFO] [stdout] help: a struct with a similar name exists
[INFO] [stdout]    |
[INFO] [stdout] 82 -             Vec3{e: [4.0, 5.0, 6.0]}
[INFO] [stdout] 82 +             Vec{e: [4.0, 5.0, 6.0]}
[INFO] [stdout]    |
[INFO] [stdout] help: consider importing this struct through its public re-export
[INFO] [stdout]    |
[INFO] [stdout] 50 +     use crate::tracer::ray::Vec3;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/render/mod.rs:7:26
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::tracer::ray::{self, Ray};
[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: `crate::material`
[INFO] [stdout]   --> src/render/mod.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use crate::material;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SphereThing`
[INFO] [stdout]   --> src/render/mod.rs:16:52
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::objects::sphere::{Sphere, MovingSphere, SphereThing};
[INFO] [stdout]    |                                                    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]   --> src/render/mod.rs:18:29
[INFO] [stdout]    |
[INFO] [stdout] 18 | use crate::camera::camera::{self, Camera};
[INFO] [stdout]    |                             ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::textures::texture::Texture`
[INFO] [stdout]   --> src/render/mod.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use crate::textures::texture::Texture;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/render/mod.rs:40:16
[INFO] [stdout]    |
[INFO] [stdout] 40 |             if ((center-Vec3{e: [4.0,0.2,0.0]}).length() > 0.9) {
[INFO] [stdout]    |                ^                                              ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 40 -             if ((center-Vec3{e: [4.0,0.2,0.0]}).length() > 0.9) {
[INFO] [stdout] 40 +             if (center-Vec3{e: [4.0,0.2,0.0]}).length() > 0.9  {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Random`
[INFO] [stdout]   --> src/tracer/vec3.rs:13:26
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::utils::{self, Random};
[INFO] [stdout]    |                          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]   --> src/tracer/vec3.rs:88:9
[INFO] [stdout]    |
[INFO] [stdout] 88 |         (self.e[0]*self.e[0] + self.e[1]*self.e[1] + self.e[2]*self.e[2])
[INFO] [stdout]    |         ^                                                               ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 88 -         (self.e[0]*self.e[0] + self.e[1]*self.e[1] + self.e[2]*self.e[2])
[INFO] [stdout] 88 +         self.e[0]*self.e[0] + self.e[1]*self.e[1] + self.e[2]*self.e[2] 
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MulAssign`
[INFO] [stdout]  --> src/tracer/color.rs:1:48
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::ops::{Add, AddAssign, DivAssign, Mul, MulAssign};
[INFO] [stdout]   |                                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::borrow::Borrow`
[INFO] [stdout]  --> src/objects/hittable_list.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use core::borrow::Borrow;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/objects/hittable_list.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 |         if (self.hitables.is_empty()){
[INFO] [stdout]    |            ^                        ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 27 -         if (self.hitables.is_empty()){
[INFO] [stdout] 27 +         if self.hitables.is_empty() {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `core::borrow::Borrow`
[INFO] [stdout]  --> src/objects/aabb.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use core::borrow::Borrow;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::objects::hittable::Hittable`
[INFO] [stdout]  --> src/objects/aabb.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::objects::hittable::Hittable;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::objects::hittable::HitRecord`
[INFO] [stdout]  --> src/objects/aabb.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::objects::hittable::HitRecord;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::material::metal::MetalMaterial`
[INFO] [stdout]  --> src/objects/aabb.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::material::metal::MetalMaterial;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/objects/aabb.rs:39:16
[INFO] [stdout]    |
[INFO] [stdout] 39 |             if (inv_d < 0.0){
[INFO] [stdout]    |                ^           ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 39 -             if (inv_d < 0.0){
[INFO] [stdout] 39 +             if inv_d < 0.0 {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/objects/aabb.rs:42:29
[INFO] [stdout]    |
[INFO] [stdout] 42 |             let t_min2 = if (t0 > t_min) { t0 } else { t_min };
[INFO] [stdout]    |                             ^          ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 42 -             let t_min2 = if (t0 > t_min) { t0 } else { t_min };
[INFO] [stdout] 42 +             let t_min2 = if t0 > t_min  { t0 } else { t_min };
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/objects/aabb.rs:43:29
[INFO] [stdout]    |
[INFO] [stdout] 43 |             let t_max2 = if (t1 < t_max) { t1 } else { t_max };
[INFO] [stdout]    |                             ^          ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 43 -             let t_max2 = if (t1 < t_max) { t1 } else { t_max };
[INFO] [stdout] 43 +             let t_max2 = if t1 < t_max  { t1 } else { t_max };
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/objects/aabb.rs:44:16
[INFO] [stdout]    |
[INFO] [stdout] 44 |             if (t_max2 <= t_min2){
[INFO] [stdout]    |                ^                ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 44 -             if (t_max2 <= t_min2){
[INFO] [stdout] 44 +             if t_max2 <= t_min2 {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::tracer::vec3`
[INFO] [stdout]  --> src/objects/bvh_node.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::tracer::vec3;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Vec3` and `self`
[INFO] [stdout]  --> src/material/base.rs:4:27
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::tracer::vec3::{self, Vec3};
[INFO] [stdout]   |                           ^^^^  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/material/base.rs:5:20
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::utils::{self, Random};
[INFO] [stdout]   |                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: patterns aren't allowed in functions without bodies
[INFO] [stdout]   --> src/material/base.rs:13:23
[INFO] [stdout]    |
[INFO] [stdout] 13 |     fn scatter(&self, mut random: &mut Random, r_in: Ray, hit_record: HitRecord) -> Option<ScatterRecord>;
[INFO] [stdout]    |                       ^^^^^^^^^^ help: remove `mut` from the parameter: `random`
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #35203 <https://github.com/rust-lang/rust/issues/35203>
[INFO] [stdout]    = note: `#[deny(patterns_in_fns_without_body)]` (part of `#[deny(future_incompatible)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> src/material/dielectric.rs:7:20
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::utils::{self, Random};
[INFO] [stdout]   |                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::textures::perlin::Perlin`
[INFO] [stdout]  --> src/textures/image.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::textures::perlin::Perlin;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/sphere.rs:14:23
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub material: Box<Material>,
[INFO] [stdout]    |                       ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub material: Box<dyn Material>,
[INFO] [stdout]    |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/sphere.rs:74:23
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub material: Box<Material>,
[INFO] [stdout]    |                       ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub material: Box<dyn Material>,
[INFO] [stdout]    |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/sphere.rs:19:57
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new(center: Vec3, radius: f32, material: Box<Material>) -> Sphere{
[INFO] [stdout]    |                                                         ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new(center: Vec3, radius: f32, material: Box<dyn Material>) -> Sphere{
[INFO] [stdout]    |                                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing field `_time` in initializer of `Ray`
[INFO] [stdout]   --> src/tracer/ray.rs:56:13
[INFO] [stdout]    |
[INFO] [stdout] 56 |             Ray {
[INFO] [stdout]    |             ^^^ missing `_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing field `_time` in initializer of `Ray`
[INFO] [stdout]   --> src/tracer/ray.rs:67:13
[INFO] [stdout]    |
[INFO] [stdout] 67 |             Ray {
[INFO] [stdout]    |             ^^^ missing `_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0063]: missing field `_time` in initializer of `Ray`
[INFO] [stdout]   --> src/tracer/ray.rs:78:13
[INFO] [stdout]    |
[INFO] [stdout] 78 |             Ray {
[INFO] [stdout]    |             ^^^ missing `_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `n`
[INFO] [stdout]   --> src/render/mod.rs:25:9
[INFO] [stdout]    |
[INFO] [stdout] 25 |     let n: i32 = 500;
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_n`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/render/mod.rs:35:9
[INFO] [stdout]    |
[INFO] [stdout] 35 |     let i: i32 = 1;
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/render/mod.rs:189:9
[INFO] [stdout]     |
[INFO] [stdout] 189 |     let mut nx: i32 = 200;
[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/render/mod.rs:190:9
[INFO] [stdout]     |
[INFO] [stdout] 190 |     let mut ny: i32 = 100;
[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/mod.rs:191:9
[INFO] [stdout]     |
[INFO] [stdout] 191 |     let mut ns: i32;
[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/mod.rs:192:9
[INFO] [stdout]     |
[INFO] [stdout] 192 |     let mut vfov: f32;
[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/mod.rs:194:9
[INFO] [stdout]     |
[INFO] [stdout] 194 |     let mut lookfrom: Vec3;
[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/mod.rs:195:9
[INFO] [stdout]     |
[INFO] [stdout] 195 |     let mut lookat: Vec3;
[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/mod.rs:196:9
[INFO] [stdout]     |
[INFO] [stdout] 196 |     let mut dist_to_focus: f32;
[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/mod.rs:198:9
[INFO] [stdout]     |
[INFO] [stdout] 198 |     let mut background: Vec3;
[INFO] [stdout]     |         ----^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `aperture`
[INFO] [stdout]    --> src/render/mod.rs:193:9
[INFO] [stdout]     |
[INFO] [stdout] 193 |     let mut aperture: f32;
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_aperture`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `r`
[INFO] [stdout]    --> src/render/mod.rs:202:9
[INFO] [stdout]     |
[INFO] [stdout] 202 |     let r: f32 = (std::f32::consts::PI/4.0).cos();
[INFO] [stdout]     |         ^ help: if this is intentional, prefix it with an underscore: `_r`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> src/render/mod.rs:292:17
[INFO] [stdout]     |
[INFO] [stdout] 292 |             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: value assigned to `aperture` is never read
[INFO] [stdout]    --> src/render/mod.rs:211:13
[INFO] [stdout]     |
[INFO] [stdout] 211 |             aperture = 0.0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 216 |             aperture = 0.1;
[INFO] [stdout]     |             -------------- `aperture` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `aperture` is never read
[INFO] [stdout]    --> src/render/mod.rs:222:13
[INFO] [stdout]     |
[INFO] [stdout] 222 |             aperture = 0.0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 227 |             aperture = 0.1;
[INFO] [stdout]     |             -------------- `aperture` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `aperture` is never read
[INFO] [stdout]    --> src/render/mod.rs:233:13
[INFO] [stdout]     |
[INFO] [stdout] 233 |             aperture = 0.0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 238 |             aperture = 0.1;
[INFO] [stdout]     |             -------------- `aperture` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `aperture` is never read
[INFO] [stdout]    --> src/render/mod.rs:244:13
[INFO] [stdout]     |
[INFO] [stdout] 244 |             aperture = 0.0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 249 |             aperture = 0.1;
[INFO] [stdout]     |             -------------- `aperture` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `aperture` is never read
[INFO] [stdout]    --> src/render/mod.rs:255:13
[INFO] [stdout]     |
[INFO] [stdout] 255 |             aperture = 0.0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 260 |             aperture = 0.1;
[INFO] [stdout]     |             -------------- `aperture` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `aperture` is never read
[INFO] [stdout]    --> src/render/mod.rs:266:13
[INFO] [stdout]     |
[INFO] [stdout] 266 |             aperture = 0.0;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 271 |             aperture = 0.1;
[INFO] [stdout]     |             -------------- `aperture` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/objects/hittable_list.rs:31:13
[INFO] [stdout]    |
[INFO] [stdout] 31 |         let mut first_box: bool = true;
[INFO] [stdout]    |             ----^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `first_box`
[INFO] [stdout]   --> src/objects/hittable_list.rs:31:13
[INFO] [stdout]    |
[INFO] [stdout] 31 |         let mut first_box: bool = true;
[INFO] [stdout]    |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_first_box`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time0`
[INFO] [stdout]   --> src/objects/sphere.rs:64:28
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn bounding_box(&self, time0: f32, time1: f32) -> Option<AABB> {
[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/objects/sphere.rs:64:40
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn bounding_box(&self, time0: f32, time1: f32) -> Option<AABB> {
[INFO] [stdout]    |                                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_time1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time0`
[INFO] [stdout]    --> src/objects/bvh_node.rs:115:28
[INFO] [stdout]     |
[INFO] [stdout] 115 |     fn bounding_box(&self, time0: f32, time1: f32) -> Option<AABB> {
[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/objects/bvh_node.rs:115:40
[INFO] [stdout]     |
[INFO] [stdout] 115 |     fn bounding_box(&self, time0: f32, time1: f32) -> Option<AABB> {
[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/material/metal.rs:25:23
[INFO] [stdout]    |
[INFO] [stdout] 25 |     fn scatter(&self, mut random: &mut Random, r_in: Ray, hit_record: HitRecord) -> Option<ScatterRecord> {
[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/material/dielectric.rs:38:23
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn scatter(&self, mut random: &mut Random, r_in: Ray, hit_record: HitRecord) -> Option<ScatterRecord> {        
[INFO] [stdout]    |                       ----^^^^^^
[INFO] [stdout]    |                       |
[INFO] [stdout]    |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `u`
[INFO] [stdout]   --> src/textures/solid_color.rs:18:21
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn value(&self, u: f32, v: f32, p: &Vec3) -> Color3 {
[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/textures/solid_color.rs:18:29
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn value(&self, u: f32, v: f32, p: &Vec3) -> Color3 {
[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/textures/solid_color.rs:18:37
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn value(&self, u: f32, v: f32, p: &Vec3) -> Color3 {
[INFO] [stdout]    |                                     ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0063, E0422, E0432.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0063`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `ray-tracing-in-a-weekend` (bin "ray-tracing-in-a-weekend" test) due to 14 previous errors; 57 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "0900cd1b8bd7c274d087fa7c38781e4fabf3d78fe696c3732055e553f1d8fb4a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0900cd1b8bd7c274d087fa7c38781e4fabf3d78fe696c3732055e553f1d8fb4a", kill_on_drop: false }`
[INFO] [stdout] 0900cd1b8bd7c274d087fa7c38781e4fabf3d78fe696c3732055e553f1d8fb4a
