[INFO] cloning repository https://github.com/qiaojinxia/RayTracinginOneWeekendByRust
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/qiaojinxia/RayTracinginOneWeekendByRust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fqiaojinxia%2FRayTracinginOneWeekendByRust", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fqiaojinxia%2FRayTracinginOneWeekendByRust'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 2788cd28383e8dda540d82eb5a7ef995d5bd0a67
[INFO] checking qiaojinxia/RayTracinginOneWeekendByRust against try#14e4661efa5acbf985e4fe564baae04683366cc1 for pr-157696
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fqiaojinxia%2FRayTracinginOneWeekendByRust" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/qiaojinxia/RayTracinginOneWeekendByRust
[INFO] finished tweaking git repo https://github.com/qiaojinxia/RayTracinginOneWeekendByRust
[INFO] tweaked toml for git repo https://github.com/qiaojinxia/RayTracinginOneWeekendByRust written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/qiaojinxia/RayTracinginOneWeekendByRust on toolchain 14e4661efa5acbf985e4fe564baae04683366cc1
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+14e4661efa5acbf985e4fe564baae04683366cc1" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/qiaojinxia/RayTracinginOneWeekendByRust 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" "+14e4661efa5acbf985e4fe564baae04683366cc1" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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:3e793bdf10248eb2ddbd6b0faebed8155c11b4589982e2893733958d93e8d540" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 89f2c76ee75a13f120744e2f27b82b2acabd90b955df36a2ac635b87837e0c2e
[INFO] running `Command { std: "docker" "start" "89f2c76ee75a13f120744e2f27b82b2acabd90b955df36a2ac635b87837e0c2e", 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" "89f2c76ee75a13f120744e2f27b82b2acabd90b955df36a2ac635b87837e0c2e" "/opt/rustwide/cargo-home/bin/cargo" "+14e4661efa5acbf985e4fe564baae04683366cc1" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "89f2c76ee75a13f120744e2f27b82b2acabd90b955df36a2ac635b87837e0c2e", 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" "89f2c76ee75a13f120744e2f27b82b2acabd90b955df36a2ac635b87837e0c2e" "/opt/rustwide/cargo-home/bin/cargo" "+14e4661efa5acbf985e4fe564baae04683366cc1" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.106
[INFO] [stderr]     Checking rand_core v0.3.1
[INFO] [stderr]     Checking rand v0.5.6
[INFO] [stderr]     Checking ray_tracingin_one_weekend v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::io::Write`
[INFO] [stdout]  --> src/draw.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::Write;
[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: `std::fs::File`
[INFO] [stdout]  --> src/draw.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::fs::File;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::bvh::BvhNode`
[INFO] [stdout]  --> src/hittable_list.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::bvh::BvhNode;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::hittable_list::HittableList`
[INFO] [stdout]   --> src/stl_reader.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::hittable_list::HittableList;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MBox`
[INFO] [stdout]  --> src/sences.rs:8:52
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::shape::{Sphere, XyRect, YzRect, XzRect, MBox, YRotate, Translate};
[INFO] [stdout]   |                                                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `mixture_pdf` should have an upper camel case name
[INFO] [stdout]  --> src/pdf.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | struct mixture_pdf {
[INFO] [stdout]   |        ^^^^^^^^^^^ help: convert the identifier to upper camel case: `MixturePdf`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `cosine_pdf` should have an upper camel case name
[INFO] [stdout]   --> src/pdf.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct cosine_pdf{
[INFO] [stdout]    |        ^^^^^^^^^^ help: convert the identifier to upper camel case: `CosinePdf`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]   --> src/main.rs:26:28
[INFO] [stdout]    |
[INFO] [stdout] 26 | use std::sync::{Arc, mpsc, Mutex, RwLock};
[INFO] [stdout]    |                            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Write`
[INFO] [stdout]  --> src/draw.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::Write;
[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: `std::fs::File`
[INFO] [stdout]  --> src/draw.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::fs::File;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::bvh::BvhNode`
[INFO] [stdout]  --> src/hittable_list.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use crate::bvh::BvhNode;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::hittable_list::HittableList`
[INFO] [stdout]   --> src/stl_reader.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::hittable_list::HittableList;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MBox`
[INFO] [stdout]  --> src/sences.rs:8:52
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::shape::{Sphere, XyRect, YzRect, XzRect, MBox, YRotate, Translate};
[INFO] [stdout]   |                                                    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `mixture_pdf` should have an upper camel case name
[INFO] [stdout]  --> src/pdf.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | struct mixture_pdf {
[INFO] [stdout]   |        ^^^^^^^^^^^ help: convert the identifier to upper camel case: `MixturePdf`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `cosine_pdf` should have an upper camel case name
[INFO] [stdout]   --> src/pdf.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct cosine_pdf{
[INFO] [stdout]    |        ^^^^^^^^^^ help: convert the identifier to upper camel case: `CosinePdf`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Mutex`
[INFO] [stdout]   --> src/main.rs:26:28
[INFO] [stdout]    |
[INFO] [stdout] 26 | use std::sync::{Arc, mpsc, Mutex, RwLock};
[INFO] [stdout]    |                            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]    --> src/main.rs:255:5
[INFO] [stdout]     |
[INFO] [stdout] 238 | /     loop{
[INFO] [stdout] 239 | |         for _ in 0..count{
[INFO] [stdout] 240 | |             rx.recv();
[INFO] [stdout] ...   |
[INFO] [stdout] 253 | |     }
[INFO] [stdout]     | |_____- any code following this expression is unreachable
[INFO] [stdout] 254 |       // window.run_loop(windows::MyWindowHandler{ Buffer:pixel_buffer.clone(), TX: rx });
[INFO] [stdout] 255 |       println!("time cost: {:?} ms",start.elapsed().as_millis());
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rec`
[INFO] [stdout]   --> src/shape.rs:86:25
[INFO] [stdout]    |
[INFO] [stdout] 86 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_rec`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]   --> src/shape.rs:86:48
[INFO] [stdout]    |
[INFO] [stdout] 86 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]    |                                                ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dir`
[INFO] [stdout]   --> src/shape.rs:86:59
[INFO] [stdout]    |
[INFO] [stdout] 86 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]    |                                                           ^^^ help: if this is intentional, prefix it with an underscore: `_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rec`
[INFO] [stdout]    --> src/shape.rs:192:25
[INFO] [stdout]     |
[INFO] [stdout] 192 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_rec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]    --> src/shape.rs:192:48
[INFO] [stdout]     |
[INFO] [stdout] 192 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                                                ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dir`
[INFO] [stdout]    --> src/shape.rs:192:59
[INFO] [stdout]     |
[INFO] [stdout] 192 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                                                           ^^^ help: if this is intentional, prefix it with an underscore: `_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rec`
[INFO] [stdout]    --> src/shape.rs:301:25
[INFO] [stdout]     |
[INFO] [stdout] 301 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_rec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]    --> src/shape.rs:301:48
[INFO] [stdout]     |
[INFO] [stdout] 301 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                                                ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dir`
[INFO] [stdout]    --> src/shape.rs:301:59
[INFO] [stdout]     |
[INFO] [stdout] 301 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                                                           ^^^ help: if this is intentional, prefix it with an underscore: `_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rec`
[INFO] [stdout]    --> src/shape.rs:458:25
[INFO] [stdout]     |
[INFO] [stdout] 458 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_rec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]    --> src/shape.rs:458:48
[INFO] [stdout]     |
[INFO] [stdout] 458 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                                                ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dir`
[INFO] [stdout]    --> src/shape.rs:458:59
[INFO] [stdout]     |
[INFO] [stdout] 458 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                                                           ^^^ help: if this is intentional, prefix it with an underscore: `_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rec`
[INFO] [stdout]    --> src/shape.rs:528:25
[INFO] [stdout]     |
[INFO] [stdout] 528 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_rec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]    --> src/shape.rs:528:48
[INFO] [stdout]     |
[INFO] [stdout] 528 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                                                ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dir`
[INFO] [stdout]    --> src/shape.rs:528:59
[INFO] [stdout]     |
[INFO] [stdout] 528 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                                                           ^^^ help: if this is intentional, prefix it with an underscore: `_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rec`
[INFO] [stdout]    --> src/shape.rs:631:25
[INFO] [stdout]     |
[INFO] [stdout] 631 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_rec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]    --> src/shape.rs:631:48
[INFO] [stdout]     |
[INFO] [stdout] 631 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                                                ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dir`
[INFO] [stdout]    --> src/shape.rs:631:59
[INFO] [stdout]     |
[INFO] [stdout] 631 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                                                           ^^^ help: if this is intentional, prefix it with an underscore: `_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rec`
[INFO] [stdout]    --> src/shape.rs:687:25
[INFO] [stdout]     |
[INFO] [stdout] 687 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_rec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]    --> src/shape.rs:687:48
[INFO] [stdout]     |
[INFO] [stdout] 687 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                                                ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dir`
[INFO] [stdout]    --> src/shape.rs:687:59
[INFO] [stdout]     |
[INFO] [stdout] 687 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                                                           ^^^ help: if this is intentional, prefix it with an underscore: `_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/hittable_list.rs:59:13
[INFO] [stdout]    |
[INFO] [stdout] 59 |         let mut bounding_box = self.bounding_box().unwrap();
[INFO] [stdout]    |             ----^^^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rec`
[INFO] [stdout]   --> src/hittable_list.rs:64:25
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_rec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]   --> src/hittable_list.rs:64:48
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]    |                                                ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dir`
[INFO] [stdout]   --> src/hittable_list.rs:64:59
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]    |                                                           ^^^ help: if this is intentional, prefix it with an underscore: `_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `r_in`
[INFO] [stdout]    --> src/material.rs:101:29
[INFO] [stdout]     |
[INFO] [stdout] 101 |     fn scattering_pdf(&self,r_in: &Ray, rec: &HitRecorder, scattered: &Ray) -> f64 {
[INFO] [stdout]     |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_r_in`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rec`
[INFO] [stdout]    --> src/material.rs:101:41
[INFO] [stdout]     |
[INFO] [stdout] 101 |     fn scattering_pdf(&self,r_in: &Ray, rec: &HitRecorder, scattered: &Ray) -> f64 {
[INFO] [stdout]     |                                         ^^^ help: if this is intentional, prefix it with an underscore: `_rec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scattered`
[INFO] [stdout]    --> src/material.rs:101:60
[INFO] [stdout]     |
[INFO] [stdout] 101 |     fn scattering_pdf(&self,r_in: &Ray, rec: &HitRecorder, scattered: &Ray) -> f64 {
[INFO] [stdout]     |                                                            ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_scattered`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `r_in`
[INFO] [stdout]    --> src/material.rs:151:29
[INFO] [stdout]     |
[INFO] [stdout] 151 |     fn scattering_pdf(&self,r_in: &Ray, rec: &HitRecorder, scattered: &Ray) -> f64 {
[INFO] [stdout]     |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_r_in`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rec`
[INFO] [stdout]    --> src/material.rs:151:41
[INFO] [stdout]     |
[INFO] [stdout] 151 |     fn scattering_pdf(&self,r_in: &Ray, rec: &HitRecorder, scattered: &Ray) -> f64 {
[INFO] [stdout]     |                                         ^^^ help: if this is intentional, prefix it with an underscore: `_rec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scattered`
[INFO] [stdout]    --> src/material.rs:151:60
[INFO] [stdout]     |
[INFO] [stdout] 151 |     fn scattering_pdf(&self,r_in: &Ray, rec: &HitRecorder, scattered: &Ray) -> f64 {
[INFO] [stdout]     |                                                            ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_scattered`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `r_in`
[INFO] [stdout]    --> src/material.rs:189:29
[INFO] [stdout]     |
[INFO] [stdout] 189 |     fn scattering_pdf(&self,r_in: &Ray, rec: &HitRecorder, scattered: &Ray) -> f64 {
[INFO] [stdout]     |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_r_in`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rec`
[INFO] [stdout]    --> src/material.rs:189:41
[INFO] [stdout]     |
[INFO] [stdout] 189 |     fn scattering_pdf(&self,r_in: &Ray, rec: &HitRecorder, scattered: &Ray) -> f64 {
[INFO] [stdout]     |                                         ^^^ help: if this is intentional, prefix it with an underscore: `_rec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scattered`
[INFO] [stdout]    --> src/material.rs:189:60
[INFO] [stdout]     |
[INFO] [stdout] 189 |     fn scattering_pdf(&self,r_in: &Ray, rec: &HitRecorder, scattered: &Ray) -> f64 {
[INFO] [stdout]     |                                                            ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_scattered`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/stl_reader.rs:50:13
[INFO] [stdout]    |
[INFO] [stdout] 50 |         let mut angle = degrees_to_radians(-80.0);
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rec`
[INFO] [stdout]   --> src/bvh.rs:63:25
[INFO] [stdout]    |
[INFO] [stdout] 63 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_rec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]   --> src/bvh.rs:63:48
[INFO] [stdout]    |
[INFO] [stdout] 63 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]    |                                                ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dir`
[INFO] [stdout]   --> src/bvh.rs:63:59
[INFO] [stdout]    |
[INFO] [stdout] 63 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]    |                                                           ^^^ help: if this is intentional, prefix it with an underscore: `_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/sences.rs:168:9
[INFO] [stdout]     |
[INFO] [stdout] 168 |     let mut cat = HittableList::new();
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cat`
[INFO] [stdout]    --> src/sences.rs:168:9
[INFO] [stdout]     |
[INFO] [stdout] 168 |     let mut cat = HittableList::new();
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cat`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]    --> src/main.rs:255:5
[INFO] [stdout]     |
[INFO] [stdout] 238 | /     loop{
[INFO] [stdout] 239 | |         for _ in 0..count{
[INFO] [stdout] 240 | |             rx.recv();
[INFO] [stdout] ...   |
[INFO] [stdout] 253 | |     }
[INFO] [stdout]     | |_____- any code following this expression is unreachable
[INFO] [stdout] 254 |       // window.run_loop(windows::MyWindowHandler{ Buffer:pixel_buffer.clone(), TX: rx });
[INFO] [stdout] 255 |       println!("time cost: {:?} ms",start.elapsed().as_millis());
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unreachable statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:200:17
[INFO] [stdout]     |
[INFO] [stdout] 200 |             let mut file = std::fs::File::create(format!("file{}",thread_n)).expect("create failed");
[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/main.rs:221:29
[INFO] [stdout]     |
[INFO] [stdout] 221 |                         let mut pixel_color = ray_color(ray,&background,sences_t.clone(),max_depth);
[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/main.rs:222:29
[INFO] [stdout]     |
[INFO] [stdout] 222 |                         let mut pixel_buffer = arc_pixel_buffer.read().unwrap();
[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/main.rs:180:9
[INFO] [stdout]     |
[INFO] [stdout] 180 |     let mut pixel_buffer = Arc::new(RwLock::new(vec![Color::new();image_width as usize * image_height as usize]));
[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/main.rs:181:9
[INFO] [stdout]     |
[INFO] [stdout] 181 |     let mut render_times = Arc::new(RwLock::new(1));
[INFO] [stdout]     |         ----^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file`
[INFO] [stdout]    --> src/main.rs:200:17
[INFO] [stdout]     |
[INFO] [stdout] 200 |             let mut file = std::fs::File::create(format!("file{}",thread_n)).expect("create failed");
[INFO] [stdout]     |                 ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start`
[INFO] [stdout]    --> src/main.rs:116:9
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let start = Instant::now();
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `objs` is assigned to, but never used
[INFO] [stdout]    --> src/main.rs:122:9
[INFO] [stdout]     |
[INFO] [stdout] 122 |     let mut objs = vec![];
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_objs` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `collected_iterator`
[INFO] [stdout]    --> src/main.rs:179:9
[INFO] [stdout]     |
[INFO] [stdout] 179 |     let collected_iterator: Vec<i32> = (0..image_width*image_height).collect();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_collected_iterator`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `objs` is never read
[INFO] [stdout]    --> src/main.rs:134:13
[INFO] [stdout]     |
[INFO] [stdout] 134 |             objs = random_scene();
[INFO] [stdout]     |             ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `objs` is never read
[INFO] [stdout]    --> src/main.rs:142:13
[INFO] [stdout]     |
[INFO] [stdout] 142 |             objs = two_spheres();
[INFO] [stdout]     |             ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `objs` is never read
[INFO] [stdout]    --> src/main.rs:149:13
[INFO] [stdout]     |
[INFO] [stdout] 149 |             objs = two_perlin_spheres();
[INFO] [stdout]     |             ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `objs` is never read
[INFO] [stdout]    --> src/main.rs:157:13
[INFO] [stdout]     |
[INFO] [stdout] 157 |             objs = simple_light();
[INFO] [stdout]     |             ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `norm_two`, `random_unit_vector`, `random_in_hemisphere`, and `rotate_z` are never used
[INFO] [stdout]    --> src/vec3.rs:124:19
[INFO] [stdout]     |
[INFO] [stdout] 120 | impl Vec3{
[INFO] [stdout]     | --------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub(crate) fn norm_two(n:Vec3,u:Vec3) -> f64{
[INFO] [stdout]     |                   ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 185 |     pub(crate) fn random_unit_vector() -> Vec3{
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub(crate) fn random_in_hemisphere(normal:Vec3) -> Vec3{
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 267 |     pub(crate) fn rotate_z(v1:Vec3,radians:f64) -> Self{
[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 `form_by_center` is never used
[INFO] [stdout]    --> src/shape.rs:115:19
[INFO] [stdout]     |
[INFO] [stdout] 105 | impl Triangle{
[INFO] [stdout]     | ------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub(crate) fn form_by_center(center:Point3, height:f64,weight:f64,material:Arc<dyn Materials>) -> Self{
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MBox` is never constructed
[INFO] [stdout]    --> src/shape.rs:468:19
[INFO] [stdout]     |
[INFO] [stdout] 468 | pub(crate) struct MBox{
[INFO] [stdout]     |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `form` is never used
[INFO] [stdout]    --> src/shape.rs:481:19
[INFO] [stdout]     |
[INFO] [stdout] 480 | impl MBox{
[INFO] [stdout]     | --------- associated function in this implementation
[INFO] [stdout] 481 |     pub(crate) fn form(p0:Point3,p1:Point3,ma:Arc<dyn Materials>) -> Self{
[INFO] [stdout]     |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `add_objs` is never used
[INFO] [stdout]   --> src/hittable_list.rs:21:19
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl HittableList{
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub(crate) fn add_objs(&mut self, objs:Vec<Arc<dyn Hittable>>){
[INFO] [stdout]    |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `u`, `v`, and `w` are never read
[INFO] [stdout]   --> src/camera.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub(crate) struct Camera {
[INFO] [stdout]    |                   ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     u:Vec3, v:Vec3, w:Vec3,
[INFO] [stdout]    |     ^       ^       ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Camera` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rand_i32` is never used
[INFO] [stdout]   --> src/common.rs:88:15
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub(crate) fn rand_i32() -> i32{
[INFO] [stdout]    |               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `except` is never used
[INFO] [stdout]    --> src/common.rs:206:15
[INFO] [stdout]     |
[INFO] [stdout] 206 | pub(crate) fn except(n:i32, p:f64) -> f64{
[INFO] [stdout]     |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Reader` is never used
[INFO] [stdout]   --> src/stl_reader.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | trait Reader{
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `form` is never used
[INFO] [stdout]   --> src/texture.rs:40:19
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl CheckerTexture{
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 40 |     pub(crate) fn form(even:Arc<dyn Texture>,odd:Arc<dyn Texture>) -> Self{
[INFO] [stdout]    |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/texture.rs:73:19
[INFO] [stdout]    |
[INFO] [stdout] 72 | impl NoiseTexture{
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 73 |     pub(crate) fn new() -> Self{
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cornell_box_light` is never used
[INFO] [stdout]    --> src/sences.rs:124:15
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub(crate) fn cornell_box_light() -> Arc<dyn Hittable>{
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sences1` is never used
[INFO] [stdout]    --> src/sences.rs:184:15
[INFO] [stdout]     |
[INFO] [stdout] 184 | pub(crate) fn sences1() -> Vec<Arc<dyn Hittable>>{
[INFO] [stdout]     |               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Pdf` is never used
[INFO] [stdout]  --> src/pdf.rs:3:7
[INFO] [stdout]   |
[INFO] [stdout] 3 | trait Pdf{
[INFO] [stdout]   |       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `mixture_pdf` is never constructed
[INFO] [stdout]  --> src/pdf.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | struct mixture_pdf {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `cosine_pdf` is never constructed
[INFO] [stdout]   --> src/pdf.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct cosine_pdf{
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rec`
[INFO] [stdout]   --> src/shape.rs:86:25
[INFO] [stdout]    |
[INFO] [stdout] 86 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_rec`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]   --> src/shape.rs:86:48
[INFO] [stdout]    |
[INFO] [stdout] 86 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]    |                                                ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dir`
[INFO] [stdout]   --> src/shape.rs:86:59
[INFO] [stdout]    |
[INFO] [stdout] 86 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]    |                                                           ^^^ help: if this is intentional, prefix it with an underscore: `_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rec`
[INFO] [stdout]    --> src/shape.rs:192:25
[INFO] [stdout]     |
[INFO] [stdout] 192 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_rec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]    --> src/shape.rs:192:48
[INFO] [stdout]     |
[INFO] [stdout] 192 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                                                ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dir`
[INFO] [stdout]    --> src/shape.rs:192:59
[INFO] [stdout]     |
[INFO] [stdout] 192 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                                                           ^^^ help: if this is intentional, prefix it with an underscore: `_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rec`
[INFO] [stdout]    --> src/shape.rs:301:25
[INFO] [stdout]     |
[INFO] [stdout] 301 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_rec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]    --> src/shape.rs:301:48
[INFO] [stdout]     |
[INFO] [stdout] 301 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                                                ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dir`
[INFO] [stdout]    --> src/shape.rs:301:59
[INFO] [stdout]     |
[INFO] [stdout] 301 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                                                           ^^^ help: if this is intentional, prefix it with an underscore: `_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/main.rs:234:17
[INFO] [stdout]     |
[INFO] [stdout] 234 |                 s_chan.send(());
[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] 234 |                 let _ = s_chan.send(());
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/main.rs:240:13
[INFO] [stdout]     |
[INFO] [stdout] 240 |             rx.recv();
[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] 240 |             let _ = rx.recv();
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/main.rs:245:9
[INFO] [stdout]     |
[INFO] [stdout] 245 |         output.write("P3 \n500 500 \n255\n".as_ref());
[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] 245 |         let _ = output.write("P3 \n500 500 \n255\n".as_ref());
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rec`
[INFO] [stdout]    --> src/shape.rs:458:25
[INFO] [stdout]     |
[INFO] [stdout] 458 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_rec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/main.rs:249:13
[INFO] [stdout]     |
[INFO] [stdout] 249 |             output.write(s.as_bytes());
[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] 249 |             let _ = output.write(s.as_bytes());
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]    --> src/shape.rs:458:48
[INFO] [stdout]     |
[INFO] [stdout] 458 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                                                ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dir`
[INFO] [stdout]    --> src/shape.rs:458:59
[INFO] [stdout]     |
[INFO] [stdout] 458 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                                                           ^^^ help: if this is intentional, prefix it with an underscore: `_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: incorrect NaN comparison, NaN cannot be directly compared to itself
[INFO] [stdout]  --> src/draw.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 |     if r == f64::NAN{
[INFO] [stdout]   |        ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(invalid_nan_comparisons)]` on by default
[INFO] [stdout] help: use `f32::is_nan()` or `f64::is_nan()` instead
[INFO] [stdout]   |
[INFO] [stdout] 9 -     if r == f64::NAN{
[INFO] [stdout] 9 +     if r.is_nan(){
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: incorrect NaN comparison, NaN cannot be directly compared to itself
[INFO] [stdout]   --> src/draw.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 |     if g == f64::NAN{
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `f32::is_nan()` or `f64::is_nan()` instead
[INFO] [stdout]    |
[INFO] [stdout] 12 -     if g == f64::NAN{
[INFO] [stdout] 12 +     if g.is_nan(){
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: incorrect NaN comparison, NaN cannot be directly compared to itself
[INFO] [stdout]   --> src/draw.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 |     if b == f64::NAN{
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `f32::is_nan()` or `f64::is_nan()` instead
[INFO] [stdout]    |
[INFO] [stdout] 15 -     if b == f64::NAN{
[INFO] [stdout] 15 +     if b.is_nan(){
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rec`
[INFO] [stdout]    --> src/shape.rs:528:25
[INFO] [stdout]     |
[INFO] [stdout] 528 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_rec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]    --> src/shape.rs:528:48
[INFO] [stdout]     |
[INFO] [stdout] 528 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                                                ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dir`
[INFO] [stdout]    --> src/shape.rs:528:59
[INFO] [stdout]     |
[INFO] [stdout] 528 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                                                           ^^^ help: if this is intentional, prefix it with an underscore: `_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rec`
[INFO] [stdout]    --> src/shape.rs:631:25
[INFO] [stdout]     |
[INFO] [stdout] 631 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_rec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]    --> src/shape.rs:631:48
[INFO] [stdout]     |
[INFO] [stdout] 631 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                                                ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dir`
[INFO] [stdout]    --> src/shape.rs:631:59
[INFO] [stdout]     |
[INFO] [stdout] 631 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                                                           ^^^ help: if this is intentional, prefix it with an underscore: `_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rec`
[INFO] [stdout]    --> src/shape.rs:687:25
[INFO] [stdout]     |
[INFO] [stdout] 687 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_rec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]    --> src/shape.rs:687:48
[INFO] [stdout]     |
[INFO] [stdout] 687 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                                                ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dir`
[INFO] [stdout]    --> src/shape.rs:687:59
[INFO] [stdout]     |
[INFO] [stdout] 687 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]     |                                                           ^^^ help: if this is intentional, prefix it with an underscore: `_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/hittable_list.rs:59:13
[INFO] [stdout]    |
[INFO] [stdout] 59 |         let mut bounding_box = self.bounding_box().unwrap();
[INFO] [stdout]    |             ----^^^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rec`
[INFO] [stdout]   --> src/hittable_list.rs:64:25
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_rec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]   --> src/hittable_list.rs:64:48
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]    |                                                ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dir`
[INFO] [stdout]   --> src/hittable_list.rs:64:59
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]    |                                                           ^^^ help: if this is intentional, prefix it with an underscore: `_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `r_in`
[INFO] [stdout]    --> src/material.rs:101:29
[INFO] [stdout]     |
[INFO] [stdout] 101 |     fn scattering_pdf(&self,r_in: &Ray, rec: &HitRecorder, scattered: &Ray) -> f64 {
[INFO] [stdout]     |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_r_in`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rec`
[INFO] [stdout]    --> src/material.rs:101:41
[INFO] [stdout]     |
[INFO] [stdout] 101 |     fn scattering_pdf(&self,r_in: &Ray, rec: &HitRecorder, scattered: &Ray) -> f64 {
[INFO] [stdout]     |                                         ^^^ help: if this is intentional, prefix it with an underscore: `_rec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scattered`
[INFO] [stdout]    --> src/material.rs:101:60
[INFO] [stdout]     |
[INFO] [stdout] 101 |     fn scattering_pdf(&self,r_in: &Ray, rec: &HitRecorder, scattered: &Ray) -> f64 {
[INFO] [stdout]     |                                                            ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_scattered`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `r_in`
[INFO] [stdout]    --> src/material.rs:151:29
[INFO] [stdout]     |
[INFO] [stdout] 151 |     fn scattering_pdf(&self,r_in: &Ray, rec: &HitRecorder, scattered: &Ray) -> f64 {
[INFO] [stdout]     |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_r_in`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rec`
[INFO] [stdout]    --> src/material.rs:151:41
[INFO] [stdout]     |
[INFO] [stdout] 151 |     fn scattering_pdf(&self,r_in: &Ray, rec: &HitRecorder, scattered: &Ray) -> f64 {
[INFO] [stdout]     |                                         ^^^ help: if this is intentional, prefix it with an underscore: `_rec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scattered`
[INFO] [stdout]    --> src/material.rs:151:60
[INFO] [stdout]     |
[INFO] [stdout] 151 |     fn scattering_pdf(&self,r_in: &Ray, rec: &HitRecorder, scattered: &Ray) -> f64 {
[INFO] [stdout]     |                                                            ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_scattered`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `r_in`
[INFO] [stdout]    --> src/material.rs:189:29
[INFO] [stdout]     |
[INFO] [stdout] 189 |     fn scattering_pdf(&self,r_in: &Ray, rec: &HitRecorder, scattered: &Ray) -> f64 {
[INFO] [stdout]     |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_r_in`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rec`
[INFO] [stdout]    --> src/material.rs:189:41
[INFO] [stdout]     |
[INFO] [stdout] 189 |     fn scattering_pdf(&self,r_in: &Ray, rec: &HitRecorder, scattered: &Ray) -> f64 {
[INFO] [stdout]     |                                         ^^^ help: if this is intentional, prefix it with an underscore: `_rec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scattered`
[INFO] [stdout]    --> src/material.rs:189:60
[INFO] [stdout]     |
[INFO] [stdout] 189 |     fn scattering_pdf(&self,r_in: &Ray, rec: &HitRecorder, scattered: &Ray) -> f64 {
[INFO] [stdout]     |                                                            ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_scattered`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/stl_reader.rs:50:13
[INFO] [stdout]    |
[INFO] [stdout] 50 |         let mut angle = degrees_to_radians(-80.0);
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rec`
[INFO] [stdout]   --> src/bvh.rs:63:25
[INFO] [stdout]    |
[INFO] [stdout] 63 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_rec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]   --> src/bvh.rs:63:48
[INFO] [stdout]    |
[INFO] [stdout] 63 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]    |                                                ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dir`
[INFO] [stdout]   --> src/bvh.rs:63:59
[INFO] [stdout]    |
[INFO] [stdout] 63 |     fn pdf_value(&self, rec: &mut HitRecorder, p: Point3, dir: Vec3) -> f64 {
[INFO] [stdout]    |                                                           ^^^ help: if this is intentional, prefix it with an underscore: `_dir`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/sences.rs:168:9
[INFO] [stdout]     |
[INFO] [stdout] 168 |     let mut cat = HittableList::new();
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cat`
[INFO] [stdout]    --> src/sences.rs:168:9
[INFO] [stdout]     |
[INFO] [stdout] 168 |     let mut cat = HittableList::new();
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cat`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:200:17
[INFO] [stdout]     |
[INFO] [stdout] 200 |             let mut file = std::fs::File::create(format!("file{}",thread_n)).expect("create failed");
[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/main.rs:221:29
[INFO] [stdout]     |
[INFO] [stdout] 221 |                         let mut pixel_color = ray_color(ray,&background,sences_t.clone(),max_depth);
[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/main.rs:222:29
[INFO] [stdout]     |
[INFO] [stdout] 222 |                         let mut pixel_buffer = arc_pixel_buffer.read().unwrap();
[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/main.rs:180:9
[INFO] [stdout]     |
[INFO] [stdout] 180 |     let mut pixel_buffer = Arc::new(RwLock::new(vec![Color::new();image_width as usize * image_height as usize]));
[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/main.rs:181:9
[INFO] [stdout]     |
[INFO] [stdout] 181 |     let mut render_times = Arc::new(RwLock::new(1));
[INFO] [stdout]     |         ----^^^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `file`
[INFO] [stdout]    --> src/main.rs:200:17
[INFO] [stdout]     |
[INFO] [stdout] 200 |             let mut file = std::fs::File::create(format!("file{}",thread_n)).expect("create failed");
[INFO] [stdout]     |                 ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_file`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `start`
[INFO] [stdout]    --> src/main.rs:116:9
[INFO] [stdout]     |
[INFO] [stdout] 116 |     let start = Instant::now();
[INFO] [stdout]     |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_start`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `objs` is assigned to, but never used
[INFO] [stdout]    --> src/main.rs:122:9
[INFO] [stdout]     |
[INFO] [stdout] 122 |     let mut objs = vec![];
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_objs` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `collected_iterator`
[INFO] [stdout]    --> src/main.rs:179:9
[INFO] [stdout]     |
[INFO] [stdout] 179 |     let collected_iterator: Vec<i32> = (0..image_width*image_height).collect();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_collected_iterator`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `objs` is never read
[INFO] [stdout]    --> src/main.rs:134:13
[INFO] [stdout]     |
[INFO] [stdout] 134 |             objs = random_scene();
[INFO] [stdout]     |             ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `objs` is never read
[INFO] [stdout]    --> src/main.rs:142:13
[INFO] [stdout]     |
[INFO] [stdout] 142 |             objs = two_spheres();
[INFO] [stdout]     |             ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `objs` is never read
[INFO] [stdout]    --> src/main.rs:149:13
[INFO] [stdout]     |
[INFO] [stdout] 149 |             objs = two_perlin_spheres();
[INFO] [stdout]     |             ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `objs` is never read
[INFO] [stdout]    --> src/main.rs:157:13
[INFO] [stdout]     |
[INFO] [stdout] 157 |             objs = simple_light();
[INFO] [stdout]     |             ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `norm_two`, `random_unit_vector`, `random_in_hemisphere`, and `rotate_z` are never used
[INFO] [stdout]    --> src/vec3.rs:124:19
[INFO] [stdout]     |
[INFO] [stdout] 120 | impl Vec3{
[INFO] [stdout]     | --------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub(crate) fn norm_two(n:Vec3,u:Vec3) -> f64{
[INFO] [stdout]     |                   ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 185 |     pub(crate) fn random_unit_vector() -> Vec3{
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 188 |     pub(crate) fn random_in_hemisphere(normal:Vec3) -> Vec3{
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 267 |     pub(crate) fn rotate_z(v1:Vec3,radians:f64) -> Self{
[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 `form_by_center` is never used
[INFO] [stdout]    --> src/shape.rs:115:19
[INFO] [stdout]     |
[INFO] [stdout] 105 | impl Triangle{
[INFO] [stdout]     | ------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 115 |     pub(crate) fn form_by_center(center:Point3, height:f64,weight:f64,material:Arc<dyn Materials>) -> Self{
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MBox` is never constructed
[INFO] [stdout]    --> src/shape.rs:468:19
[INFO] [stdout]     |
[INFO] [stdout] 468 | pub(crate) struct MBox{
[INFO] [stdout]     |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `form` is never used
[INFO] [stdout]    --> src/shape.rs:481:19
[INFO] [stdout]     |
[INFO] [stdout] 480 | impl MBox{
[INFO] [stdout]     | --------- associated function in this implementation
[INFO] [stdout] 481 |     pub(crate) fn form(p0:Point3,p1:Point3,ma:Arc<dyn Materials>) -> Self{
[INFO] [stdout]     |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `add_objs` is never used
[INFO] [stdout]   --> src/hittable_list.rs:21:19
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl HittableList{
[INFO] [stdout]    | ----------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub(crate) fn add_objs(&mut self, objs:Vec<Arc<dyn Hittable>>){
[INFO] [stdout]    |                   ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `u`, `v`, and `w` are never read
[INFO] [stdout]   --> src/camera.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub(crate) struct Camera {
[INFO] [stdout]    |                   ------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     u:Vec3, v:Vec3, w:Vec3,
[INFO] [stdout]    |     ^       ^       ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Camera` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rand_i32` is never used
[INFO] [stdout]   --> src/common.rs:88:15
[INFO] [stdout]    |
[INFO] [stdout] 88 | pub(crate) fn rand_i32() -> i32{
[INFO] [stdout]    |               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `except` is never used
[INFO] [stdout]    --> src/common.rs:206:15
[INFO] [stdout]     |
[INFO] [stdout] 206 | pub(crate) fn except(n:i32, p:f64) -> f64{
[INFO] [stdout]     |               ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Reader` is never used
[INFO] [stdout]   --> src/stl_reader.rs:13:7
[INFO] [stdout]    |
[INFO] [stdout] 13 | trait Reader{
[INFO] [stdout]    |       ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `form` is never used
[INFO] [stdout]   --> src/texture.rs:40:19
[INFO] [stdout]    |
[INFO] [stdout] 39 | impl CheckerTexture{
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 40 |     pub(crate) fn form(even:Arc<dyn Texture>,odd:Arc<dyn Texture>) -> Self{
[INFO] [stdout]    |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/texture.rs:73:19
[INFO] [stdout]    |
[INFO] [stdout] 72 | impl NoiseTexture{
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 73 |     pub(crate) fn new() -> Self{
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cornell_box_light` is never used
[INFO] [stdout]    --> src/sences.rs:124:15
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub(crate) fn cornell_box_light() -> Arc<dyn Hittable>{
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sences1` is never used
[INFO] [stdout]    --> src/sences.rs:184:15
[INFO] [stdout]     |
[INFO] [stdout] 184 | pub(crate) fn sences1() -> Vec<Arc<dyn Hittable>>{
[INFO] [stdout]     |               ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Pdf` is never used
[INFO] [stdout]  --> src/pdf.rs:3:7
[INFO] [stdout]   |
[INFO] [stdout] 3 | trait Pdf{
[INFO] [stdout]   |       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `mixture_pdf` is never constructed
[INFO] [stdout]  --> src/pdf.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | struct mixture_pdf {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `cosine_pdf` is never constructed
[INFO] [stdout]   --> src/pdf.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct cosine_pdf{
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/main.rs:234:17
[INFO] [stdout]     |
[INFO] [stdout] 234 |                 s_chan.send(());
[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] 234 |                 let _ = s_chan.send(());
[INFO] [stdout]     |                 +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/main.rs:240:13
[INFO] [stdout]     |
[INFO] [stdout] 240 |             rx.recv();
[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] 240 |             let _ = rx.recv();
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/main.rs:245:9
[INFO] [stdout]     |
[INFO] [stdout] 245 |         output.write("P3 \n500 500 \n255\n".as_ref());
[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] 245 |         let _ = output.write("P3 \n500 500 \n255\n".as_ref());
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/main.rs:249:13
[INFO] [stdout]     |
[INFO] [stdout] 249 |             output.write(s.as_bytes());
[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] 249 |             let _ = output.write(s.as_bytes());
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: incorrect NaN comparison, NaN cannot be directly compared to itself
[INFO] [stdout]  --> src/draw.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 |     if r == f64::NAN{
[INFO] [stdout]   |        ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(invalid_nan_comparisons)]` on by default
[INFO] [stdout] help: use `f32::is_nan()` or `f64::is_nan()` instead
[INFO] [stdout]   |
[INFO] [stdout] 9 -     if r == f64::NAN{
[INFO] [stdout] 9 +     if r.is_nan(){
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: incorrect NaN comparison, NaN cannot be directly compared to itself
[INFO] [stdout]   --> src/draw.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 |     if g == f64::NAN{
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `f32::is_nan()` or `f64::is_nan()` instead
[INFO] [stdout]    |
[INFO] [stdout] 12 -     if g == f64::NAN{
[INFO] [stdout] 12 +     if g.is_nan(){
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: incorrect NaN comparison, NaN cannot be directly compared to itself
[INFO] [stdout]   --> src/draw.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 |     if b == f64::NAN{
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: use `f32::is_nan()` or `f64::is_nan()` instead
[INFO] [stdout]    |
[INFO] [stdout] 15 -     if b == f64::NAN{
[INFO] [stdout] 15 +     if b.is_nan(){
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.11s
[INFO] running `Command { std: "docker" "inspect" "89f2c76ee75a13f120744e2f27b82b2acabd90b955df36a2ac635b87837e0c2e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "89f2c76ee75a13f120744e2f27b82b2acabd90b955df36a2ac635b87837e0c2e", kill_on_drop: false }`
[INFO] [stdout] 89f2c76ee75a13f120744e2f27b82b2acabd90b955df36a2ac635b87837e0c2e
