[INFO] cloning repository https://github.com/christopherwebb/rust_ray_tracer
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/christopherwebb/rust_ray_tracer" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fchristopherwebb%2Frust_ray_tracer", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fchristopherwebb%2Frust_ray_tracer'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 52460c9acf71130fa146ca446e2d50f602afe972
[INFO] testing christopherwebb/rust_ray_tracer against 1.69.0 for beta-1.70-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fchristopherwebb%2Frust_ray_tracer" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/christopherwebb/rust_ray_tracer on toolchain 1.69.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.69.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/christopherwebb/rust_ray_tracer
[INFO] finished tweaking git repo https://github.com/christopherwebb/rust_ray_tracer
[INFO] tweaked toml for git repo https://github.com/christopherwebb/rust_ray_tracer written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] crate git repo https://github.com/christopherwebb/rust_ray_tracer already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.69.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded syn v1.0.9
[INFO] [stderr]   Downloaded serde_json v1.0.42
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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:5ff2268d62e97bff2cde7d5815dd6ed5b47097566f13b8d0ca110b04b60e07ed" "/opt/rustwide/cargo-home/bin/cargo" "+1.69.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 78e51db20bff45339a47a1dffda95076115f2a75ef4364e7d8ebee2a79a0a226
[INFO] running `Command { std: "docker" "start" "-a" "78e51db20bff45339a47a1dffda95076115f2a75ef4364e7d8ebee2a79a0a226", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "78e51db20bff45339a47a1dffda95076115f2a75ef4364e7d8ebee2a79a0a226", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "78e51db20bff45339a47a1dffda95076115f2a75ef4364e7d8ebee2a79a0a226", kill_on_drop: false }`
[INFO] [stdout] 78e51db20bff45339a47a1dffda95076115f2a75ef4364e7d8ebee2a79a0a226
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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:5ff2268d62e97bff2cde7d5815dd6ed5b47097566f13b8d0ca110b04b60e07ed" "/opt/rustwide/cargo-home/bin/cargo" "+1.69.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] d8cf39b983164c5b188e0c766993a3299910ba454bb1567b780c2c1eee0de732
[INFO] running `Command { std: "docker" "start" "-a" "d8cf39b983164c5b188e0c766993a3299910ba454bb1567b780c2c1eee0de732", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.58
[INFO] [stderr]    Compiling spin v0.5.0
[INFO] [stderr]    Compiling proc-macro2 v1.0.6
[INFO] [stderr]    Compiling unicode-xid v0.2.0
[INFO] [stderr]    Compiling syn v1.0.9
[INFO] [stderr]    Compiling unicode-width v0.1.6
[INFO] [stderr]    Compiling autocfg v0.1.4
[INFO] [stderr]    Compiling bitflags v1.1.0
[INFO] [stderr]    Compiling ryu v1.0.2
[INFO] [stderr]    Compiling serde v1.0.97
[INFO] [stderr]    Compiling ppv-lite86 v0.2.5
[INFO] [stderr]    Compiling regex-syntax v0.6.12
[INFO] [stderr]    Compiling number_prefix v0.3.0
[INFO] [stderr]    Compiling strsim v0.8.0
[INFO] [stderr]    Compiling itoa v0.4.4
[INFO] [stderr]    Compiling num-traits v0.2.14
[INFO] [stderr]    Compiling textwrap v0.11.0
[INFO] [stderr]    Compiling ansi_term v0.11.0
[INFO] [stderr]    Compiling lazy_static v1.3.0
[INFO] [stderr]    Compiling vec_map v0.8.1
[INFO] [stderr]    Compiling rand_chacha v0.2.0
[INFO] [stderr]    Compiling c2-chacha v0.2.2
[INFO] [stderr]    Compiling getrandom v0.1.6
[INFO] [stderr]    Compiling clicolors-control v1.0.1
[INFO] [stderr]    Compiling termios v0.3.1
[INFO] [stderr]    Compiling atty v0.2.13
[INFO] [stderr]    Compiling num_cpus v1.10.1
[INFO] [stderr]    Compiling quote v1.0.2
[INFO] [stderr]    Compiling clap v2.33.0
[INFO] [stderr]    Compiling rand_core v0.5.0
[INFO] [stderr]    Compiling float-cmp v0.8.0
[INFO] [stderr]    Compiling regex v1.3.1
[INFO] [stderr]    Compiling rand v0.7.0
[INFO] [stderr]    Compiling console v0.9.1
[INFO] [stderr]    Compiling indicatif v0.13.0
[INFO] [stderr]    Compiling serde_derive v1.0.103
[INFO] [stderr]    Compiling serde_json v1.0.42
[INFO] [stderr]    Compiling rust_ray_tracing v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `Matrix4x4f`, `Normal3f`, `dot_vn`, `dot_vv`
[INFO] [stdout]  --> src/aabb.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     Normal3f,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 3 |     Point3f,
[INFO] [stdout] 4 |     Matrix4x4f,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 5 |     dot_vv,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 6 |     dot_vn,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::thread_rng`
[INFO] [stdout]   --> src/vector.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use rand::thread_rng;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]   --> src/vector.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use rand::Rng;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `dot_vv`
[INFO] [stdout]  --> src/shapes/cylinder.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     dot_vv,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `solve_quadratic`
[INFO] [stdout]   --> src/shapes/sphere.rs:15:27
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::shapes::base::{solve_quadratic, Hitable};
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Matrix4x4f`
[INFO] [stdout]  --> src/shapes/base.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     Matrix4x4f,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Matrix4x4f`, `dot_vn`
[INFO] [stdout]   --> src/shapes/sphere2.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout] 8  |     Matrix4x4f,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 9  |     dot_vv,
[INFO] [stdout] 10 |     dot_vn,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t_min`
[INFO] [stdout]   --> src/aabb.rs:28:13
[INFO] [stdout]    |
[INFO] [stdout] 28 |         let t_min = if t0 > t_min { t0 } else { t_min };
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_t_min`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t_min`
[INFO] [stdout]   --> src/aabb.rs:45:13
[INFO] [stdout]    |
[INFO] [stdout] 45 |         let t_min = if t0 > t_min { t0 } else { t_min };
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_t_min`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t_min`
[INFO] [stdout]   --> src/aabb.rs:62:13
[INFO] [stdout]    |
[INFO] [stdout] 62 |         let t_min = if t0 > t_min { t0 } else { t_min };
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_t_min`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `phi` is never read
[INFO] [stdout]   --> src/shapes/cylinder.rs:78:17
[INFO] [stdout]    |
[INFO] [stdout] 78 |                 phi += 2.0 * f32::consts::PI;
[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: unused variable: `time_0`
[INFO] [stdout]   --> src/shapes/sphere2.rs:78:9
[INFO] [stdout]    |
[INFO] [stdout] 78 |         time_0: f32,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_1`
[INFO] [stdout]   --> src/shapes/sphere2.rs:79:9
[INFO] [stdout]    |
[INFO] [stdout] 79 |         time_1: f32,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dot` is never used
[INFO] [stdout]   --> src/core/normal.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub fn dot<T>(l: &Normal3T<T>, r: &Normal3T<T>) -> T
[INFO] [stdout]    |        ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `N` should have a snake case name
[INFO] [stdout]    --> src/shapes/cylinder.rs:139:17
[INFO] [stdout]     |
[INFO] [stdout] 139 |             let N = &cross(&dpdu, &dpdv).unit_vector();
[INFO] [stdout]     |                 ^ help: convert the identifier to snake case: `n`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 15 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]  --> src/bin/rust_ray_assemble.rs:1:21
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::{self, Read};
[INFO] [stdout]   |                     ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]   --> src/bin/rust_ray_assemble.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 |         if x_coord < 0 || x_coord >= n_x || y_coord < 0 || y_coord >= n_y {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]   --> src/bin/rust_ray_assemble.rs:45:45
[INFO] [stdout]    |
[INFO] [stdout] 45 |         if x_coord < 0 || x_coord >= n_x || y_coord < 0 || y_coord >= n_y {
[INFO] [stdout]    |                                             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Read`, `self`
[INFO] [stdout]  --> src/main.rs:2:15
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::io::{self, Read};
[INFO] [stdout]   |               ^^^^  ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Matrix4x4f`, `Normal3f`, `dot_vn`, `dot_vv`
[INFO] [stdout]  --> src/aabb.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     Normal3f,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 3 |     Point3f,
[INFO] [stdout] 4 |     Matrix4x4f,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 5 |     dot_vv,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 6 |     dot_vn,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::Point3f`
[INFO] [stdout]  --> src/bvh_tree.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::core::Point3f;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize`, `Serialize`
[INFO] [stdout]  --> src/material2.rs:3:13
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Normal3f`, `Point3f`
[INFO] [stdout]   --> src/material2.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout] 8  |     Point3f,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 9  |     Vector3f,
[INFO] [stdout] 10 |     Normal3f,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::aabb::AABB`
[INFO] [stdout]  --> src/scene2.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::aabb::AABB;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Normal3f`, `Point3f`
[INFO] [stdout]  --> src/scene2.rs:5:19
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::core::{Point3f, Normal3f, Colour};
[INFO] [stdout]   |                   ^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Normal3f`, `gen_rotate_x`, `gen_rotate_y`, `gen_rotate_z`
[INFO] [stdout]   --> src/scene_generator.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout] 9  |     Normal3f,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |     gen_rotate_x,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 15 |     gen_rotate_y,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 16 |     gen_rotate_z,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `dot_vv`
[INFO] [stdout]  --> src/shapes/cylinder.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     dot_vv,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `solve_quadratic`
[INFO] [stdout]   --> src/shapes/sphere.rs:15:27
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::shapes::base::{solve_quadratic, Hitable};
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Matrix4x4f`
[INFO] [stdout]  --> src/shapes/base.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     Matrix4x4f,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Matrix4x4f`, `dot_vn`
[INFO] [stdout]   --> src/shapes/sphere2.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout] 8  |     Matrix4x4f,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 9  |     dot_vv,
[INFO] [stdout] 10 |     dot_vn,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::thread_rng`
[INFO] [stdout]   --> src/vector.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use rand::thread_rng;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]   --> src/vector.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use rand::Rng;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Normal3f`
[INFO] [stdout]  --> src/textures/base.rs:1:28
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::core::{Point3f, Normal3f, Colour};
[INFO] [stdout]   |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Normal3f`
[INFO] [stdout]  --> src/textures/solid_colour.rs:1:28
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::core::{Point3f, Normal3f, Colour};
[INFO] [stdout]   |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Scene`
[INFO] [stdout]   --> src/main.rs:42:21
[INFO] [stdout]    |
[INFO] [stdout] 42 | use crate::scene2::{Scene, calculate_colour};
[INFO] [stdout]    |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ShapeTrait`
[INFO] [stdout]  --> src/bvh_tree.rs:8:40
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::shapes::base::{Interaction, ShapeTrait};
[INFO] [stdout]   |                                        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ShapeTrait`
[INFO] [stdout]  --> src/scene2.rs:3:40
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::shapes::base::{Interaction, ShapeTrait};
[INFO] [stdout]   |                                        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t_min`
[INFO] [stdout]   --> src/aabb.rs:28:13
[INFO] [stdout]    |
[INFO] [stdout] 28 |         let t_min = if t0 > t_min { t0 } else { t_min };
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_t_min`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t_min`
[INFO] [stdout]   --> src/aabb.rs:45:13
[INFO] [stdout]    |
[INFO] [stdout] 45 |         let t_min = if t0 > t_min { t0 } else { t_min };
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_t_min`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t_min`
[INFO] [stdout]   --> src/aabb.rs:62:13
[INFO] [stdout]    |
[INFO] [stdout] 62 |         let t_min = if t0 > t_min { t0 } else { t_min };
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_t_min`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `index`
[INFO] [stdout]   --> src/bvh_tree.rs:37:23
[INFO] [stdout]    |
[INFO] [stdout] 37 |             .filter(|(index, aabb_option)| aabb_option.is_some())
[INFO] [stdout]    |                       ^^^^^ help: if this is intentional, prefix it with an underscore: `_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `left_col`
[INFO] [stdout]    --> src/bvh_tree.rs:129:35
[INFO] [stdout]     |
[INFO] [stdout] 129 | ...                   (Some(left_col),              None) => left_collsion,
[INFO] [stdout]     |                             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_left_col`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `left`
[INFO] [stdout]    --> src/bvh_tree.rs:167:28
[INFO] [stdout]     |
[INFO] [stdout] 167 |             Self::Branch { left, right, aabb} => *aabb,
[INFO] [stdout]     |                            ^^^^ help: try ignoring the field: `left: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `right`
[INFO] [stdout]    --> src/bvh_tree.rs:167:34
[INFO] [stdout]     |
[INFO] [stdout] 167 |             Self::Branch { left, right, aabb} => *aabb,
[INFO] [stdout]     |                                  ^^^^^ help: try ignoring the field: `right: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `primative`
[INFO] [stdout]    --> src/bvh_tree.rs:168:26
[INFO] [stdout]     |
[INFO] [stdout] 168 |             Self::Leaf { primative, aabb } => *aabb,
[INFO] [stdout]     |                          ^^^^^^^^^ help: try ignoring the field: `primative: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_t`
[INFO] [stdout]   --> src/scene_generator.rs:56:34
[INFO] [stdout]    |
[INFO] [stdout] 56 |     fn generate_transform(&self, time_t: f32) -> Transform {
[INFO] [stdout]    |                                  ^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_t`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `phi` is never read
[INFO] [stdout]   --> src/shapes/cylinder.rs:78:17
[INFO] [stdout]    |
[INFO] [stdout] 78 |                 phi += 2.0 * f32::consts::PI;
[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: unused variable: `time_0`
[INFO] [stdout]   --> src/shapes/sphere2.rs:78:9
[INFO] [stdout]    |
[INFO] [stdout] 78 |         time_0: f32,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_1`
[INFO] [stdout]   --> src/shapes/sphere2.rs:79:9
[INFO] [stdout]    |
[INFO] [stdout] 79 |         time_1: f32,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `u`
[INFO] [stdout]   --> src/textures/solid_colour.rs:10:18
[INFO] [stdout]    |
[INFO] [stdout] 10 |     fn value(&self, u: f32, v: f32, p: Point3f) -> Colour {
[INFO] [stdout]    |                     ^ help: if this is intentional, prefix it with an underscore: `_u`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]   --> src/textures/solid_colour.rs:10:26
[INFO] [stdout]    |
[INFO] [stdout] 10 |     fn value(&self, u: f32, v: f32, p: Point3f) -> Colour {
[INFO] [stdout]    |                             ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]   --> src/textures/solid_colour.rs:10:34
[INFO] [stdout]    |
[INFO] [stdout] 10 |     fn value(&self, u: f32, v: f32, p: Point3f) -> Colour {
[INFO] [stdout]    |                                     ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `colour` is never used
[INFO] [stdout]   --> src/main.rs:46:4
[INFO] [stdout]    |
[INFO] [stdout] 46 | fn colour(ray : &Ray, world: &HitList, depth : i32) -> Colour {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `hit` is never used
[INFO] [stdout]   --> src/aabb.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn hit(self, r: &Ray, t_min: f32, t_max: f32) -> bool {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `join` is never used
[INFO] [stdout]   --> src/aabb.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 |     pub fn join(box_a: &AABB, box_b: &AABB) -> AABB {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BVHTree` is never constructed
[INFO] [stdout]   --> src/bvh_tree.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct BVHTree {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Branch` and `Leaf` are never constructed
[INFO] [stdout]    --> src/bvh_tree.rs:152:5
[INFO] [stdout]     |
[INFO] [stdout] 151 | enum Node {
[INFO] [stdout]     |      ---- variants in this enum
[INFO] [stdout] 152 |     Branch {
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 157 |     Leaf {
[INFO] [stdout]     |     ^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Node` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `blank` is never used
[INFO] [stdout]   --> src/bvh_tree.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn blank() -> Self {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/bvh_tree.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 |     pub fn new(primatives: Vec<Primative>, time_0: f32, time_1: f32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new_branch` is never used
[INFO] [stdout]   --> src/bvh_tree.rs:60:8
[INFO] [stdout]    |
[INFO] [stdout] 60 |     fn new_branch(rnd_gen: &mut rand::rngs::ThreadRng, nodes: &mut Vec<Node>, primative_subsection: &mut Vec<(usize, AABB)>) -> usize {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_collision` is never used
[INFO] [stdout]    --> src/bvh_tree.rs:100:12
[INFO] [stdout]     |
[INFO] [stdout] 100 |     pub fn get_collision(&self, ray: &Ray, t_min: f32, t_max: f32) -> Option<Interaction> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_collision_on` is never used
[INFO] [stdout]    --> src/bvh_tree.rs:107:8
[INFO] [stdout]     |
[INFO] [stdout] 107 |     fn get_collision_on(&self, index: usize, ray: &Ray, t_min: f32, t_max: f32) -> Option<Interaction> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_aabb` is never used
[INFO] [stdout]    --> src/bvh_tree.rs:165:8
[INFO] [stdout]     |
[INFO] [stdout] 165 |     fn get_aabb(&self) -> AABB {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dot_nv` is never used
[INFO] [stdout]   --> src/core/mod.rs:73:8
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub fn dot_nv<T>(l: &Normal3T<T>, r: &Vector3T<T>) -> T
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dot_nn` is never used
[INFO] [stdout]   --> src/core/mod.rs:82:8
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub fn dot_nn<T>(l: &Normal3T<T>, r: &Normal3T<T>) -> T
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `length` is never used
[INFO] [stdout]   --> src/core/point.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub fn length(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `squared_length` is never used
[INFO] [stdout]   --> src/core/point.rs:42:12
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub fn squared_length(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Vector2i` is never used
[INFO] [stdout]   --> src/core/vector.rs:42:10
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub type Vector2i = Vector2T<i32>;
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Vector2f` is never used
[INFO] [stdout]   --> src/core/vector.rs:43:10
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub type Vector2f = Vector2T<f32>;
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Vector3i` is never used
[INFO] [stdout]   --> src/core/vector.rs:44:10
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub type Vector3i = Vector3T<i32>;
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `length` is never used
[INFO] [stdout]   --> src/core/vector.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub fn length<T>(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `squared_length` is never used
[INFO] [stdout]   --> src/core/vector.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 |     pub fn squared_length<T>(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Normal2i` is never used
[INFO] [stdout]   --> src/core/normal.rs:36:10
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub type Normal2i = Normal2T<i32>;
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Normal2f` is never used
[INFO] [stdout]   --> src/core/normal.rs:37:10
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub type Normal2f = Normal2T<f32>;
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Normal3i` is never used
[INFO] [stdout]   --> src/core/normal.rs:38:10
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub type Normal3i = Normal3T<i32>;
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dot` is never used
[INFO] [stdout]   --> src/core/normal.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub fn dot<T>(l: &Normal3T<T>, r: &Normal3T<T>) -> T
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Matrix4x4i` is never used
[INFO] [stdout]   --> src/core/matrix.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub type Matrix4x4i = Matrix4x4<i32>;
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `indentity` is never used
[INFO] [stdout]   --> src/core/matrix.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub fn indentity() -> Matrix4x4f {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gen_rotate_x` is never used
[INFO] [stdout]   --> src/core/transforms.rs:53:8
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub fn gen_rotate_x(theta: f32) -> Transform {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gen_rotate_y` is never used
[INFO] [stdout]   --> src/core/transforms.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 80 | pub fn gen_rotate_y(theta: f32) -> Transform {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gen_rotate_z` is never used
[INFO] [stdout]    --> src/core/transforms.rs:107:8
[INFO] [stdout]     |
[INFO] [stdout] 107 | pub fn gen_rotate_z(theta: f32) -> Transform {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `HitRecord` is never constructed
[INFO] [stdout]   --> src/material2.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | struct HitRecord {}
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MaterialHit` is never constructed
[INFO] [stdout]   --> src/material.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub struct MaterialHit {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `scatter` is never used
[INFO] [stdout]   --> src/material.rs:49:12
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub fn scatter(self, ray_in: &Ray, hit: &HitRecord) -> MaterialHit {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `schlick` is never used
[INFO] [stdout]    --> src/material.rs:137:12
[INFO] [stdout]     |
[INFO] [stdout] 137 |     pub fn schlick(cosine : f32, ref_idx : f32) -> f32 {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `make_lambertian` is never used
[INFO] [stdout]    --> src/material.rs:144:12
[INFO] [stdout]     |
[INFO] [stdout] 144 |     pub fn make_lambertian(albedo: Colour) -> Material {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `make_metal` is never used
[INFO] [stdout]    --> src/material.rs:152:12
[INFO] [stdout]     |
[INFO] [stdout] 152 |     pub fn make_metal(albedo: Colour, fuzz: f32) -> Material {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `make_dielectric` is never used
[INFO] [stdout]    --> src/material.rs:160:12
[INFO] [stdout]     |
[INFO] [stdout] 160 |     pub fn make_dielectric(ref_idx: f32) -> Material {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `bounding_box` is never used
[INFO] [stdout]   --> src/primative.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 |     pub fn bounding_box(
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SceneAABBDivision` is never constructed
[INFO] [stdout]   --> src/scene2.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub struct SceneAABBDivision {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `find_interaction` is never used
[INFO] [stdout]   --> src/scene2.rs:78:8
[INFO] [stdout]    |
[INFO] [stdout] 78 |     fn find_interaction(&self, ray: &Ray) -> Option<PrimativeInteraction> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dot` is never used
[INFO] [stdout]    --> src/vector.rs:256:8
[INFO] [stdout]     |
[INFO] [stdout] 256 | pub fn dot(l: &Vec3, r: &Vec3) -> f32 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cross` is never used
[INFO] [stdout]    --> src/vector.rs:260:8
[INFO] [stdout]     |
[INFO] [stdout] 260 | pub fn cross(l: &Vec3, r: &Vec3) -> Vec3 {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unit_vector` is never used
[INFO] [stdout]    --> src/vector.rs:268:8
[INFO] [stdout]     |
[INFO] [stdout] 268 | pub fn unit_vector(vec : &Vec3) -> Vec3 {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `NTHREADS` should have a snake case name
[INFO] [stdout]    --> src/main.rs:238:9
[INFO] [stdout]     |
[INFO] [stdout] 238 |     let NTHREADS = num_cpus::get() as u32;
[INFO] [stdout]     |         ^^^^^^^^ help: convert the identifier to snake case: `nthreads`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `N` should have a snake case name
[INFO] [stdout]    --> src/shapes/cylinder.rs:139:17
[INFO] [stdout]     |
[INFO] [stdout] 139 |             let N = &cross(&dpdu, &dpdv).unit_vector();
[INFO] [stdout]     |                 ^ help: convert the identifier to snake case: `n`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 3 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 78 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished dev [unoptimized + debuginfo] target(s) in 10.83s
[INFO] running `Command { std: "docker" "inspect" "d8cf39b983164c5b188e0c766993a3299910ba454bb1567b780c2c1eee0de732", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d8cf39b983164c5b188e0c766993a3299910ba454bb1567b780c2c1eee0de732", kill_on_drop: false }`
[INFO] [stdout] d8cf39b983164c5b188e0c766993a3299910ba454bb1567b780c2c1eee0de732
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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:5ff2268d62e97bff2cde7d5815dd6ed5b47097566f13b8d0ca110b04b60e07ed" "/opt/rustwide/cargo-home/bin/cargo" "+1.69.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] fd1d0b8897faec78b1897ee097c039b161996441d55f8fc08f9a19a305a0729d
[INFO] running `Command { std: "docker" "start" "-a" "fd1d0b8897faec78b1897ee097c039b161996441d55f8fc08f9a19a305a0729d", kill_on_drop: false }`
[INFO] [stdout] warning: unused imports: `Matrix4x4f`, `Normal3f`, `dot_vn`, `dot_vv`
[INFO] [stdout]  --> src/aabb.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     Normal3f,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 3 |     Point3f,
[INFO] [stdout] 4 |     Matrix4x4f,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 5 |     dot_vv,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 6 |     dot_vn,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::thread_rng`
[INFO] [stdout]   --> src/vector.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use rand::thread_rng;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]   --> src/vector.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use rand::Rng;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `dot_vv`
[INFO] [stdout]  --> src/shapes/cylinder.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     dot_vv,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `solve_quadratic`
[INFO] [stdout]   --> src/shapes/sphere.rs:15:27
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::shapes::base::{solve_quadratic, Hitable};
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Matrix4x4f`
[INFO] [stdout]  --> src/shapes/base.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     Matrix4x4f,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Matrix4x4f`, `dot_vn`
[INFO] [stdout]   --> src/shapes/sphere2.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout] 8  |     Matrix4x4f,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 9  |     dot_vv,
[INFO] [stdout] 10 |     dot_vn,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t_min`
[INFO] [stdout]   --> src/aabb.rs:28:13
[INFO] [stdout]    |
[INFO] [stdout] 28 |         let t_min = if t0 > t_min { t0 } else { t_min };
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_t_min`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t_min`
[INFO] [stdout]   --> src/aabb.rs:45:13
[INFO] [stdout]    |
[INFO] [stdout] 45 |         let t_min = if t0 > t_min { t0 } else { t_min };
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_t_min`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t_min`
[INFO] [stdout]   --> src/aabb.rs:62:13
[INFO] [stdout]    |
[INFO] [stdout] 62 |         let t_min = if t0 > t_min { t0 } else { t_min };
[INFO] [stdout]    |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_t_min`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `phi` is never read
[INFO] [stdout]   --> src/shapes/cylinder.rs:78:17
[INFO] [stdout]    |
[INFO] [stdout] 78 |                 phi += 2.0 * f32::consts::PI;
[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: unused variable: `time_0`
[INFO] [stdout]   --> src/shapes/sphere2.rs:78:9
[INFO] [stdout]    |
[INFO] [stdout] 78 |         time_0: f32,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time_1`
[INFO] [stdout]   --> src/shapes/sphere2.rs:79:9
[INFO] [stdout]    |
[INFO] [stdout] 79 |         time_1: f32,
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_time_1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `dot` is never used
[INFO] [stdout]   --> src/core/normal.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub fn dot<T>(l: &Normal3T<T>, r: &Normal3T<T>) -> T
[INFO] [stdout]    |        ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `N` should have a snake case name
[INFO] [stdout]    --> src/shapes/cylinder.rs:139:17
[INFO] [stdout]     |
[INFO] [stdout] 139 |             let N = &cross(&dpdu, &dpdv).unit_vector();
[INFO] [stdout]     |                 ^ help: convert the identifier to snake case: `n`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling rust_ray_tracing v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: 15 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> examples/blue_red.rs:4:13
[INFO] [stdout]   |
[INFO] [stdout] 4 | use serde::{Serialize};
[INFO] [stdout]   |             ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> examples/cylinders.rs:4:13
[INFO] [stdout]   |
[INFO] [stdout] 4 | use serde::{Serialize};
[INFO] [stdout]   |             ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Read`
[INFO] [stdout]  --> src/bin/rust_ray_assemble.rs:1:21
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::{self, Read};
[INFO] [stdout]   |                     ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Result`, `Value`
[INFO] [stdout]  --> examples/blue_red.rs:5:18
[INFO] [stdout]   |
[INFO] [stdout] 5 | use serde_json::{Result, Value};
[INFO] [stdout]   |                  ^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rust_ray_tracing::shapes::base::Hitable`
[INFO] [stdout]   --> examples/blue_red.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use rust_ray_tracing::shapes::base::Hitable;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Result`, `Value`
[INFO] [stdout]  --> examples/cylinders.rs:5:18
[INFO] [stdout]   |
[INFO] [stdout] 5 | use serde_json::{Result, Value};
[INFO] [stdout]   |                  ^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rust_ray_tracing::shapes::cylinder::Cylinder`
[INFO] [stdout]   --> examples/blue_red.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use rust_ray_tracing::shapes::cylinder::Cylinder;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rust_ray_tracing::shapes::base::Hitable`
[INFO] [stdout]   --> examples/cylinders.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use rust_ray_tracing::shapes::base::Hitable;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MovingSphere`
[INFO] [stdout]   --> examples/blue_red.rs:19:48
[INFO] [stdout]    |
[INFO] [stdout] 19 | use rust_ray_tracing::shapes::sphere::{Sphere, MovingSphere};
[INFO] [stdout]    |                                                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MovingSphere`, `Sphere`
[INFO] [stdout]   --> examples/cylinders.rs:19:40
[INFO] [stdout]    |
[INFO] [stdout] 19 | use rust_ray_tracing::shapes::sphere::{Sphere, MovingSphere};
[INFO] [stdout]    |                                        ^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> examples/3balls.rs:4:13
[INFO] [stdout]   |
[INFO] [stdout] 4 | use serde::{Serialize};
[INFO] [stdout]   |             ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Result`, `Value`
[INFO] [stdout]  --> examples/3balls.rs:5:18
[INFO] [stdout]   |
[INFO] [stdout] 5 | use serde_json::{Result, Value};
[INFO] [stdout]   |                  ^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rust_ray_tracing::shapes::base::Hitable`
[INFO] [stdout]   --> examples/3balls.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use rust_ray_tracing::shapes::base::Hitable;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rust_ray_tracing::shapes::cylinder::Cylinder`
[INFO] [stdout]   --> examples/3balls.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use rust_ray_tracing::shapes::cylinder::Cylinder;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MovingSphere`
[INFO] [stdout]   --> examples/3balls.rs:19:48
[INFO] [stdout]    |
[INFO] [stdout] 19 | use rust_ray_tracing::shapes::sphere::{Sphere, MovingSphere};
[INFO] [stdout]    |                                                ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Serialize`
[INFO] [stdout]  --> examples/final_weekend.rs:6:13
[INFO] [stdout]   |
[INFO] [stdout] 6 | use serde::{Serialize};
[INFO] [stdout]   |             ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Result`, `Value`
[INFO] [stdout]  --> examples/final_weekend.rs:7:18
[INFO] [stdout]   |
[INFO] [stdout] 7 | use serde_json::{Result, Value};
[INFO] [stdout]   |                  ^^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rust_ray_tracing::shapes::base::Hitable`
[INFO] [stdout]   --> examples/final_weekend.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use rust_ray_tracing::shapes::base::Hitable;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rust_ray_tracing::shapes::cylinder::Cylinder`
[INFO] [stdout]   --> examples/final_weekend.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use rust_ray_tracing::shapes::cylinder::Cylinder;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]   --> src/bin/rust_ray_assemble.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 |         if x_coord < 0 || x_coord >= n_x || y_coord < 0 || y_coord >= n_y {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]   --> src/bin/rust_ray_assemble.rs:45:45
[INFO] [stdout]    |
[INFO] [stdout] 45 |         if x_coord < 0 || x_coord >= n_x || y_coord < 0 || y_coord >= n_y {
[INFO] [stdout]    |                                             ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Matrix4x4f`, `Normal3f`, `dot_vn`, `dot_vv`
[INFO] [stdout]  --> src/aabb.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     Normal3f,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 3 |     Point3f,
[INFO] [stdout] 4 |     Matrix4x4f,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 5 |     dot_vv,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 6 |     dot_vn,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::thread_rng`
[INFO] [stdout]   --> src/vector.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use rand::thread_rng;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]   --> src/vector.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use rand::Rng;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `dot_vv`
[INFO] [stdout]  --> src/shapes/cylinder.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     dot_vv,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `solve_quadratic`
[INFO] [stdout]   --> src/shapes/sphere.rs:15:27
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::shapes::base::{solve_quadratic, Hitable};
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Matrix4x4f`
[INFO] [stdout]  --> src/shapes/base.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     Matrix4x4f,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Matrix4x4f`, `dot_vn`
[INFO] [stdout]   --> src/shapes/sphere2.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout] 8  |     Matrix4x4f,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 9  |     dot_vv,
[INFO] [stdout] 10 |     dot_vn,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Read`, `self`
[INFO] [stdout]  --> src/main.rs:2:15
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::io::{self, Read};
[INFO] [stdout]   |               ^^^^  ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Matrix4x4f`, `Normal3f`, `dot_vn`, `dot_vv`
[INFO] [stdout]  --> src/aabb.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     Normal3f,
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 3 |     Point3f,
[INFO] [stdout] 4 |     Matrix4x4f,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 5 |     dot_vv,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 6 |     dot_vn,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::core::Point3f`
[INFO] [stdout]  --> src/bvh_tree.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::core::Point3f;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize`, `Serialize`
[INFO] [stdout]  --> src/material2.rs:3:13
[INFO] [stdout]   |
[INFO] [stdout] 3 | use serde::{Deserialize, Serialize};
[INFO] [stdout]   |             ^^^^^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Normal3f`, `Point3f`
[INFO] [stdout]   --> src/material2.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout] 8  |     Point3f,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 9  |     Vector3f,
[INFO] [stdout] 10 |     Normal3f,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::aabb::AABB`
[INFO] [stdout]  --> src/scene2.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::aabb::AABB;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Normal3f`, `Point3f`
[INFO] [stdout]  --> src/scene2.rs:5:19
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::core::{Point3f, Normal3f, Colour};
[INFO] [stdout]   |                   ^^^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Normal3f`, `gen_rotate_x`, `gen_rotate_y`, `gen_rotate_z`
[INFO] [stdout]   --> src/scene_generator.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout] 9  |     Normal3f,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |     gen_rotate_x,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 15 |     gen_rotate_y,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 16 |     gen_rotate_z,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `dot_vv`
[INFO] [stdout]  --> src/shapes/cylinder.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     dot_vv,
[INFO] [stdout]   |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `solve_quadratic`
[INFO] [stdout]   --> src/shapes/sphere.rs:15:27
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::shapes::base::{solve_quadratic, Hitable};
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Matrix4x4f`
[INFO] [stdout]  --> src/shapes/base.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     Matrix4x4f,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Matrix4x4f`, `dot_vn`
[INFO] [stdout]   --> src/shapes/sphere2.rs:8:5
[INFO] [stdout]    |
[INFO] [stdout] 8  |     Matrix4x4f,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 9  |     dot_vv,
[INFO] [stdout] 10 |     dot_vn,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::thread_rng`
[INFO] [stdout]   --> src/vector.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use rand::thread_rng;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]   --> src/vector.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use rand::Rng;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Normal3f`
[INFO] [stdout]  --> src/textures/base.rs:1:28
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::core::{Point3f, Normal3f, Colour};
[INFO] [stdout]   |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Normal3f`
[INFO] [stdout]  --> src/textures/solid_colour.rs:1:28
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::core::{Point3f, Normal3f, Colour};
[INFO] [stdout]   |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Scene`
[INFO] [stdout]   --> src/main.rs:42:21
[INFO] [stdout]    |
[INFO] [stdout] 42 | use crate::scene2::{Scene, calculate_colour};
[INFO] [stdout]    |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 3 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/primative.rs:174:45
[INFO] [stdout]     |
[INFO] [stdout] 174 |         let interaction = primative.collide(ray, 0.0, 10.0).unwrap();
[INFO] [stdout]     |                                     ------- ^^^
[INFO] [stdout]     |                                     |       |
[INFO] [stdout]     |                                     |       expected `&Ray`, found `Ray`
[INFO] [stdout]     |                                     |       help: consider borrowing here: `&ray`
[INFO] [stdout]     |                                     arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/primative.rs:19:12
[INFO] [stdout]     |
[INFO] [stdout] 19  |     pub fn collide(self, ray: &Ray, t_min: f32, t_max: f32) -> Option<Interaction> {
[INFO] [stdout]     |            ^^^^^^^       ---------
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/primative.rs:208:60
[INFO] [stdout]     |
[INFO] [stdout] 208 |                 let interaction_result = primative.collide(ray, 0.0, 10.0);
[INFO] [stdout]     |                                                    ------- ^^^
[INFO] [stdout]     |                                                    |       |
[INFO] [stdout]     |                                                    |       expected `&Ray`, found `Ray`
[INFO] [stdout]     |                                                    |       help: consider borrowing here: `&ray`
[INFO] [stdout]     |                                                    arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/primative.rs:19:12
[INFO] [stdout]     |
[INFO] [stdout] 19  |     pub fn collide(self, ray: &Ray, t_min: f32, t_max: f32) -> Option<Interaction> {
[INFO] [stdout]     |            ^^^^^^^       ---------
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/primative.rs:267:60
[INFO] [stdout]     |
[INFO] [stdout] 267 |                 let interaction_result = primative.collide(ray, 0.0, 10.0);
[INFO] [stdout]     |                                                    ------- ^^^
[INFO] [stdout]     |                                                    |       |
[INFO] [stdout]     |                                                    |       expected `&Ray`, found `Ray`
[INFO] [stdout]     |                                                    |       help: consider borrowing here: `&ray`
[INFO] [stdout]     |                                                    arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/primative.rs:19:12
[INFO] [stdout]     |
[INFO] [stdout] 19  |     pub fn collide(self, ray: &Ray, t_min: f32, t_max: f32) -> Option<Interaction> {
[INFO] [stdout]     |            ^^^^^^^       ---------
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/primative.rs:332:60
[INFO] [stdout]     |
[INFO] [stdout] 332 |                 let interaction_result = primative.collide(ray, 0.0, 10.0);
[INFO] [stdout]     |                                                    ------- ^^^
[INFO] [stdout]     |                                                    |       |
[INFO] [stdout]     |                                                    |       expected `&Ray`, found `Ray`
[INFO] [stdout]     |                                                    |       help: consider borrowing here: `&ray`
[INFO] [stdout]     |                                                    arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/primative.rs:19:12
[INFO] [stdout]     |
[INFO] [stdout] 19  |     pub fn collide(self, ray: &Ray, t_min: f32, t_max: f32) -> Option<Interaction> {
[INFO] [stdout]     |            ^^^^^^^       ---------
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 3 arguments but 5 arguments were supplied
[INFO] [stdout]    --> src/shapes/sphere2.rs:139:36
[INFO] [stdout]     |
[INFO] [stdout] 139 |           let result_option = sphere.collide(
[INFO] [stdout]     |                                      ^^^^^^^
[INFO] [stdout] 140 | /             Ray {
[INFO] [stdout] 141 | |                 a: Point3f {
[INFO] [stdout] 142 | |                     x:  0.0,
[INFO] [stdout] 143 | |                     y:  0.0,
[INFO] [stdout] ...   |
[INFO] [stdout] 151 | |                 time: 0.0,
[INFO] [stdout] 152 | |             },
[INFO] [stdout]     | |_____________- expected `&Ray`, found `Ray`
[INFO] [stdout] 153 |               indentity(),
[INFO] [stdout]     |               ----------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout] 154 |               indentity(),
[INFO] [stdout]     |               ----------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/shapes/base.rs:32:8
[INFO] [stdout]     |
[INFO] [stdout] 32  |     fn collide(
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 140 ~             &Ray {
[INFO] [stdout] 141 +                 a: Point3f {
[INFO] [stdout] 142 +                     x:  0.0,
[INFO] [stdout] 143 +                     y:  0.0,
[INFO] [stdout] 144 +                     z: -5.0,
[INFO] [stdout] 145 +                 },
[INFO] [stdout] 146 +                 b: Vector3f {
[INFO] [stdout] 147 +                     x: 0.0,
[INFO] [stdout] 148 +                     y: 0.0,
[INFO] [stdout] 149 +                     z: 1.0,
[INFO] [stdout] 150 +                 },
[INFO] [stdout] 151 +                 time: 0.0,
[INFO] [stdout] 152 ~             },
[INFO] [stdout]     |
[INFO] [stdout] help: remove the extra arguments
[INFO] [stdout]     |
[INFO] [stdout] 140 -             Ray {
[INFO] [stdout] 141 -                 a: Point3f {
[INFO] [stdout] 142 -                     x:  0.0,
[INFO] [stdout] 143 -                     y:  0.0,
[INFO] [stdout] 144 -                     z: -5.0,
[INFO] [stdout] 145 -                 },
[INFO] [stdout] 146 -                 b: Vector3f {
[INFO] [stdout] 147 -                     x: 0.0,
[INFO] [stdout] 148 -                     y: 0.0,
[INFO] [stdout] 149 -                     z: 1.0,
[INFO] [stdout] 150 -                 },
[INFO] [stdout] 151 -                 time: 0.0,
[INFO] [stdout] 152 -             },
[INFO] [stdout] 140 +             /* &Ray */,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 3 arguments but 5 arguments were supplied
[INFO] [stdout]    --> src/shapes/sphere2.rs:173:36
[INFO] [stdout]     |
[INFO] [stdout] 173 |           let result_option = sphere.collide(
[INFO] [stdout]     |                                      ^^^^^^^
[INFO] [stdout] 174 | /             Ray {
[INFO] [stdout] 175 | |                 a: Point3f {
[INFO] [stdout] 176 | |                     x:  0.0,
[INFO] [stdout] 177 | |                     y:  1.0,
[INFO] [stdout] ...   |
[INFO] [stdout] 185 | |                 time: 0.0,
[INFO] [stdout] 186 | |             },
[INFO] [stdout]     | |_____________- expected `&Ray`, found `Ray`
[INFO] [stdout] 187 |               indentity(),
[INFO] [stdout]     |               ----------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout] 188 |               indentity(),
[INFO] [stdout]     |               ----------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/shapes/base.rs:32:8
[INFO] [stdout]     |
[INFO] [stdout] 32  |     fn collide(
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 174 ~             &Ray {
[INFO] [stdout] 175 +                 a: Point3f {
[INFO] [stdout] 176 +                     x:  0.0,
[INFO] [stdout] 177 +                     y:  1.0,
[INFO] [stdout] 178 +                     z: -5.0,
[INFO] [stdout] 179 +                 },
[INFO] [stdout] 180 +                 b: Vector3f {
[INFO] [stdout] 181 +                     x: 0.0,
[INFO] [stdout] 182 +                     y: 0.0,
[INFO] [stdout] 183 +                     z: 1.0,
[INFO] [stdout] 184 +                 },
[INFO] [stdout] 185 +                 time: 0.0,
[INFO] [stdout] 186 ~             },
[INFO] [stdout]     |
[INFO] [stdout] help: remove the extra arguments
[INFO] [stdout]     |
[INFO] [stdout] 174 -             Ray {
[INFO] [stdout] 175 -                 a: Point3f {
[INFO] [stdout] 176 -                     x:  0.0,
[INFO] [stdout] 177 -                     y:  1.0,
[INFO] [stdout] 178 -                     z: -5.0,
[INFO] [stdout] 179 -                 },
[INFO] [stdout] 180 -                 b: Vector3f {
[INFO] [stdout] 181 -                     x: 0.0,
[INFO] [stdout] 182 -                     y: 0.0,
[INFO] [stdout] 183 -                     z: 1.0,
[INFO] [stdout] 184 -                 },
[INFO] [stdout] 185 -                 time: 0.0,
[INFO] [stdout] 186 -             },
[INFO] [stdout] 174 +             /* &Ray */,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 3 arguments but 5 arguments were supplied
[INFO] [stdout]    --> src/shapes/sphere2.rs:205:36
[INFO] [stdout]     |
[INFO] [stdout] 205 |           let result_option = sphere.collide(
[INFO] [stdout]     |                                      ^^^^^^^
[INFO] [stdout] 206 | /             Ray {
[INFO] [stdout] 207 | |                 a: Point3f {
[INFO] [stdout] 208 | |                     x:  0.0,
[INFO] [stdout] 209 | |                     y:  2.0,
[INFO] [stdout] ...   |
[INFO] [stdout] 217 | |                 time: 0.0,
[INFO] [stdout] 218 | |             },
[INFO] [stdout]     | |_____________- expected `&Ray`, found `Ray`
[INFO] [stdout] 219 |               indentity(),
[INFO] [stdout]     |               ----------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout] 220 |               indentity(),
[INFO] [stdout]     |               ----------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/shapes/base.rs:32:8
[INFO] [stdout]     |
[INFO] [stdout] 32  |     fn collide(
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 206 ~             &Ray {
[INFO] [stdout] 207 +                 a: Point3f {
[INFO] [stdout] 208 +                     x:  0.0,
[INFO] [stdout] 209 +                     y:  2.0,
[INFO] [stdout] 210 +                     z: -5.0,
[INFO] [stdout] 211 +                 },
[INFO] [stdout] 212 +                 b: Vector3f {
[INFO] [stdout] 213 +                     x: 0.0,
[INFO] [stdout] 214 +                     y: 0.0,
[INFO] [stdout] 215 +                     z: 1.0,
[INFO] [stdout] 216 +                 },
[INFO] [stdout] 217 +                 time: 0.0,
[INFO] [stdout] 218 ~             },
[INFO] [stdout]     |
[INFO] [stdout] help: remove the extra arguments
[INFO] [stdout]     |
[INFO] [stdout] 206 -             Ray {
[INFO] [stdout] 207 -                 a: Point3f {
[INFO] [stdout] 208 -                     x:  0.0,
[INFO] [stdout] 209 -                     y:  2.0,
[INFO] [stdout] 210 -                     z: -5.0,
[INFO] [stdout] 211 -                 },
[INFO] [stdout] 212 -                 b: Vector3f {
[INFO] [stdout] 213 -                     x: 0.0,
[INFO] [stdout] 214 -                     y: 0.0,
[INFO] [stdout] 215 -                     z: 1.0,
[INFO] [stdout] 216 -                 },
[INFO] [stdout] 217 -                 time: 0.0,
[INFO] [stdout] 218 -             },
[INFO] [stdout] 206 +             /* &Ray */,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 3 arguments but 5 arguments were supplied
[INFO] [stdout]    --> src/shapes/sphere2.rs:239:36
[INFO] [stdout]     |
[INFO] [stdout] 239 |           let result_option = sphere.collide(
[INFO] [stdout]     |                                      ^^^^^^^
[INFO] [stdout] 240 | /             Ray {
[INFO] [stdout] 241 | |                 a: Point3f {
[INFO] [stdout] 242 | |                     x:  0.0,
[INFO] [stdout] 243 | |                     y:  0.0,
[INFO] [stdout] ...   |
[INFO] [stdout] 251 | |                 time: 0.0,
[INFO] [stdout] 252 | |             },
[INFO] [stdout]     | |_____________- expected `&Ray`, found `Ray`
[INFO] [stdout] 253 |               indentity(),
[INFO] [stdout]     |               ----------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout] 254 |               indentity(),
[INFO] [stdout]     |               ----------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/shapes/base.rs:32:8
[INFO] [stdout]     |
[INFO] [stdout] 32  |     fn collide(
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 240 ~             &Ray {
[INFO] [stdout] 241 +                 a: Point3f {
[INFO] [stdout] 242 +                     x:  0.0,
[INFO] [stdout] 243 +                     y:  0.0,
[INFO] [stdout] 244 +                     z:  0.0,
[INFO] [stdout] 245 +                 },
[INFO] [stdout] 246 +                 b: Vector3f {
[INFO] [stdout] 247 +                     x: 0.0,
[INFO] [stdout] 248 +                     y: 0.0,
[INFO] [stdout] 249 +                     z: 1.0,
[INFO] [stdout] 250 +                 },
[INFO] [stdout] 251 +                 time: 0.0,
[INFO] [stdout] 252 ~             },
[INFO] [stdout]     |
[INFO] [stdout] help: remove the extra arguments
[INFO] [stdout]     |
[INFO] [stdout] 240 -             Ray {
[INFO] [stdout] 241 -                 a: Point3f {
[INFO] [stdout] 242 -                     x:  0.0,
[INFO] [stdout] 243 -                     y:  0.0,
[INFO] [stdout] 244 -                     z:  0.0,
[INFO] [stdout] 245 -                 },
[INFO] [stdout] 246 -                 b: Vector3f {
[INFO] [stdout] 247 -                     x: 0.0,
[INFO] [stdout] 248 -                     y: 0.0,
[INFO] [stdout] 249 -                     z: 1.0,
[INFO] [stdout] 250 -                 },
[INFO] [stdout] 251 -                 time: 0.0,
[INFO] [stdout] 252 -             },
[INFO] [stdout] 240 +             /* &Ray */,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 3 arguments but 5 arguments were supplied
[INFO] [stdout]    --> src/shapes/sphere2.rs:309:36
[INFO] [stdout]     |
[INFO] [stdout] 309 |         let result_option = sphere.collide(
[INFO] [stdout]     |                                    ^^^^^^^
[INFO] [stdout] 310 |             ray,
[INFO] [stdout]     |             --- expected `&Ray`, found `Ray`
[INFO] [stdout] 311 |             transform.m,
[INFO] [stdout]     |             ----------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout] 312 |             transform.m_inv,
[INFO] [stdout]     |             --------------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/shapes/base.rs:32:8
[INFO] [stdout]     |
[INFO] [stdout] 32  |     fn collide(
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 310 |             &ray,
[INFO] [stdout]     |             ~~~~
[INFO] [stdout] help: remove the extra arguments
[INFO] [stdout]     |
[INFO] [stdout] 310 -             ray,
[INFO] [stdout] 310 +             /* &Ray */,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 3 arguments but 5 arguments were supplied
[INFO] [stdout]    --> src/shapes/sphere2.rs:335:36
[INFO] [stdout]     |
[INFO] [stdout] 335 |           let result_option = sphere.collide(
[INFO] [stdout]     |                                      ^^^^^^^
[INFO] [stdout] 336 | /             Ray {
[INFO] [stdout] 337 | |                 a: Point3f {
[INFO] [stdout] 338 | |                     x:  0.0,
[INFO] [stdout] 339 | |                     y:  0.0,
[INFO] [stdout] ...   |
[INFO] [stdout] 347 | |                 time: 0.0,
[INFO] [stdout] 348 | |             },
[INFO] [stdout]     | |_____________- expected `&Ray`, found `Ray`
[INFO] [stdout] 349 |               transform.m,
[INFO] [stdout]     |               ----------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout] 350 |               transform.m_inv,
[INFO] [stdout]     |               --------------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/shapes/base.rs:32:8
[INFO] [stdout]     |
[INFO] [stdout] 32  |     fn collide(
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 336 ~             &Ray {
[INFO] [stdout] 337 +                 a: Point3f {
[INFO] [stdout] 338 +                     x:  0.0,
[INFO] [stdout] 339 +                     y:  0.0,
[INFO] [stdout] 340 +                     z: -5.0,
[INFO] [stdout] 341 +                 },
[INFO] [stdout] 342 +                 b: Vector3f {
[INFO] [stdout] 343 +                     x: 0.0,
[INFO] [stdout] 344 +                     y: 0.0,
[INFO] [stdout] 345 +                     z: 1.0,
[INFO] [stdout] 346 +                 },
[INFO] [stdout] 347 +                 time: 0.0,
[INFO] [stdout] 348 ~             },
[INFO] [stdout]     |
[INFO] [stdout] help: remove the extra arguments
[INFO] [stdout]     |
[INFO] [stdout] 336 -             Ray {
[INFO] [stdout] 337 -                 a: Point3f {
[INFO] [stdout] 338 -                     x:  0.0,
[INFO] [stdout] 339 -                     y:  0.0,
[INFO] [stdout] 340 -                     z: -5.0,
[INFO] [stdout] 341 -                 },
[INFO] [stdout] 342 -                 b: Vector3f {
[INFO] [stdout] 343 -                     x: 0.0,
[INFO] [stdout] 344 -                     y: 0.0,
[INFO] [stdout] 345 -                     z: 1.0,
[INFO] [stdout] 346 -                 },
[INFO] [stdout] 347 -                 time: 0.0,
[INFO] [stdout] 348 -             },
[INFO] [stdout] 336 +             /* &Ray */,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 3 arguments but 5 arguments were supplied
[INFO] [stdout]    --> src/shapes/sphere2.rs:373:36
[INFO] [stdout]     |
[INFO] [stdout] 373 |           let result_option = sphere.collide(
[INFO] [stdout]     |                                      ^^^^^^^
[INFO] [stdout] 374 | /             Ray {
[INFO] [stdout] 375 | |                 a: Point3f {
[INFO] [stdout] 376 | |                     x:  -5.0,
[INFO] [stdout] 377 | |                     y:   0.0,
[INFO] [stdout] ...   |
[INFO] [stdout] 385 | |                 time: 0.0,
[INFO] [stdout] 386 | |             },
[INFO] [stdout]     | |_____________- expected `&Ray`, found `Ray`
[INFO] [stdout] 387 |               transform.m,
[INFO] [stdout]     |               ----------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout] 388 |               transform.m_inv,
[INFO] [stdout]     |               --------------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/shapes/base.rs:32:8
[INFO] [stdout]     |
[INFO] [stdout] 32  |     fn collide(
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 374 ~             &Ray {
[INFO] [stdout] 375 +                 a: Point3f {
[INFO] [stdout] 376 +                     x:  -5.0,
[INFO] [stdout] 377 +                     y:   0.0,
[INFO] [stdout] 378 +                     z:   0.0,
[INFO] [stdout] 379 +                 },
[INFO] [stdout] 380 +                 b: Vector3f {
[INFO] [stdout] 381 +                     x: 1.0,
[INFO] [stdout] 382 +                     y: 0.0,
[INFO] [stdout] 383 +                     z: 0.0,
[INFO] [stdout] 384 +                 },
[INFO] [stdout] 385 +                 time: 0.0,
[INFO] [stdout] 386 ~             },
[INFO] [stdout]     |
[INFO] [stdout] help: remove the extra arguments
[INFO] [stdout]     |
[INFO] [stdout] 374 -             Ray {
[INFO] [stdout] 375 -                 a: Point3f {
[INFO] [stdout] 376 -                     x:  -5.0,
[INFO] [stdout] 377 -                     y:   0.0,
[INFO] [stdout] 378 -                     z:   0.0,
[INFO] [stdout] 379 -                 },
[INFO] [stdout] 380 -                 b: Vector3f {
[INFO] [stdout] 381 -                     x: 1.0,
[INFO] [stdout] 382 -                     y: 0.0,
[INFO] [stdout] 383 -                     z: 0.0,
[INFO] [stdout] 384 -                 },
[INFO] [stdout] 385 -                 time: 0.0,
[INFO] [stdout] 386 -             },
[INFO] [stdout] 374 +             /* &Ray */,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 3 arguments but 5 arguments were supplied
[INFO] [stdout]    --> src/shapes/sphere2.rs:405:36
[INFO] [stdout]     |
[INFO] [stdout] 405 |           let result_option = sphere.collide(
[INFO] [stdout]     |                                      ^^^^^^^
[INFO] [stdout] 406 | /             Ray {
[INFO] [stdout] 407 | |                 a: Point3f {
[INFO] [stdout] 408 | |                     x:  0.0,
[INFO] [stdout] 409 | |                     y:  0.0,
[INFO] [stdout] ...   |
[INFO] [stdout] 417 | |                 time: 0.0,
[INFO] [stdout] 418 | |             },
[INFO] [stdout]     | |_____________- expected `&Ray`, found `Ray`
[INFO] [stdout] 419 |               transform.m,
[INFO] [stdout]     |               ----------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout] 420 |               transform.m_inv,
[INFO] [stdout]     |               --------------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/shapes/base.rs:32:8
[INFO] [stdout]     |
[INFO] [stdout] 32  |     fn collide(
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 406 ~             &Ray {
[INFO] [stdout] 407 +                 a: Point3f {
[INFO] [stdout] 408 +                     x:  0.0,
[INFO] [stdout] 409 +                     y:  0.0,
[INFO] [stdout] 410 +                     z: -5.0,
[INFO] [stdout] 411 +                 },
[INFO] [stdout] 412 +                 b: Vector3f {
[INFO] [stdout] 413 +                     x: 0.0,
[INFO] [stdout] 414 +                     y: 0.0,
[INFO] [stdout] 415 +                     z: 1.0,
[INFO] [stdout] 416 +                 },
[INFO] [stdout] 417 +                 time: 0.0,
[INFO] [stdout] 418 ~             },
[INFO] [stdout]     |
[INFO] [stdout] help: remove the extra arguments
[INFO] [stdout]     |
[INFO] [stdout] 406 -             Ray {
[INFO] [stdout] 407 -                 a: Point3f {
[INFO] [stdout] 408 -                     x:  0.0,
[INFO] [stdout] 409 -                     y:  0.0,
[INFO] [stdout] 410 -                     z: -5.0,
[INFO] [stdout] 411 -                 },
[INFO] [stdout] 412 -                 b: Vector3f {
[INFO] [stdout] 413 -                     x: 0.0,
[INFO] [stdout] 414 -                     y: 0.0,
[INFO] [stdout] 415 -                     z: 1.0,
[INFO] [stdout] 416 -                 },
[INFO] [stdout] 417 -                 time: 0.0,
[INFO] [stdout] 418 -             },
[INFO] [stdout] 406 +             /* &Ray */,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 3 arguments but 5 arguments were supplied
[INFO] [stdout]    --> src/shapes/sphere2.rs:443:36
[INFO] [stdout]     |
[INFO] [stdout] 443 |           let result_option = sphere.collide(
[INFO] [stdout]     |                                      ^^^^^^^
[INFO] [stdout] 444 | /             Ray {
[INFO] [stdout] 445 | |                 a: Point3f {
[INFO] [stdout] 446 | |                     x: 0.0,
[INFO] [stdout] 447 | |                     y: 0.0,
[INFO] [stdout] ...   |
[INFO] [stdout] 455 | |                 time: 0.0,
[INFO] [stdout] 456 | |             },
[INFO] [stdout]     | |_____________- expected `&Ray`, found `Ray`
[INFO] [stdout] 457 |               transform.m,
[INFO] [stdout]     |               ----------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout] 458 |               transform.m_inv,
[INFO] [stdout]     |               --------------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/shapes/base.rs:32:8
[INFO] [stdout]     |
[INFO] [stdout] 32  |     fn collide(
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 444 ~             &Ray {
[INFO] [stdout] 445 +                 a: Point3f {
[INFO] [stdout] 446 +                     x: 0.0,
[INFO] [stdout] 447 +                     y: 0.0,
[INFO] [stdout] 448 +                     z: 0.0,
[INFO] [stdout] 449 +                 },
[INFO] [stdout] 450 +                 b: Vector3f {
[INFO] [stdout] 451 +                     x: 0.0,
[INFO] [stdout] 452 +                     y: 1.0,
[INFO] [stdout] 453 +                     z: 0.0,
[INFO] [stdout] 454 +                 },
[INFO] [stdout] 455 +                 time: 0.0,
[INFO] [stdout] 456 ~             },
[INFO] [stdout]     |
[INFO] [stdout] help: remove the extra arguments
[INFO] [stdout]     |
[INFO] [stdout] 444 -             Ray {
[INFO] [stdout] 445 -                 a: Point3f {
[INFO] [stdout] 446 -                     x: 0.0,
[INFO] [stdout] 447 -                     y: 0.0,
[INFO] [stdout] 448 -                     z: 0.0,
[INFO] [stdout] 449 -                 },
[INFO] [stdout] 450 -                 b: Vector3f {
[INFO] [stdout] 451 -                     x: 0.0,
[INFO] [stdout] 452 -                     y: 1.0,
[INFO] [stdout] 453 -                     z: 0.0,
[INFO] [stdout] 454 -                 },
[INFO] [stdout] 455 -                 time: 0.0,
[INFO] [stdout] 456 -             },
[INFO] [stdout] 444 +             /* &Ray */,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 3 arguments but 5 arguments were supplied
[INFO] [stdout]    --> src/shapes/sphere2.rs:494:36
[INFO] [stdout]     |
[INFO] [stdout] 494 |           let result_option = sphere.collide(
[INFO] [stdout]     |                                      ^^^^^^^
[INFO] [stdout] 495 | /             Ray {
[INFO] [stdout] 496 | |                 a: Point3f {
[INFO] [stdout] 497 | |                     x: 0.0,
[INFO] [stdout] 498 | |                     y: 0.0,
[INFO] [stdout] ...   |
[INFO] [stdout] 502 | |                 time: 0.0,
[INFO] [stdout] 503 | |             },
[INFO] [stdout]     | |_____________- expected `&Ray`, found `Ray`
[INFO] [stdout] 504 |               transform.m,
[INFO] [stdout]     |               ----------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout] 505 |               transform.m_inv,
[INFO] [stdout]     |               --------------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/shapes/base.rs:32:8
[INFO] [stdout]     |
[INFO] [stdout] 32  |     fn collide(
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 495 ~             &Ray {
[INFO] [stdout] 496 +                 a: Point3f {
[INFO] [stdout] 497 +                     x: 0.0,
[INFO] [stdout] 498 +                     y: 0.0,
[INFO] [stdout] 499 +                     z: 0.0,
[INFO] [stdout] 500 +                 },
[INFO] [stdout] 501 +                 b: look_at,
[INFO] [stdout] 502 +                 time: 0.0,
[INFO] [stdout] 503 ~             },
[INFO] [stdout]     |
[INFO] [stdout] help: remove the extra arguments
[INFO] [stdout]     |
[INFO] [stdout] 495 -             Ray {
[INFO] [stdout] 496 -                 a: Point3f {
[INFO] [stdout] 497 -                     x: 0.0,
[INFO] [stdout] 498 -                     y: 0.0,
[INFO] [stdout] 499 -                     z: 0.0,
[INFO] [stdout] 500 -                 },
[INFO] [stdout] 501 -                 b: look_at,
[INFO] [stdout] 502 -                 time: 0.0,
[INFO] [stdout] 503 -             },
[INFO] [stdout] 495 +             /* &Ray */,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 10 previous errors; 7 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0061`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rust_ray_tracing` due to 11 previous errors; 7 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error[E0061]: this method takes 3 arguments but 5 arguments were supplied
[INFO] [stdout]    --> src/shapes/sphere2.rs:139:36
[INFO] [stdout]     |
[INFO] [stdout] 139 |           let result_option = sphere.collide(
[INFO] [stdout]     |                                      ^^^^^^^
[INFO] [stdout] 140 | /             Ray {
[INFO] [stdout] 141 | |                 a: Point3f {
[INFO] [stdout] 142 | |                     x:  0.0,
[INFO] [stdout] 143 | |                     y:  0.0,
[INFO] [stdout] ...   |
[INFO] [stdout] 151 | |                 time: 0.0,
[INFO] [stdout] 152 | |             },
[INFO] [stdout]     | |_____________- expected `&Ray`, found `Ray`
[INFO] [stdout] 153 |               indentity(),
[INFO] [stdout]     |               ----------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout] 154 |               indentity(),
[INFO] [stdout]     |               ----------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/shapes/base.rs:32:8
[INFO] [stdout]     |
[INFO] [stdout] 32  |     fn collide(
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 140 ~             &Ray {
[INFO] [stdout] 141 +                 a: Point3f {
[INFO] [stdout] 142 +                     x:  0.0,
[INFO] [stdout] 143 +                     y:  0.0,
[INFO] [stdout] 144 +                     z: -5.0,
[INFO] [stdout] 145 +                 },
[INFO] [stdout] 146 +                 b: Vector3f {
[INFO] [stdout] 147 +                     x: 0.0,
[INFO] [stdout] 148 +                     y: 0.0,
[INFO] [stdout] 149 +                     z: 1.0,
[INFO] [stdout] 150 +                 },
[INFO] [stdout] 151 +                 time: 0.0,
[INFO] [stdout] 152 ~             },
[INFO] [stdout]     |
[INFO] [stdout] help: remove the extra arguments
[INFO] [stdout]     |
[INFO] [stdout] 140 -             Ray {
[INFO] [stdout] 141 -                 a: Point3f {
[INFO] [stdout] 142 -                     x:  0.0,
[INFO] [stdout] 143 -                     y:  0.0,
[INFO] [stdout] 144 -                     z: -5.0,
[INFO] [stdout] 145 -                 },
[INFO] [stdout] 146 -                 b: Vector3f {
[INFO] [stdout] 147 -                     x: 0.0,
[INFO] [stdout] 148 -                     y: 0.0,
[INFO] [stdout] 149 -                     z: 1.0,
[INFO] [stdout] 150 -                 },
[INFO] [stdout] 151 -                 time: 0.0,
[INFO] [stdout] 152 -             },
[INFO] [stdout] 140 +             /* &Ray */,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 3 arguments but 5 arguments were supplied
[INFO] [stdout]    --> src/shapes/sphere2.rs:173:36
[INFO] [stdout]     |
[INFO] [stdout] 173 |           let result_option = sphere.collide(
[INFO] [stdout]     |                                      ^^^^^^^
[INFO] [stdout] 174 | /             Ray {
[INFO] [stdout] 175 | |                 a: Point3f {
[INFO] [stdout] 176 | |                     x:  0.0,
[INFO] [stdout] 177 | |                     y:  1.0,
[INFO] [stdout] ...   |
[INFO] [stdout] 185 | |                 time: 0.0,
[INFO] [stdout] 186 | |             },
[INFO] [stdout]     | |_____________- expected `&Ray`, found `Ray`
[INFO] [stdout] 187 |               indentity(),
[INFO] [stdout]     |               ----------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout] 188 |               indentity(),
[INFO] [stdout]     |               ----------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/shapes/base.rs:32:8
[INFO] [stdout]     |
[INFO] [stdout] 32  |     fn collide(
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 174 ~             &Ray {
[INFO] [stdout] 175 +                 a: Point3f {
[INFO] [stdout] 176 +                     x:  0.0,
[INFO] [stdout] 177 +                     y:  1.0,
[INFO] [stdout] 178 +                     z: -5.0,
[INFO] [stdout] 179 +                 },
[INFO] [stdout] 180 +                 b: Vector3f {
[INFO] [stdout] 181 +                     x: 0.0,
[INFO] [stdout] 182 +                     y: 0.0,
[INFO] [stdout] 183 +                     z: 1.0,
[INFO] [stdout] 184 +                 },
[INFO] [stdout] 185 +                 time: 0.0,
[INFO] [stdout] 186 ~             },
[INFO] [stdout]     |
[INFO] [stdout] help: remove the extra arguments
[INFO] [stdout]     |
[INFO] [stdout] 174 -             Ray {
[INFO] [stdout] 175 -                 a: Point3f {
[INFO] [stdout] 176 -                     x:  0.0,
[INFO] [stdout] 177 -                     y:  1.0,
[INFO] [stdout] 178 -                     z: -5.0,
[INFO] [stdout] 179 -                 },
[INFO] [stdout] 180 -                 b: Vector3f {
[INFO] [stdout] 181 -                     x: 0.0,
[INFO] [stdout] 182 -                     y: 0.0,
[INFO] [stdout] 183 -                     z: 1.0,
[INFO] [stdout] 184 -                 },
[INFO] [stdout] 185 -                 time: 0.0,
[INFO] [stdout] 186 -             },
[INFO] [stdout] 174 +             /* &Ray */,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 3 arguments but 5 arguments were supplied
[INFO] [stdout]    --> src/shapes/sphere2.rs:205:36
[INFO] [stdout]     |
[INFO] [stdout] 205 |           let result_option = sphere.collide(
[INFO] [stdout]     |                                      ^^^^^^^
[INFO] [stdout] 206 | /             Ray {
[INFO] [stdout] 207 | |                 a: Point3f {
[INFO] [stdout] 208 | |                     x:  0.0,
[INFO] [stdout] 209 | |                     y:  2.0,
[INFO] [stdout] ...   |
[INFO] [stdout] 217 | |                 time: 0.0,
[INFO] [stdout] 218 | |             },
[INFO] [stdout]     | |_____________- expected `&Ray`, found `Ray`
[INFO] [stdout] 219 |               indentity(),
[INFO] [stdout]     |               ----------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout] 220 |               indentity(),
[INFO] [stdout]     |               ----------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/shapes/base.rs:32:8
[INFO] [stdout]     |
[INFO] [stdout] 32  |     fn collide(
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 206 ~             &Ray {
[INFO] [stdout] 207 +                 a: Point3f {
[INFO] [stdout] 208 +                     x:  0.0,
[INFO] [stdout] 209 +                     y:  2.0,
[INFO] [stdout] 210 +                     z: -5.0,
[INFO] [stdout] 211 +                 },
[INFO] [stdout] 212 +                 b: Vector3f {
[INFO] [stdout] 213 +                     x: 0.0,
[INFO] [stdout] 214 +                     y: 0.0,
[INFO] [stdout] 215 +                     z: 1.0,
[INFO] [stdout] 216 +                 },
[INFO] [stdout] 217 +                 time: 0.0,
[INFO] [stdout] 218 ~             },
[INFO] [stdout]     |
[INFO] [stdout] help: remove the extra arguments
[INFO] [stdout]     |
[INFO] [stdout] 206 -             Ray {
[INFO] [stdout] 207 -                 a: Point3f {
[INFO] [stdout] 208 -                     x:  0.0,
[INFO] [stdout] 209 -                     y:  2.0,
[INFO] [stdout] 210 -                     z: -5.0,
[INFO] [stdout] 211 -                 },
[INFO] [stdout] 212 -                 b: Vector3f {
[INFO] [stdout] 213 -                     x: 0.0,
[INFO] [stdout] 214 -                     y: 0.0,
[INFO] [stdout] 215 -                     z: 1.0,
[INFO] [stdout] 216 -                 },
[INFO] [stdout] 217 -                 time: 0.0,
[INFO] [stdout] 218 -             },
[INFO] [stdout] 206 +             /* &Ray */,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 3 arguments but 5 arguments were supplied
[INFO] [stdout]    --> src/shapes/sphere2.rs:239:36
[INFO] [stdout]     |
[INFO] [stdout] 239 |           let result_option = sphere.collide(
[INFO] [stdout]     |                                      ^^^^^^^
[INFO] [stdout] 240 | /             Ray {
[INFO] [stdout] 241 | |                 a: Point3f {
[INFO] [stdout] 242 | |                     x:  0.0,
[INFO] [stdout] 243 | |                     y:  0.0,
[INFO] [stdout] ...   |
[INFO] [stdout] 251 | |                 time: 0.0,
[INFO] [stdout] 252 | |             },
[INFO] [stdout]     | |_____________- expected `&Ray`, found `Ray`
[INFO] [stdout] 253 |               indentity(),
[INFO] [stdout]     |               ----------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout] 254 |               indentity(),
[INFO] [stdout]     |               ----------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/shapes/base.rs:32:8
[INFO] [stdout]     |
[INFO] [stdout] 32  |     fn collide(
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 240 ~             &Ray {
[INFO] [stdout] 241 +                 a: Point3f {
[INFO] [stdout] 242 +                     x:  0.0,
[INFO] [stdout] 243 +                     y:  0.0,
[INFO] [stdout] 244 +                     z:  0.0,
[INFO] [stdout] 245 +                 },
[INFO] [stdout] 246 +                 b: Vector3f {
[INFO] [stdout] 247 +                     x: 0.0,
[INFO] [stdout] 248 +                     y: 0.0,
[INFO] [stdout] 249 +                     z: 1.0,
[INFO] [stdout] 250 +                 },
[INFO] [stdout] 251 +                 time: 0.0,
[INFO] [stdout] 252 ~             },
[INFO] [stdout]     |
[INFO] [stdout] help: remove the extra arguments
[INFO] [stdout]     |
[INFO] [stdout] 240 -             Ray {
[INFO] [stdout] 241 -                 a: Point3f {
[INFO] [stdout] 242 -                     x:  0.0,
[INFO] [stdout] 243 -                     y:  0.0,
[INFO] [stdout] 244 -                     z:  0.0,
[INFO] [stdout] 245 -                 },
[INFO] [stdout] 246 -                 b: Vector3f {
[INFO] [stdout] 247 -                     x: 0.0,
[INFO] [stdout] 248 -                     y: 0.0,
[INFO] [stdout] 249 -                     z: 1.0,
[INFO] [stdout] 250 -                 },
[INFO] [stdout] 251 -                 time: 0.0,
[INFO] [stdout] 252 -             },
[INFO] [stdout] 240 +             /* &Ray */,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 3 arguments but 5 arguments were supplied
[INFO] [stdout]    --> src/shapes/sphere2.rs:309:36
[INFO] [stdout]     |
[INFO] [stdout] 309 |         let result_option = sphere.collide(
[INFO] [stdout]     |                                    ^^^^^^^
[INFO] [stdout] 310 |             ray,
[INFO] [stdout]     |             --- expected `&Ray`, found `Ray`
[INFO] [stdout] 311 |             transform.m,
[INFO] [stdout]     |             ----------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout] 312 |             transform.m_inv,
[INFO] [stdout]     |             --------------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/shapes/base.rs:32:8
[INFO] [stdout]     |
[INFO] [stdout] 32  |     fn collide(
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 310 |             &ray,
[INFO] [stdout]     |             ~~~~
[INFO] [stdout] help: remove the extra arguments
[INFO] [stdout]     |
[INFO] [stdout] 310 -             ray,
[INFO] [stdout] 310 +             /* &Ray */,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 3 arguments but 5 arguments were supplied
[INFO] [stdout]    --> src/shapes/sphere2.rs:335:36
[INFO] [stdout]     |
[INFO] [stdout] 335 |           let result_option = sphere.collide(
[INFO] [stdout]     |                                      ^^^^^^^
[INFO] [stdout] 336 | /             Ray {
[INFO] [stdout] 337 | |                 a: Point3f {
[INFO] [stdout] 338 | |                     x:  0.0,
[INFO] [stdout] 339 | |                     y:  0.0,
[INFO] [stdout] ...   |
[INFO] [stdout] 347 | |                 time: 0.0,
[INFO] [stdout] 348 | |             },
[INFO] [stdout]     | |_____________- expected `&Ray`, found `Ray`
[INFO] [stdout] 349 |               transform.m,
[INFO] [stdout]     |               ----------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout] 350 |               transform.m_inv,
[INFO] [stdout]     |               --------------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/shapes/base.rs:32:8
[INFO] [stdout]     |
[INFO] [stdout] 32  |     fn collide(
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 336 ~             &Ray {
[INFO] [stdout] 337 +                 a: Point3f {
[INFO] [stdout] 338 +                     x:  0.0,
[INFO] [stdout] 339 +                     y:  0.0,
[INFO] [stdout] 340 +                     z: -5.0,
[INFO] [stdout] 341 +                 },
[INFO] [stdout] 342 +                 b: Vector3f {
[INFO] [stdout] 343 +                     x: 0.0,
[INFO] [stdout] 344 +                     y: 0.0,
[INFO] [stdout] 345 +                     z: 1.0,
[INFO] [stdout] 346 +                 },
[INFO] [stdout] 347 +                 time: 0.0,
[INFO] [stdout] 348 ~             },
[INFO] [stdout]     |
[INFO] [stdout] help: remove the extra arguments
[INFO] [stdout]     |
[INFO] [stdout] 336 -             Ray {
[INFO] [stdout] 337 -                 a: Point3f {
[INFO] [stdout] 338 -                     x:  0.0,
[INFO] [stdout] 339 -                     y:  0.0,
[INFO] [stdout] 340 -                     z: -5.0,
[INFO] [stdout] 341 -                 },
[INFO] [stdout] 342 -                 b: Vector3f {
[INFO] [stdout] 343 -                     x: 0.0,
[INFO] [stdout] 344 -                     y: 0.0,
[INFO] [stdout] 345 -                     z: 1.0,
[INFO] [stdout] 346 -                 },
[INFO] [stdout] 347 -                 time: 0.0,
[INFO] [stdout] 348 -             },
[INFO] [stdout] 336 +             /* &Ray */,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 3 arguments but 5 arguments were supplied
[INFO] [stdout]    --> src/shapes/sphere2.rs:373:36
[INFO] [stdout]     |
[INFO] [stdout] 373 |           let result_option = sphere.collide(
[INFO] [stdout]     |                                      ^^^^^^^
[INFO] [stdout] 374 | /             Ray {
[INFO] [stdout] 375 | |                 a: Point3f {
[INFO] [stdout] 376 | |                     x:  -5.0,
[INFO] [stdout] 377 | |                     y:   0.0,
[INFO] [stdout] ...   |
[INFO] [stdout] 385 | |                 time: 0.0,
[INFO] [stdout] 386 | |             },
[INFO] [stdout]     | |_____________- expected `&Ray`, found `Ray`
[INFO] [stdout] 387 |               transform.m,
[INFO] [stdout]     |               ----------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout] 388 |               transform.m_inv,
[INFO] [stdout]     |               --------------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/shapes/base.rs:32:8
[INFO] [stdout]     |
[INFO] [stdout] 32  |     fn collide(
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 374 ~             &Ray {
[INFO] [stdout] 375 +                 a: Point3f {
[INFO] [stdout] 376 +                     x:  -5.0,
[INFO] [stdout] 377 +                     y:   0.0,
[INFO] [stdout] 378 +                     z:   0.0,
[INFO] [stdout] 379 +                 },
[INFO] [stdout] 380 +                 b: Vector3f {
[INFO] [stdout] 381 +                     x: 1.0,
[INFO] [stdout] 382 +                     y: 0.0,
[INFO] [stdout] 383 +                     z: 0.0,
[INFO] [stdout] 384 +                 },
[INFO] [stdout] 385 +                 time: 0.0,
[INFO] [stdout] 386 ~             },
[INFO] [stdout]     |
[INFO] [stdout] help: remove the extra arguments
[INFO] [stdout]     |
[INFO] [stdout] 374 -             Ray {
[INFO] [stdout] 375 -                 a: Point3f {
[INFO] [stdout] 376 -                     x:  -5.0,
[INFO] [stdout] 377 -                     y:   0.0,
[INFO] [stdout] 378 -                     z:   0.0,
[INFO] [stdout] 379 -                 },
[INFO] [stdout] 380 -                 b: Vector3f {
[INFO] [stdout] 381 -                     x: 1.0,
[INFO] [stdout] 382 -                     y: 0.0,
[INFO] [stdout] 383 -                     z: 0.0,
[INFO] [stdout] 384 -                 },
[INFO] [stdout] 385 -                 time: 0.0,
[INFO] [stdout] 386 -             },
[INFO] [stdout] 374 +             /* &Ray */,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 3 arguments but 5 arguments were supplied
[INFO] [stdout]    --> src/shapes/sphere2.rs:405:36
[INFO] [stdout]     |
[INFO] [stdout] 405 |           let result_option = sphere.collide(
[INFO] [stdout]     |                                      ^^^^^^^
[INFO] [stdout] 406 | /             Ray {
[INFO] [stdout] 407 | |                 a: Point3f {
[INFO] [stdout] 408 | |                     x:  0.0,
[INFO] [stdout] 409 | |                     y:  0.0,
[INFO] [stdout] ...   |
[INFO] [stdout] 417 | |                 time: 0.0,
[INFO] [stdout] 418 | |             },
[INFO] [stdout]     | |_____________- expected `&Ray`, found `Ray`
[INFO] [stdout] 419 |               transform.m,
[INFO] [stdout]     |               ----------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout] 420 |               transform.m_inv,
[INFO] [stdout]     |               --------------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/shapes/base.rs:32:8
[INFO] [stdout]     |
[INFO] [stdout] 32  |     fn collide(
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 406 ~             &Ray {
[INFO] [stdout] 407 +                 a: Point3f {
[INFO] [stdout] 408 +                     x:  0.0,
[INFO] [stdout] 409 +                     y:  0.0,
[INFO] [stdout] 410 +                     z: -5.0,
[INFO] [stdout] 411 +                 },
[INFO] [stdout] 412 +                 b: Vector3f {
[INFO] [stdout] 413 +                     x: 0.0,
[INFO] [stdout] 414 +                     y: 0.0,
[INFO] [stdout] 415 +                     z: 1.0,
[INFO] [stdout] 416 +                 },
[INFO] [stdout] 417 +                 time: 0.0,
[INFO] [stdout] 418 ~             },
[INFO] [stdout]     |
[INFO] [stdout] help: remove the extra arguments
[INFO] [stdout]     |
[INFO] [stdout] 406 -             Ray {
[INFO] [stdout] 407 -                 a: Point3f {
[INFO] [stdout] 408 -                     x:  0.0,
[INFO] [stdout] 409 -                     y:  0.0,
[INFO] [stdout] 410 -                     z: -5.0,
[INFO] [stdout] 411 -                 },
[INFO] [stdout] 412 -                 b: Vector3f {
[INFO] [stdout] 413 -                     x: 0.0,
[INFO] [stdout] 414 -                     y: 0.0,
[INFO] [stdout] 415 -                     z: 1.0,
[INFO] [stdout] 416 -                 },
[INFO] [stdout] 417 -                 time: 0.0,
[INFO] [stdout] 418 -             },
[INFO] [stdout] 406 +             /* &Ray */,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 3 arguments but 5 arguments were supplied
[INFO] [stdout]    --> src/shapes/sphere2.rs:443:36
[INFO] [stdout]     |
[INFO] [stdout] 443 |           let result_option = sphere.collide(
[INFO] [stdout]     |                                      ^^^^^^^
[INFO] [stdout] 444 | /             Ray {
[INFO] [stdout] 445 | |                 a: Point3f {
[INFO] [stdout] 446 | |                     x: 0.0,
[INFO] [stdout] 447 | |                     y: 0.0,
[INFO] [stdout] ...   |
[INFO] [stdout] 455 | |                 time: 0.0,
[INFO] [stdout] 456 | |             },
[INFO] [stdout]     | |_____________- expected `&Ray`, found `Ray`
[INFO] [stdout] 457 |               transform.m,
[INFO] [stdout]     |               ----------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout] 458 |               transform.m_inv,
[INFO] [stdout]     |               --------------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/shapes/base.rs:32:8
[INFO] [stdout]     |
[INFO] [stdout] 32  |     fn collide(
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 444 ~             &Ray {
[INFO] [stdout] 445 +                 a: Point3f {
[INFO] [stdout] 446 +                     x: 0.0,
[INFO] [stdout] 447 +                     y: 0.0,
[INFO] [stdout] 448 +                     z: 0.0,
[INFO] [stdout] 449 +                 },
[INFO] [stdout] 450 +                 b: Vector3f {
[INFO] [stdout] 451 +                     x: 0.0,
[INFO] [stdout] 452 +                     y: 1.0,
[INFO] [stdout] 453 +                     z: 0.0,
[INFO] [stdout] 454 +                 },
[INFO] [stdout] 455 +                 time: 0.0,
[INFO] [stdout] 456 ~             },
[INFO] [stdout]     |
[INFO] [stdout] help: remove the extra arguments
[INFO] [stdout]     |
[INFO] [stdout] 444 -             Ray {
[INFO] [stdout] 445 -                 a: Point3f {
[INFO] [stdout] 446 -                     x: 0.0,
[INFO] [stdout] 447 -                     y: 0.0,
[INFO] [stdout] 448 -                     z: 0.0,
[INFO] [stdout] 449 -                 },
[INFO] [stdout] 450 -                 b: Vector3f {
[INFO] [stdout] 451 -                     x: 0.0,
[INFO] [stdout] 452 -                     y: 1.0,
[INFO] [stdout] 453 -                     z: 0.0,
[INFO] [stdout] 454 -                 },
[INFO] [stdout] 455 -                 time: 0.0,
[INFO] [stdout] 456 -             },
[INFO] [stdout] 444 +             /* &Ray */,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 3 arguments but 5 arguments were supplied
[INFO] [stdout]    --> src/shapes/sphere2.rs:494:36
[INFO] [stdout]     |
[INFO] [stdout] 494 |           let result_option = sphere.collide(
[INFO] [stdout]     |                                      ^^^^^^^
[INFO] [stdout] 495 | /             Ray {
[INFO] [stdout] 496 | |                 a: Point3f {
[INFO] [stdout] 497 | |                     x: 0.0,
[INFO] [stdout] 498 | |                     y: 0.0,
[INFO] [stdout] ...   |
[INFO] [stdout] 502 | |                 time: 0.0,
[INFO] [stdout] 503 | |             },
[INFO] [stdout]     | |_____________- expected `&Ray`, found `Ray`
[INFO] [stdout] 504 |               transform.m,
[INFO] [stdout]     |               ----------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout] 505 |               transform.m_inv,
[INFO] [stdout]     |               --------------- unexpected argument of type `Matrix4x4<f32>`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/shapes/base.rs:32:8
[INFO] [stdout]     |
[INFO] [stdout] 32  |     fn collide(
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 495 ~             &Ray {
[INFO] [stdout] 496 +                 a: Point3f {
[INFO] [stdout] 497 +                     x: 0.0,
[INFO] [stdout] 498 +                     y: 0.0,
[INFO] [stdout] 499 +                     z: 0.0,
[INFO] [stdout] 500 +                 },
[INFO] [stdout] 501 +                 b: look_at,
[INFO] [stdout] 502 +                 time: 0.0,
[INFO] [stdout] 503 ~             },
[INFO] [stdout]     |
[INFO] [stdout] help: remove the extra arguments
[INFO] [stdout]     |
[INFO] [stdout] 495 -             Ray {
[INFO] [stdout] 496 -                 a: Point3f {
[INFO] [stdout] 497 -                     x: 0.0,
[INFO] [stdout] 498 -                     y: 0.0,
[INFO] [stdout] 499 -                     z: 0.0,
[INFO] [stdout] 500 -                 },
[INFO] [stdout] 501 -                 b: look_at,
[INFO] [stdout] 502 -                 time: 0.0,
[INFO] [stdout] 503 -             },
[INFO] [stdout] 495 +             /* &Ray */,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ShapeTrait`
[INFO] [stdout]  --> src/bvh_tree.rs:8:40
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::shapes::base::{Interaction, ShapeTrait};
[INFO] [stdout]   |                                        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ShapeTrait`
[INFO] [stdout]   --> src/primative.rs:89:44
[INFO] [stdout]    |
[INFO] [stdout] 89 |     use crate::shapes::base::{Interaction, ShapeTrait};
[INFO] [stdout]    |                                            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ShapeTrait`
[INFO] [stdout]  --> src/scene2.rs:3:40
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::shapes::base::{Interaction, ShapeTrait};
[INFO] [stdout]   |                                        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 14 previous errors; 20 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0061, E0308.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0061`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rust_ray_tracing` due to 15 previous errors; 20 warnings emitted
[INFO] [stdout] warning: 5 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 4 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 5 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 4 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "fd1d0b8897faec78b1897ee097c039b161996441d55f8fc08f9a19a305a0729d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fd1d0b8897faec78b1897ee097c039b161996441d55f8fc08f9a19a305a0729d", kill_on_drop: false }`
[INFO] [stdout] fd1d0b8897faec78b1897ee097c039b161996441d55f8fc08f9a19a305a0729d
