[INFO] cloning repository https://github.com/ShoshinX/RayTracing
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ShoshinX/RayTracing" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FShoshinX%2FRayTracing", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FShoshinX%2FRayTracing'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 34e62fd0f168b31fe5a041c384ef8f4dd79f25b9
[INFO] checking ShoshinX/RayTracing/34e62fd0f168b31fe5a041c384ef8f4dd79f25b9 against master#4d1bd0db7f489b22c6d8aa2385937a95412c015b for pr-114682
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FShoshinX%2FRayTracing" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/ShoshinX/RayTracing on toolchain 4d1bd0db7f489b22c6d8aa2385937a95412c015b
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+4d1bd0db7f489b22c6d8aa2385937a95412c015b" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/ShoshinX/RayTracing
[INFO] finished tweaking git repo https://github.com/ShoshinX/RayTracing
[INFO] tweaked toml for git repo https://github.com/ShoshinX/RayTracing written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] crate git repo https://github.com/ShoshinX/RayTracing 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" "+4d1bd0db7f489b22c6d8aa2385937a95412c015b" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+4d1bd0db7f489b22c6d8aa2385937a95412c015b" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] bf6faa72db75af6be8c55fa77a7f6a3da6070a6d55ae5a2346dcf936407d0917
[INFO] running `Command { std: "docker" "start" "-a" "bf6faa72db75af6be8c55fa77a7f6a3da6070a6d55ae5a2346dcf936407d0917", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "bf6faa72db75af6be8c55fa77a7f6a3da6070a6d55ae5a2346dcf936407d0917", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "bf6faa72db75af6be8c55fa77a7f6a3da6070a6d55ae5a2346dcf936407d0917", kill_on_drop: false }`
[INFO] [stdout] bf6faa72db75af6be8c55fa77a7f6a3da6070a6d55ae5a2346dcf936407d0917
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+4d1bd0db7f489b22c6d8aa2385937a95412c015b" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 1b977ce68554e20617411f4d8edfa5a95112408f251a31b7e4dfd8975c5970ca
[INFO] running `Command { std: "docker" "start" "-a" "1b977ce68554e20617411f4d8edfa5a95112408f251a31b7e4dfd8975c5970ca", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.81
[INFO] [stderr]    Compiling getrandom v0.2.0
[INFO] [stderr]     Checking cfg-if v0.1.10
[INFO] [stderr]     Checking ppv-lite86 v0.2.10
[INFO] [stderr]     Checking rand_core v0.6.0
[INFO] [stderr]     Checking rand_chacha v0.3.0
[INFO] [stderr]     Checking rand v0.8.0
[INFO] [stderr]     Checking ray_tracing v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::ops`
[INFO] [stdout]  --> src/main.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::ops;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Write`, `self`
[INFO] [stdout]  --> src/vec3.rs:2:15
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::io::{self,Write};
[INFO] [stdout]   |               ^^^^ ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::ops`
[INFO] [stdout]  --> src/main.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::ops;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Write`, `self`
[INFO] [stdout]  --> src/vec3.rs:2:15
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::io::{self,Write};
[INFO] [stdout]   |               ^^^^ ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `vec3` should have an upper camel case name
[INFO] [stdout]  --> src/vec3.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct vec3 {
[INFO] [stdout]   |            ^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Vec3`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_camel_case_types)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `point3` should have an upper camel case name
[INFO] [stdout]   --> src/vec3.rs:68:10
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub type point3 = vec3; // 3D point
[INFO] [stdout]    |          ^^^^^^ help: convert the identifier to upper camel case: `Point3`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `color` should have an upper camel case name
[INFO] [stdout]   --> src/vec3.rs:69:10
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub type color  = vec3; // RGB color
[INFO] [stdout]    |          ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]    --> src/vec3.rs:161:5
[INFO] [stdout]     |
[INFO] [stdout] 161 |     while true {
[INFO] [stdout]     |     ^^^^^^^^^^ help: use `loop`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(while_true)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ray` should have an upper camel case name
[INFO] [stdout]  --> src/ray.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct ray {
[INFO] [stdout]   |            ^^^ help: convert the identifier to upper camel case: `Ray`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `hit_record` should have an upper camel case name
[INFO] [stdout]  --> src/hittable.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct hit_record {
[INFO] [stdout]   |            ^^^^^^^^^^ help: convert the identifier to upper camel case: `HitRecord`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `hittable` should have an upper camel case name
[INFO] [stdout]   --> src/hittable.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub trait hittable {
[INFO] [stdout]    |           ^^^^^^^^ help: convert the identifier to upper camel case: `Hittable`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `vec3` should have an upper camel case name
[INFO] [stdout]  --> src/vec3.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct vec3 {
[INFO] [stdout]   |            ^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Vec3`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_camel_case_types)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `sphere` should have an upper camel case name
[INFO] [stdout]  --> src/sphere.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct sphere {
[INFO] [stdout]   |            ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Sphere`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `hittable_list` should have an upper camel case name
[INFO] [stdout]  --> src/hittable_list.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct hittable_list{
[INFO] [stdout]   |            ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `HittableList`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ray::*`
[INFO] [stdout]   --> src/rtweekend.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use crate::ray::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `point3` should have an upper camel case name
[INFO] [stdout]   --> src/vec3.rs:68:10
[INFO] [stdout]    |
[INFO] [stdout] 68 | pub type point3 = vec3; // 3D point
[INFO] [stdout]    |          ^^^^^^ help: convert the identifier to upper camel case: `Point3`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::vec3::*`
[INFO] [stdout]   --> src/rtweekend.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use crate::vec3::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `camera` should have an upper camel case name
[INFO] [stdout]  --> src/camera.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct camera {
[INFO] [stdout]   |            ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Camera`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `color` should have an upper camel case name
[INFO] [stdout]   --> src/vec3.rs:69:10
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub type color  = vec3; // RGB color
[INFO] [stdout]    |          ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Color`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::rtweekend::*`
[INFO] [stdout]  --> src/material.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::rtweekend::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: denote infinite loops with `loop { ... }`
[INFO] [stdout]    --> src/vec3.rs:161:5
[INFO] [stdout]     |
[INFO] [stdout] 161 |     while true {
[INFO] [stdout]     |     ^^^^^^^^^^ help: use `loop`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(while_true)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `material` should have an upper camel case name
[INFO] [stdout]  --> src/material.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub trait material{
[INFO] [stdout]   |           ^^^^^^^^ help: convert the identifier to upper camel case: `Material`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `lambertian` should have an upper camel case name
[INFO] [stdout]   --> src/material.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct lambertian {
[INFO] [stdout]    |            ^^^^^^^^^^ help: convert the identifier to upper camel case: `Lambertian`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ray` should have an upper camel case name
[INFO] [stdout]  --> src/ray.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct ray {
[INFO] [stdout]   |            ^^^ help: convert the identifier to upper camel case: `Ray`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `metal` should have an upper camel case name
[INFO] [stdout]   --> src/material.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct metal {
[INFO] [stdout]    |            ^^^^^ help: convert the identifier to upper camel case: `Metal`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `hit_record` should have an upper camel case name
[INFO] [stdout]  --> src/hittable.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct hit_record {
[INFO] [stdout]   |            ^^^^^^^^^^ help: convert the identifier to upper camel case: `HitRecord`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `dielectric` should have an upper camel case name
[INFO] [stdout]   --> src/material.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct dielectric {
[INFO] [stdout]    |            ^^^^^^^^^^ help: convert the identifier to upper camel case: `Dielectric`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `hittable` should have an upper camel case name
[INFO] [stdout]   --> src/hittable.rs:24:11
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub trait hittable {
[INFO] [stdout]    |           ^^^^^^^^ help: convert the identifier to upper camel case: `Hittable`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `sphere` should have an upper camel case name
[INFO] [stdout]  --> src/sphere.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct sphere {
[INFO] [stdout]   |            ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Sphere`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `hittable_list` should have an upper camel case name
[INFO] [stdout]  --> src/hittable_list.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct hittable_list{
[INFO] [stdout]   |            ^^^^^^^^^^^^^ help: convert the identifier to upper camel case: `HittableList`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]   --> src/material.rs:47:52
[INFO] [stdout]    |
[INFO] [stdout] 47 |         let refraction_ratio = if rec.front_face { (1.0/self.ir) } else { self.ir };
[INFO] [stdout]    |                                                    ^           ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 47 -         let refraction_ratio = if rec.front_face { (1.0/self.ir) } else { self.ir };
[INFO] [stdout] 47 +         let refraction_ratio = if rec.front_face { 1.0/self.ir } else { self.ir };
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ray::*`
[INFO] [stdout]   --> src/rtweekend.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | use crate::ray::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::vec3::*`
[INFO] [stdout]   --> src/rtweekend.rs:23:5
[INFO] [stdout]    |
[INFO] [stdout] 23 | use crate::vec3::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `camera` should have an upper camel case name
[INFO] [stdout]  --> src/camera.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct camera {
[INFO] [stdout]   |            ^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Camera`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::rtweekend::*`
[INFO] [stdout]  --> src/material.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::rtweekend::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `material` should have an upper camel case name
[INFO] [stdout]  --> src/material.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub trait material{
[INFO] [stdout]   |           ^^^^^^^^ help: convert the identifier to upper camel case: `Material`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `lambertian` should have an upper camel case name
[INFO] [stdout]   --> src/material.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct lambertian {
[INFO] [stdout]    |            ^^^^^^^^^^ help: convert the identifier to upper camel case: `Lambertian`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `metal` should have an upper camel case name
[INFO] [stdout]   --> src/material.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct metal {
[INFO] [stdout]    |            ^^^^^ help: convert the identifier to upper camel case: `Metal`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `dielectric` should have an upper camel case name
[INFO] [stdout]   --> src/material.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub struct dielectric {
[INFO] [stdout]    |            ^^^^^^^^^^ help: convert the identifier to upper camel case: `Dielectric`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]   --> src/material.rs:47:52
[INFO] [stdout]    |
[INFO] [stdout] 47 |         let refraction_ratio = if rec.front_face { (1.0/self.ir) } else { self.ir };
[INFO] [stdout]    |                                                    ^           ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 47 -         let refraction_ratio = if rec.front_face { (1.0/self.ir) } else { self.ir };
[INFO] [stdout] 47 +         let refraction_ratio = if rec.front_face { 1.0/self.ir } else { self.ir };
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/main.rs:57:36
[INFO] [stdout]    |
[INFO] [stdout] 57 | fn ray_color(r: &ray::ray, world: &hittable::hittable, depth: i32) -> vec3::color{
[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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 57 | fn ray_color(r: &ray::ray, world: &dyn hittable::hittable, depth: i32) -> vec3::color{
[INFO] [stdout]    |                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/hittable.rs:13:21
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub mat_ptr: Rc<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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub mat_ptr: Rc<dyn material>,
[INFO] [stdout]    |                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/sphere.rs:11:21
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub mat_ptr: Rc<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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub mat_ptr: Rc<dyn material>,
[INFO] [stdout]    |                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/hittable_list.rs:9:26
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub objects: Vec<Box<hittable>>,
[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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub objects: Vec<Box<dyn hittable>>,
[INFO] [stdout]   |                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/main.rs:57:36
[INFO] [stdout]    |
[INFO] [stdout] 57 | fn ray_color(r: &ray::ray, world: &hittable::hittable, depth: i32) -> vec3::color{
[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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 57 | fn ray_color(r: &ray::ray, world: &dyn hittable::hittable, depth: i32) -> vec3::color{
[INFO] [stdout]    |                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/hittable.rs:13:21
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub mat_ptr: Rc<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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub mat_ptr: Rc<dyn material>,
[INFO] [stdout]    |                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/hittable_list.rs:14:39
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn add(&mut self, object: Box<hittable>) { self.objects.push(object) }
[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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn add(&mut self, object: Box<dyn hittable>) { self.objects.push(object) }
[INFO] [stdout]    |                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/sphere.rs:11:21
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub mat_ptr: Rc<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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub mat_ptr: Rc<dyn material>,
[INFO] [stdout]    |                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/hittable_list.rs:9:26
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub objects: Vec<Box<hittable>>,
[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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub objects: Vec<Box<dyn hittable>>,
[INFO] [stdout]   |                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/hittable_list.rs:14:39
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn add(&mut self, object: Box<hittable>) { self.objects.push(object) }
[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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn add(&mut self, object: Box<dyn hittable>) { self.objects.push(object) }
[INFO] [stdout]    |                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/main.rs:28:55
[INFO] [stdout]    |
[INFO] [stdout] 28 |                 let mut sphere_material : std::rc::Rc<material::material> = std::rc::Rc::new(material::dielectric{ir:1.5});
[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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 28 |                 let mut sphere_material : std::rc::Rc<dyn material::material> = std::rc::Rc::new(material::dielectric{ir:1.5});
[INFO] [stdout]    |                                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/main.rs:28:55
[INFO] [stdout]    |
[INFO] [stdout] 28 |                 let mut sphere_material : std::rc::Rc<material::material> = std::rc::Rc::new(material::dielectric{ir:1.5});
[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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 28 |                 let mut sphere_material : std::rc::Rc<dyn material::material> = std::rc::Rc::new(material::dielectric{ir:1.5});
[INFO] [stdout]    |                                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `r_in`
[INFO] [stdout]   --> src/material.rs:15:22
[INFO] [stdout]    |
[INFO] [stdout] 15 |     fn scatter(&self,r_in: &ray, rec: &hit_record, attenuation: &mut color, scattered: &mut ray) -> bool {
[INFO] [stdout]    |                      ^^^^ help: if this is intentional, prefix it with an underscore: `_r_in`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `r_in`
[INFO] [stdout]   --> src/material.rs:15:22
[INFO] [stdout]    |
[INFO] [stdout] 15 |     fn scatter(&self,r_in: &ray, rec: &hit_record, attenuation: &mut color, scattered: &mut ray) -> bool {
[INFO] [stdout]    |                      ^^^^ help: if this is intentional, prefix it with an underscore: `_r_in`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `direction` is never read
[INFO] [stdout]   --> src/material.rs:53:17
[INFO] [stdout]    |
[INFO] [stdout] 53 |         let mut direction = vec3 {e:[0.0,0.0,0.0]};
[INFO] [stdout]    |                 ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `direction` is never read
[INFO] [stdout]   --> src/material.rs:53:17
[INFO] [stdout]    |
[INFO] [stdout] 53 |         let mut direction = vec3 {e:[0.0,0.0,0.0]};
[INFO] [stdout]    |                 ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout]    = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `sphere_material` is never read
[INFO] [stdout]   --> src/main.rs:28:25
[INFO] [stdout]    |
[INFO] [stdout] 28 |                 let mut sphere_material : std::rc::Rc<material::material> = std::rc::Rc::new(material::dielectric{ir:1.5});
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `sphere_material` is never read
[INFO] [stdout]   --> src/main.rs:28:25
[INFO] [stdout]    |
[INFO] [stdout] 28 |                 let mut sphere_material : std::rc::Rc<material::material> = std::rc::Rc::new(material::dielectric{ir:1.5});
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]   --> src/main.rs:99:17
[INFO] [stdout]    |
[INFO] [stdout] 99 |             for s in 0..SAMPLES_PER_PIXEL {
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]   --> src/main.rs:99:17
[INFO] [stdout]    |
[INFO] [stdout] 99 |             for s in 0..SAMPLES_PER_PIXEL {
[INFO] [stdout]    |                 ^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:82:9
[INFO] [stdout]    |
[INFO] [stdout] 82 |     let mut world = random_scene();
[INFO] [stdout]    |         ----^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:82:9
[INFO] [stdout]    |
[INFO] [stdout] 82 |     let mut world = random_scene();
[INFO] [stdout]    |         ----^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_vec3` is never used
[INFO] [stdout]   --> src/vec3.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub fn print_vec3(v : &vec3) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_in_hemisphere` is never used
[INFO] [stdout]    --> src/vec3.rs:140:8
[INFO] [stdout]     |
[INFO] [stdout] 140 | pub fn random_in_hemisphere(normal: &vec3) -> vec3 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clear` is never used
[INFO] [stdout]   --> src/hittable_list.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl hittable_list {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 13 |     pub fn clear(&mut self) { self.objects.clear() }
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_vec3` is never used
[INFO] [stdout]   --> src/vec3.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub fn print_vec3(v : &vec3) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PI` is never used
[INFO] [stdout]  --> src/rtweekend.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub const PI :f64= std::f64::consts::PI;
[INFO] [stdout]   |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `degrees_to_radians` is never used
[INFO] [stdout]  --> src/rtweekend.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn degrees_to_radians(degrees: f64) -> f64 {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_in_hemisphere` is never used
[INFO] [stdout]    --> src/vec3.rs:140:8
[INFO] [stdout]     |
[INFO] [stdout] 140 | pub fn random_in_hemisphere(normal: &vec3) -> vec3 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `w` is never read
[INFO] [stdout]   --> src/camera.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 4  | pub struct camera {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     w: vec3,
[INFO] [stdout]    |     ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clear` is never used
[INFO] [stdout]   --> src/hittable_list.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl hittable_list {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] 13 |     pub fn clear(&mut self) { self.objects.clear() }
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reflectance` is never used
[INFO] [stdout]   --> src/material.rs:65:4
[INFO] [stdout]    |
[INFO] [stdout] 65 | fn reflectance(cosine: f64, ref_idx: f64) -> f64 {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PI` is never used
[INFO] [stdout]  --> src/rtweekend.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub const PI :f64= std::f64::consts::PI;
[INFO] [stdout]   |           ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `degrees_to_radians` is never used
[INFO] [stdout]  --> src/rtweekend.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn degrees_to_radians(degrees: f64) -> f64 {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `w` is never read
[INFO] [stdout]   --> src/camera.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 4  | pub struct camera {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 11 |     w: vec3,
[INFO] [stdout]    |     ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reflectance` is never used
[INFO] [stdout]   --> src/material.rs:65:4
[INFO] [stdout]    |
[INFO] [stdout] 65 | fn reflectance(cosine: f64, ref_idx: f64) -> f64 {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 38 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 38 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished dev [unoptimized + debuginfo] target(s) in 1.07s
[INFO] running `Command { std: "docker" "inspect" "1b977ce68554e20617411f4d8edfa5a95112408f251a31b7e4dfd8975c5970ca", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1b977ce68554e20617411f4d8edfa5a95112408f251a31b7e4dfd8975c5970ca", kill_on_drop: false }`
[INFO] [stdout] 1b977ce68554e20617411f4d8edfa5a95112408f251a31b7e4dfd8975c5970ca
