[INFO] cloning repository https://github.com/sidereior/PBR-seniorproject
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/sidereior/PBR-seniorproject" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsidereior%2FPBR-seniorproject", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsidereior%2FPBR-seniorproject'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 4e6077f2c0f5408934a9a0f77b2fcc4622c2823f
[INFO] checking sidereior/PBR-seniorproject against 1.95.0 for pr-155915
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsidereior%2FPBR-seniorproject" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/sidereior/PBR-seniorproject
[INFO] finished tweaking git repo https://github.com/sidereior/PBR-seniorproject
[INFO] tweaked toml for git repo https://github.com/sidereior/PBR-seniorproject written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/sidereior/PBR-seniorproject on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/sidereior/PBR-seniorproject 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.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded wasm-bindgen-shared v0.2.86
[INFO] [stderr]   Downloaded wasm-bindgen-macro-support v0.2.86
[INFO] [stderr]   Downloaded wasm-bindgen-macro v0.2.86
[INFO] [stderr]   Downloaded quote v1.0.27
[INFO] [stderr]   Downloaded either v1.8.1
[INFO] [stderr]   Downloaded miniz_oxide v0.6.2
[INFO] [stderr]   Downloaded syn v2.0.16
[INFO] [stderr]   Downloaded fdeflate v0.3.0
[INFO] [stderr]   Downloaded wasm-bindgen-backend v0.2.86
[INFO] [stderr]   Downloaded memoffset v0.8.0
[INFO] [stderr]   Downloaded zune-inflate v0.2.54
[INFO] [stderr]   Downloaded futures-sink v0.3.28
[INFO] [stderr]   Downloaded pin-project v1.1.0
[INFO] [stderr]   Downloaded futures-core v0.3.28
[INFO] [stderr]   Downloaded flume v0.10.14
[INFO] [stderr]   Downloaded pin-project-internal v1.1.0
[INFO] [stderr]   Downloaded weezl v0.1.7
[INFO] [stderr]   Downloaded bit_field v0.10.2
[INFO] [stderr]   Downloaded half v2.2.1
[INFO] [stderr]   Downloaded png v0.17.8
[INFO] [stderr]   Downloaded bytemuck v1.13.1
[INFO] [stderr]   Downloaded simd-adler32 v0.3.5
[INFO] [stderr]   Downloaded qoi v0.4.1
[INFO] [stderr]   Downloaded flate2 v1.0.26
[INFO] [stderr]   Downloaded image v0.24.6
[INFO] [stderr]   Downloaded jpeg-decoder v0.3.0
[INFO] [stderr]   Downloaded bumpalo v3.12.2
[INFO] [stderr]   Downloaded miniz_oxide v0.7.1
[INFO] [stderr]   Downloaded exr v1.6.3
[INFO] [stderr]   Downloaded crossbeam-utils v0.8.15
[INFO] [stderr]   Downloaded crossbeam-channel v0.5.8
[INFO] [stderr]   Downloaded rayon-core v1.11.0
[INFO] [stderr]   Downloaded hermit-abi v0.2.6
[INFO] [stderr]   Downloaded unicode-ident v1.0.8
[INFO] [stderr]   Downloaded rayon v1.7.0
[INFO] [stderr]   Downloaded lebe v0.5.2
[INFO] [stderr]   Downloaded proc-macro2 v1.0.57
[INFO] [stderr]   Downloaded getrandom v0.2.9
[INFO] [stderr]   Downloaded num-integer v0.1.45
[INFO] [stderr]   Downloaded crunchy v0.2.2
[INFO] [stderr]   Downloaded color_quant v1.1.0
[INFO] [stderr]   Downloaded num-rational v0.4.1
[INFO] [stderr]   Downloaded adler v1.0.2
[INFO] [stderr]   Downloaded crossbeam-deque v0.8.3
[INFO] [stderr]   Downloaded num_cpus v1.15.0
[INFO] [stderr]   Downloaded js-sys v0.3.63
[INFO] [stderr]   Downloaded crossbeam-epoch v0.9.14
[INFO] [stderr]   Downloaded gif v0.12.0
[INFO] [stderr]   Downloaded libc v0.2.144
[INFO] [stderr]   Downloaded tiff v0.8.1
[INFO] [stderr]   Downloaded wasm-bindgen v0.2.86
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 899a912bc132810c6af553f54c341992e3ff8f9eec2cf6af7b8c8ffb7894dbec
[INFO] running `Command { std: "docker" "start" "-a" "899a912bc132810c6af553f54c341992e3ff8f9eec2cf6af7b8c8ffb7894dbec", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "899a912bc132810c6af553f54c341992e3ff8f9eec2cf6af7b8c8ffb7894dbec", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "899a912bc132810c6af553f54c341992e3ff8f9eec2cf6af7b8c8ffb7894dbec", kill_on_drop: false }`
[INFO] [stdout] 899a912bc132810c6af553f54c341992e3ff8f9eec2cf6af7b8c8ffb7894dbec
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] f5afb562b038dde848c4378359ccefad29c5b0c2781ec7655c2b0d4ac6ee2f7a
[INFO] running `Command { std: "docker" "start" "-a" "f5afb562b038dde848c4378359ccefad29c5b0c2781ec7655c2b0d4ac6ee2f7a", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.144
[INFO] [stderr]    Compiling crossbeam-utils v0.8.15
[INFO] [stderr]    Compiling memoffset v0.8.0
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.14
[INFO] [stderr]    Compiling proc-macro2 v1.0.57
[INFO] [stderr]     Checking simd-adler32 v0.3.5
[INFO] [stderr]    Compiling quote v1.0.27
[INFO] [stderr]    Compiling unicode-ident v1.0.8
[INFO] [stderr]     Checking adler v1.0.2
[INFO] [stderr]    Compiling rayon-core v1.11.0
[INFO] [stderr]    Compiling crc32fast v1.3.2
[INFO] [stderr]    Compiling num-traits v0.2.15
[INFO] [stderr]    Compiling futures-core v0.3.28
[INFO] [stderr]    Compiling num-integer v0.1.45
[INFO] [stderr]     Checking either v1.8.1
[INFO] [stderr]     Checking spin v0.9.8
[INFO] [stderr]    Compiling num-rational v0.4.1
[INFO] [stderr]     Checking futures-sink v0.3.28
[INFO] [stderr]     Checking weezl v0.1.7
[INFO] [stderr]     Checking miniz_oxide v0.6.2
[INFO] [stderr]     Checking ppv-lite86 v0.2.17
[INFO] [stderr]     Checking half v2.2.1
[INFO] [stderr]     Checking lebe v0.5.2
[INFO] [stderr]     Checking bitflags v1.3.2
[INFO] [stderr]     Checking bytemuck v1.13.1
[INFO] [stderr]     Checking color_quant v1.1.0
[INFO] [stderr]     Checking bit_field v0.10.2
[INFO] [stderr]     Checking byteorder v1.4.3
[INFO] [stderr]     Checking miniz_oxide v0.7.1
[INFO] [stderr]     Checking zune-inflate v0.2.54
[INFO] [stderr]     Checking fdeflate v0.3.0
[INFO] [stderr]     Checking gif v0.12.0
[INFO] [stderr]     Checking crossbeam-channel v0.5.8
[INFO] [stderr]     Checking qoi v0.4.1
[INFO] [stderr]     Checking crossbeam-deque v0.8.3
[INFO] [stderr]     Checking flate2 v1.0.26
[INFO] [stderr]    Compiling syn v2.0.16
[INFO] [stderr]     Checking getrandom v0.2.9
[INFO] [stderr]     Checking num_cpus v1.15.0
[INFO] [stderr]     Checking nanorand v0.7.0
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking png v0.17.8
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rayon v1.7.0
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking jpeg-decoder v0.3.0
[INFO] [stderr]     Checking tiff v0.8.1
[INFO] [stderr]    Compiling pin-project-internal v1.1.0
[INFO] [stderr]     Checking pin-project v1.1.0
[INFO] [stderr]     Checking flume v0.10.14
[INFO] [stderr]     Checking exr v1.6.3
[INFO] [stderr]     Checking image v0.24.6
[INFO] [stderr]     Checking PBR v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: type `vec` should have an upper camel case name
[INFO] [stdout]  --> src/vector.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct vec{
[INFO] [stdout]   |            ^^^ help: convert the identifier to upper camel case (notice the capitalization): `Vec`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ray` should have an upper camel case name
[INFO] [stdout]  --> src/rays.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct ray{
[INFO] [stdout]   |            ^^^ help: convert the identifier to upper camel case: `Ray`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `point` should have an upper camel case name
[INFO] [stdout]  --> src/points.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct point{
[INFO] [stdout]   |            ^^^^^ help: convert the identifier to upper camel case: `Point`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ellipsoids::ellipsoid`
[INFO] [stdout]  --> src/primitives.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::ellipsoids::ellipsoid;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `prim` should have an upper camel case name
[INFO] [stdout]  --> src/primitives.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct prim{
[INFO] [stdout]   |            ^^^^ help: convert the identifier to upper camel case: `Prim`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `intersection` should have an upper camel case name
[INFO] [stdout]   --> src/primitives.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub trait intersection{
[INFO] [stdout]    |           ^^^^^^^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Intersection`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f64::*`
[INFO] [stdout]  --> src/ellipsoids.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::f64::*;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ellipsoid` should have an upper camel case name
[INFO] [stdout]  --> src/ellipsoids.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct ellipsoid{
[INFO] [stdout]   |            ^^^^^^^^^ help: convert the identifier to upper camel case: `Ellipsoid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]   --> src/ellipsoids.rs:33:49
[INFO] [stdout]    |
[INFO] [stdout] 33 |          (vec::subtr(ray.o(), self.center)).dot((vec::subtr(ray.o(), self.center))) 
[INFO] [stdout]    |                                                 ^                                ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 33 -          (vec::subtr(ray.o(), self.center)).dot((vec::subtr(ray.o(), self.center))) 
[INFO] [stdout] 33 +          (vec::subtr(ray.o(), self.center)).dot(vec::subtr(ray.o(), self.center) ) 
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `projcam` should have an upper camel case name
[INFO] [stdout]  --> src/projectivecamera.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct projcam {
[INFO] [stdout]   |            ^^^^^^^ help: convert the identifier to upper camel case: `Projcam`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f64::*`
[INFO] [stdout]  --> src/rectangles.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::f64::*;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `rectangle` should have an upper camel case name
[INFO] [stdout]  --> src/rectangles.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct rectangle{
[INFO] [stdout]   |            ^^^^^^^^^ help: convert the identifier to upper camel case: `Rectangle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/rectangles.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 |         if((self.z - ray.o().z()) / ray.d().z() < start || (self.z - ray.o().z()) / ray.d().z() > end){
[INFO] [stdout]    |           ^                                                                                          ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 26 -         if((self.z - ray.o().z()) / ray.d().z() < start || (self.z - ray.o().z()) / ray.d().z() > end){
[INFO] [stdout] 26 +         if (self.z - ray.o().z()) / ray.d().z() < start || (self.z - ray.o().z()) / ray.d().z() > end {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/rectangles.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | ... if(ray.o().x() + t * ray.d().x() < self.leftX || ray.o().x() + t * ray.d().x() > self.rightX || ray.o().y() + t * ray.d().y() < self.bottomY || ray.o().y() + t * ray.d().y() > self.topY){
[INFO] [stdout]    |       ^                                                                                                                                                                                      ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 29 -         if(ray.o().x() + t * ray.d().x() < self.leftX || ray.o().x() + t * ray.d().x() > self.rightX || ray.o().y() + t * ray.d().y() < self.bottomY || ray.o().y() + t * ray.d().y() > self.topY){
[INFO] [stdout] 29 +         if ray.o().x() + t * ray.d().x() < self.leftX || ray.o().x() + t * ray.d().x() > self.rightX || ray.o().y() + t * ray.d().y() < self.bottomY || ray.o().y() + t * ray.d().y() > self.topY {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::primitives::prim`
[INFO] [stdout]   --> src/main.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::primitives::prim;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::prelude::*`
[INFO] [stdout]   --> src/main.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use rand::prelude::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/main.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 |     if(numRecursive <= 0){
[INFO] [stdout]    |       ^                 ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 24 -     if(numRecursive <= 0){
[INFO] [stdout] 24 +     if numRecursive <= 0 {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]   --> src/main.rs:64:14
[INFO] [stdout]    |
[INFO] [stdout] 64 |         while(random.length()*random.length()>1.0){
[INFO] [stdout]    |              ^                                   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 64 -         while(random.length()*random.length()>1.0){
[INFO] [stdout] 64 +         while random.length()*random.length()>1.0 {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/main.rs:90:21
[INFO] [stdout]    |
[INFO] [stdout] 90 |     return vec::add((vec::mult((vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout]    |                     ^
[INFO] [stdout] 91 |     *uv)), e)), (vec::mult(*n,-f64::sqrt(f64::abs(1.0 -
[INFO] [stdout]    |              ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 90 ~     return vec::add(vec::mult((vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout] 91 ~     *uv)), e) , (vec::mult(*n,-f64::sqrt(f64::abs(1.0 -
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/main.rs:91:17
[INFO] [stdout]    |
[INFO] [stdout] 91 |     *uv)), e)), (vec::mult(*n,-f64::sqrt(f64::abs(1.0 -
[INFO] [stdout]    |                 ^
[INFO] [stdout] ...
[INFO] [stdout] 95 |    *uv)), e)).length()))))));
[INFO] [stdout]    |                           ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 91 ~     *uv)), e)), vec::mult(*n,-f64::sqrt(f64::abs(1.0 -
[INFO] [stdout] 92 |         ((vec::mult((vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout] 93 |    *uv)), e)).length() * 
[INFO] [stdout] 94 |    (vec::mult((vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout] 95 ~    *uv)), e)).length())))) );
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/main.rs:90:32
[INFO] [stdout]    |
[INFO] [stdout] 90 |     return vec::add((vec::mult((vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout]    |                                ^
[INFO] [stdout] 91 |     *uv)), e)), (vec::mult(*n,-f64::sqrt(f64::abs(1.0 -
[INFO] [stdout]    |         ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 90 ~     return vec::add((vec::mult(vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout] 91 ~     *uv) , e)), (vec::mult(*n,-f64::sqrt(f64::abs(1.0 -
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/main.rs:90:56
[INFO] [stdout]    |
[INFO] [stdout] 90 |     return vec::add((vec::mult((vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout]    |                                                        ^                          ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 90 -     return vec::add((vec::mult((vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout] 90 +     return vec::add((vec::mult((vec::add(vec::mult(*n, f64::min(-uv.dot(*n), 1.0) ),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/main.rs:92:21
[INFO] [stdout]    |
[INFO] [stdout] 92 |         ((vec::mult((vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout]    |                     ^
[INFO] [stdout] 93 |    *uv)), e)).length() * 
[INFO] [stdout]    |        ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 92 ~         ((vec::mult(vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout] 93 ~    *uv) , e)).length() * 
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/main.rs:92:45
[INFO] [stdout]    |
[INFO] [stdout] 92 |         ((vec::mult((vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout]    |                                             ^                          ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 92 -         ((vec::mult((vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout] 92 +         ((vec::mult((vec::add(vec::mult(*n, f64::min(-uv.dot(*n), 1.0) ),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/main.rs:94:15
[INFO] [stdout]    |
[INFO] [stdout] 94 |    (vec::mult((vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout]    |               ^
[INFO] [stdout] 95 |    *uv)), e)).length()))))));
[INFO] [stdout]    |        ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 94 ~    (vec::mult(vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout] 95 ~    *uv) , e)).length()))))));
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/main.rs:94:39
[INFO] [stdout]    |
[INFO] [stdout] 94 |    (vec::mult((vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout]    |                                       ^                          ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 94 -    (vec::mult((vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout] 94 +    (vec::mult((vec::add(vec::mult(*n, f64::min(-uv.dot(*n), 1.0) ),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/main.rs:115:32
[INFO] [stdout]     |
[INFO] [stdout] 115 |     if refracts || reflectance((f64::min(-(r.d().unit()).dot(rec.normal(&r.o())), 1.0)), ratioofrefraction) > rng.gen_range(0.0..=1...
[INFO] [stdout]     |                                ^                                                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 115 -     if refracts || reflectance((f64::min(-(r.d().unit()).dot(rec.normal(&r.o())), 1.0)), ratioofrefraction) > rng.gen_range(0.0..=1.0){
[INFO] [stdout] 115 +     if refracts || reflectance(f64::min(-(r.d().unit()).dot(rec.normal(&r.o())), 1.0) , ratioofrefraction) > rng.gen_range(0.0..=1.0){
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `vec` should have an upper camel case name
[INFO] [stdout]  --> src/vector.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct vec{
[INFO] [stdout]   |            ^^^ help: convert the identifier to upper camel case (notice the capitalization): `Vec`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_camel_case_types)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ray` should have an upper camel case name
[INFO] [stdout]  --> src/rays.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct ray{
[INFO] [stdout]   |            ^^^ help: convert the identifier to upper camel case: `Ray`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `point` should have an upper camel case name
[INFO] [stdout]  --> src/points.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct point{
[INFO] [stdout]   |            ^^^^^ help: convert the identifier to upper camel case: `Point`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::ellipsoids::ellipsoid`
[INFO] [stdout]  --> src/primitives.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::ellipsoids::ellipsoid;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `prim` should have an upper camel case name
[INFO] [stdout]  --> src/primitives.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct prim{
[INFO] [stdout]   |            ^^^^ help: convert the identifier to upper camel case: `Prim`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `intersection` should have an upper camel case name
[INFO] [stdout]   --> src/primitives.rs:17:11
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub trait intersection{
[INFO] [stdout]    |           ^^^^^^^^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `Intersection`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f64::*`
[INFO] [stdout]  --> src/ellipsoids.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::f64::*;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `ellipsoid` should have an upper camel case name
[INFO] [stdout]  --> src/ellipsoids.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct ellipsoid{
[INFO] [stdout]   |            ^^^^^^^^^ help: convert the identifier to upper camel case: `Ellipsoid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]   --> src/ellipsoids.rs:33:49
[INFO] [stdout]    |
[INFO] [stdout] 33 |          (vec::subtr(ray.o(), self.center)).dot((vec::subtr(ray.o(), self.center))) 
[INFO] [stdout]    |                                                 ^                                ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 33 -          (vec::subtr(ray.o(), self.center)).dot((vec::subtr(ray.o(), self.center))) 
[INFO] [stdout] 33 +          (vec::subtr(ray.o(), self.center)).dot(vec::subtr(ray.o(), self.center) ) 
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `projcam` should have an upper camel case name
[INFO] [stdout]  --> src/projectivecamera.rs:4:12
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct projcam {
[INFO] [stdout]   |            ^^^^^^^ help: convert the identifier to upper camel case: `Projcam`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f64::*`
[INFO] [stdout]  --> src/rectangles.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::f64::*;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `rectangle` should have an upper camel case name
[INFO] [stdout]  --> src/rectangles.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct rectangle{
[INFO] [stdout]   |            ^^^^^^^^^ help: convert the identifier to upper camel case: `Rectangle`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/rectangles.rs:26:11
[INFO] [stdout]    |
[INFO] [stdout] 26 |         if((self.z - ray.o().z()) / ray.d().z() < start || (self.z - ray.o().z()) / ray.d().z() > end){
[INFO] [stdout]    |           ^                                                                                          ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 26 -         if((self.z - ray.o().z()) / ray.d().z() < start || (self.z - ray.o().z()) / ray.d().z() > end){
[INFO] [stdout] 26 +         if (self.z - ray.o().z()) / ray.d().z() < start || (self.z - ray.o().z()) / ray.d().z() > end {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/rectangles.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | ... if(ray.o().x() + t * ray.d().x() < self.leftX || ray.o().x() + t * ray.d().x() > self.rightX || ray.o().y() + t * ray.d().y() < self.bottomY || ray.o().y() + t * ray.d().y() > self.topY){
[INFO] [stdout]    |       ^                                                                                                                                                                                      ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 29 -         if(ray.o().x() + t * ray.d().x() < self.leftX || ray.o().x() + t * ray.d().x() > self.rightX || ray.o().y() + t * ray.d().y() < self.bottomY || ray.o().y() + t * ray.d().y() > self.topY){
[INFO] [stdout] 29 +         if ray.o().x() + t * ray.d().x() < self.leftX || ray.o().x() + t * ray.d().x() > self.rightX || ray.o().y() + t * ray.d().y() < self.bottomY || ray.o().y() + t * ray.d().y() > self.topY {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::primitives::prim`
[INFO] [stdout]   --> src/main.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use crate::primitives::prim;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::prelude::*`
[INFO] [stdout]   --> src/main.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use rand::prelude::*;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]   --> src/main.rs:24:7
[INFO] [stdout]    |
[INFO] [stdout] 24 |     if(numRecursive <= 0){
[INFO] [stdout]    |       ^                 ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 24 -     if(numRecursive <= 0){
[INFO] [stdout] 24 +     if numRecursive <= 0 {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `while` condition
[INFO] [stdout]   --> src/main.rs:64:14
[INFO] [stdout]    |
[INFO] [stdout] 64 |         while(random.length()*random.length()>1.0){
[INFO] [stdout]    |              ^                                   ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 64 -         while(random.length()*random.length()>1.0){
[INFO] [stdout] 64 +         while random.length()*random.length()>1.0 {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/main.rs:90:21
[INFO] [stdout]    |
[INFO] [stdout] 90 |     return vec::add((vec::mult((vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout]    |                     ^
[INFO] [stdout] 91 |     *uv)), e)), (vec::mult(*n,-f64::sqrt(f64::abs(1.0 -
[INFO] [stdout]    |              ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 90 ~     return vec::add(vec::mult((vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout] 91 ~     *uv)), e) , (vec::mult(*n,-f64::sqrt(f64::abs(1.0 -
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/main.rs:91:17
[INFO] [stdout]    |
[INFO] [stdout] 91 |     *uv)), e)), (vec::mult(*n,-f64::sqrt(f64::abs(1.0 -
[INFO] [stdout]    |                 ^
[INFO] [stdout] ...
[INFO] [stdout] 95 |    *uv)), e)).length()))))));
[INFO] [stdout]    |                           ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 91 ~     *uv)), e)), vec::mult(*n,-f64::sqrt(f64::abs(1.0 -
[INFO] [stdout] 92 |         ((vec::mult((vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout] 93 |    *uv)), e)).length() * 
[INFO] [stdout] 94 |    (vec::mult((vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout] 95 ~    *uv)), e)).length())))) );
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/main.rs:90:32
[INFO] [stdout]    |
[INFO] [stdout] 90 |     return vec::add((vec::mult((vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout]    |                                ^
[INFO] [stdout] 91 |     *uv)), e)), (vec::mult(*n,-f64::sqrt(f64::abs(1.0 -
[INFO] [stdout]    |         ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 90 ~     return vec::add((vec::mult(vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout] 91 ~     *uv) , e)), (vec::mult(*n,-f64::sqrt(f64::abs(1.0 -
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/main.rs:90:56
[INFO] [stdout]    |
[INFO] [stdout] 90 |     return vec::add((vec::mult((vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout]    |                                                        ^                          ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 90 -     return vec::add((vec::mult((vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout] 90 +     return vec::add((vec::mult((vec::add(vec::mult(*n, f64::min(-uv.dot(*n), 1.0) ),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/main.rs:92:21
[INFO] [stdout]    |
[INFO] [stdout] 92 |         ((vec::mult((vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout]    |                     ^
[INFO] [stdout] 93 |    *uv)), e)).length() * 
[INFO] [stdout]    |        ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 92 ~         ((vec::mult(vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout] 93 ~    *uv) , e)).length() * 
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/main.rs:92:45
[INFO] [stdout]    |
[INFO] [stdout] 92 |         ((vec::mult((vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout]    |                                             ^                          ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 92 -         ((vec::mult((vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout] 92 +         ((vec::mult((vec::add(vec::mult(*n, f64::min(-uv.dot(*n), 1.0) ),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/main.rs:94:15
[INFO] [stdout]    |
[INFO] [stdout] 94 |    (vec::mult((vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout]    |               ^
[INFO] [stdout] 95 |    *uv)), e)).length()))))));
[INFO] [stdout]    |        ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 94 ~    (vec::mult(vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout] 95 ~    *uv) , e)).length()))))));
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]   --> src/main.rs:94:39
[INFO] [stdout]    |
[INFO] [stdout] 94 |    (vec::mult((vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout]    |                                       ^                          ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 94 -    (vec::mult((vec::add(vec::mult(*n, (f64::min(-uv.dot(*n), 1.0))),
[INFO] [stdout] 94 +    (vec::mult((vec::add(vec::mult(*n, f64::min(-uv.dot(*n), 1.0) ),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/main.rs:115:32
[INFO] [stdout]     |
[INFO] [stdout] 115 |     if refracts || reflectance((f64::min(-(r.d().unit()).dot(rec.normal(&r.o())), 1.0)), ratioofrefraction) > rng.gen_range(0.0..=1...
[INFO] [stdout]     |                                ^                                                      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 115 -     if refracts || reflectance((f64::min(-(r.d().unit()).dot(rec.normal(&r.o())), 1.0)), ratioofrefraction) > rng.gen_range(0.0..=1.0){
[INFO] [stdout] 115 +     if refracts || reflectance(f64::min(-(r.d().unit()).dot(rec.normal(&r.o())), 1.0) , ratioofrefraction) > rng.gen_range(0.0..=1.0){
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:71:13
[INFO] [stdout]    |
[INFO] [stdout] 71 |         let mut random = vec::new(r1, r2, r3);
[INFO] [stdout]    |             ----^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prim`
[INFO] [stdout]   --> src/main.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 31 |         let (hit, prim) = (object).getIntersection(&r, 0.001, 1000.0);
[INFO] [stdout]    |                   ^^^^ help: if this is intentional, prefix it with an underscore: `_prim`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prim`
[INFO] [stdout]   --> src/main.rs:38:19
[INFO] [stdout]    |
[INFO] [stdout] 38 |         let (hit, prim) = (object).getIntersection(&r, 0.001, 10000000.0);
[INFO] [stdout]    |                   ^^^^ help: if this is intentional, prefix it with an underscore: `_prim`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prim`
[INFO] [stdout]   --> src/main.rs:50:19
[INFO] [stdout]    |
[INFO] [stdout] 50 |         let (hit, prim) = (object).getIntersection(&r, 0.001, 1000.0);
[INFO] [stdout]    |                   ^^^^ help: if this is intentional, prefix it with an underscore: `_prim`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `cross`, `absdot`, and `crossmag` are never used
[INFO] [stdout]   --> src/vector.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl vec{
[INFO] [stdout]    | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn cross(self, other: vec) -> vec{
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn absdot(self, other: vec) -> f64{
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn crossmag(self, other: vec) -> f64{
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add`, `subtr`, `subtrpoints`, and `distance` are never used
[INFO] [stdout]   --> src/points.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl point{
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub fn add(&self, other: vec) -> point{
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn subtr(&self, other: vec) -> point{
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn subtrpoints(&self, other: point) -> point{
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn distance(&self, other: point) -> f64{
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `t` and `norm` are never read
[INFO] [stdout]  --> src/primitives.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct prim{
[INFO] [stdout]   |            ---- fields in this struct
[INFO] [stdout] 6 |     pub t: f64,
[INFO] [stdout]   |         ^
[INFO] [stdout] 7 |     pub p: vec,
[INFO] [stdout] 8 |     pub norm: vec,
[INFO] [stdout]   |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `u`, `v`, `w`, and `lensradius` are never read
[INFO] [stdout]   --> src/projectivecamera.rs:9:9
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub struct projcam {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout]  9 |     pub u: vec,
[INFO] [stdout]    |         ^
[INFO] [stdout] 10 |     pub v: vec,
[INFO] [stdout]    |         ^
[INFO] [stdout] 11 |     pub w: vec,
[INFO] [stdout]    |         ^
[INFO] [stdout] 12 |     pub lensradius: f64,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/rectangles.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl rectangle{
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 15 |
[INFO] [stdout] 16 |     pub fn new(leftX: f64, rightX: f64, bottomY: f64, topY: f64, z:f64)-> rectangle{
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `numRecursive` should have a snake case name
[INFO] [stdout]   --> src/main.rs:22:102
[INFO] [stdout]    |
[INFO] [stdout] 22 | fn color(r: &ray, ell: &[ellipsoid], rects: &[rectangle], solid: &[ellipsoid], lights: &[ellipsoid], numRecursive: i32) -> vec {
[INFO] [stdout]    |                                                                                                      ^^^^^^^^^^^^ help: convert the identifier to snake case: `num_recursive`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `newRay` should have a snake case name
[INFO] [stdout]   --> src/main.rs:78:17
[INFO] [stdout]    |
[INFO] [stdout] 78 |             let newRay = ray::new(r.o(), depth);
[INFO] [stdout]    |                 ^^^^^^ help: convert the identifier to snake case: `new_ray`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `width` should have an upper case name
[INFO] [stdout]    --> src/main.rs:125:11
[INFO] [stdout]     |
[INFO] [stdout] 125 |     const width: u32 = 2500;
[INFO] [stdout]     |           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_upper_case_globals)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 125 -     const width: u32 = 2500;
[INFO] [stdout] 125 +     const WIDTH: u32 = 2500;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `height` should have an upper case name
[INFO] [stdout]    --> src/main.rs:126:11
[INFO] [stdout]     |
[INFO] [stdout] 126 |     const height: u32 = 1750;
[INFO] [stdout]     |           ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 126 -     const height: u32 = 1750;
[INFO] [stdout] 126 +     const HEIGHT: u32 = 1750;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait method `getIntersection` should have a snake case name
[INFO] [stdout]   --> src/primitives.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn getIntersection(&self, ray: &ray, start: f64, end: f64) -> (bool, prim);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `get_intersection`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `leftX` should have a snake case name
[INFO] [stdout]  --> src/rectangles.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub leftX: f64,
[INFO] [stdout]   |         ^^^^^ help: convert the identifier to snake case: `left_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `rightX` should have a snake case name
[INFO] [stdout]  --> src/rectangles.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub rightX: f64,
[INFO] [stdout]   |         ^^^^^^ help: convert the identifier to snake case: `right_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `bottomY` should have a snake case name
[INFO] [stdout]  --> src/rectangles.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub bottomY: f64,
[INFO] [stdout]   |         ^^^^^^^ help: convert the identifier to snake case: `bottom_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `topY` should have a snake case name
[INFO] [stdout]   --> src/rectangles.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub topY: f64,
[INFO] [stdout]    |         ^^^^ help: convert the identifier to snake case: `top_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `leftX` should have a snake case name
[INFO] [stdout]   --> src/rectangles.rs:16:16
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub fn new(leftX: f64, rightX: f64, bottomY: f64, topY: f64, z:f64)-> rectangle{
[INFO] [stdout]    |                ^^^^^ help: convert the identifier to snake case: `left_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `rightX` should have a snake case name
[INFO] [stdout]   --> src/rectangles.rs:16:28
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub fn new(leftX: f64, rightX: f64, bottomY: f64, topY: f64, z:f64)-> rectangle{
[INFO] [stdout]    |                            ^^^^^^ help: convert the identifier to snake case: `right_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `bottomY` should have a snake case name
[INFO] [stdout]   --> src/rectangles.rs:16:41
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub fn new(leftX: f64, rightX: f64, bottomY: f64, topY: f64, z:f64)-> rectangle{
[INFO] [stdout]    |                                         ^^^^^^^ help: convert the identifier to snake case: `bottom_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `topY` should have a snake case name
[INFO] [stdout]   --> src/rectangles.rs:16:55
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub fn new(leftX: f64, rightX: f64, bottomY: f64, topY: f64, z:f64)-> rectangle{
[INFO] [stdout]    |                                                       ^^^^ help: convert the identifier to snake case: `top_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:71:13
[INFO] [stdout]    |
[INFO] [stdout] 71 |         let mut random = vec::new(r1, r2, r3);
[INFO] [stdout]    |             ----^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prim`
[INFO] [stdout]   --> src/main.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 31 |         let (hit, prim) = (object).getIntersection(&r, 0.001, 1000.0);
[INFO] [stdout]    |                   ^^^^ help: if this is intentional, prefix it with an underscore: `_prim`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prim`
[INFO] [stdout]   --> src/main.rs:38:19
[INFO] [stdout]    |
[INFO] [stdout] 38 |         let (hit, prim) = (object).getIntersection(&r, 0.001, 10000000.0);
[INFO] [stdout]    |                   ^^^^ help: if this is intentional, prefix it with an underscore: `_prim`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prim`
[INFO] [stdout]   --> src/main.rs:50:19
[INFO] [stdout]    |
[INFO] [stdout] 50 |         let (hit, prim) = (object).getIntersection(&r, 0.001, 1000.0);
[INFO] [stdout]    |                   ^^^^ help: if this is intentional, prefix it with an underscore: `_prim`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `cross`, `absdot`, and `crossmag` are never used
[INFO] [stdout]   --> src/vector.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl vec{
[INFO] [stdout]    | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn cross(self, other: vec) -> vec{
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn absdot(self, other: vec) -> f64{
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn crossmag(self, other: vec) -> f64{
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add`, `subtr`, `subtrpoints`, and `distance` are never used
[INFO] [stdout]   --> src/points.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout]  6 | impl point{
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub fn add(&self, other: vec) -> point{
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn subtr(&self, other: vec) -> point{
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn subtrpoints(&self, other: point) -> point{
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn distance(&self, other: point) -> f64{
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `t` and `norm` are never read
[INFO] [stdout]  --> src/primitives.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct prim{
[INFO] [stdout]   |            ---- fields in this struct
[INFO] [stdout] 6 |     pub t: f64,
[INFO] [stdout]   |         ^
[INFO] [stdout] 7 |     pub p: vec,
[INFO] [stdout] 8 |     pub norm: vec,
[INFO] [stdout]   |         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `u`, `v`, `w`, and `lensradius` are never read
[INFO] [stdout]   --> src/projectivecamera.rs:9:9
[INFO] [stdout]    |
[INFO] [stdout]  4 | pub struct projcam {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout]  9 |     pub u: vec,
[INFO] [stdout]    |         ^
[INFO] [stdout] 10 |     pub v: vec,
[INFO] [stdout]    |         ^
[INFO] [stdout] 11 |     pub w: vec,
[INFO] [stdout]    |         ^
[INFO] [stdout] 12 |     pub lensradius: f64,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/rectangles.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl rectangle{
[INFO] [stdout]    | -------------- associated function in this implementation
[INFO] [stdout] 15 |
[INFO] [stdout] 16 |     pub fn new(leftX: f64, rightX: f64, bottomY: f64, topY: f64, z:f64)-> rectangle{
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `numRecursive` should have a snake case name
[INFO] [stdout]   --> src/main.rs:22:102
[INFO] [stdout]    |
[INFO] [stdout] 22 | fn color(r: &ray, ell: &[ellipsoid], rects: &[rectangle], solid: &[ellipsoid], lights: &[ellipsoid], numRecursive: i32) -> vec {
[INFO] [stdout]    |                                                                                                      ^^^^^^^^^^^^ help: convert the identifier to snake case: `num_recursive`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `newRay` should have a snake case name
[INFO] [stdout]   --> src/main.rs:78:17
[INFO] [stdout]    |
[INFO] [stdout] 78 |             let newRay = ray::new(r.o(), depth);
[INFO] [stdout]    |                 ^^^^^^ help: convert the identifier to snake case: `new_ray`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `width` should have an upper case name
[INFO] [stdout]    --> src/main.rs:125:11
[INFO] [stdout]     |
[INFO] [stdout] 125 |     const width: u32 = 2500;
[INFO] [stdout]     |           ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_upper_case_globals)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 125 -     const width: u32 = 2500;
[INFO] [stdout] 125 +     const WIDTH: u32 = 2500;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `height` should have an upper case name
[INFO] [stdout]    --> src/main.rs:126:11
[INFO] [stdout]     |
[INFO] [stdout] 126 |     const height: u32 = 1750;
[INFO] [stdout]     |           ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: convert the identifier to upper case
[INFO] [stdout]     |
[INFO] [stdout] 126 -     const height: u32 = 1750;
[INFO] [stdout] 126 +     const HEIGHT: u32 = 1750;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait method `getIntersection` should have a snake case name
[INFO] [stdout]   --> src/primitives.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn getIntersection(&self, ray: &ray, start: f64, end: f64) -> (bool, prim);
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `get_intersection`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `leftX` should have a snake case name
[INFO] [stdout]  --> src/rectangles.rs:7:9
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub leftX: f64,
[INFO] [stdout]   |         ^^^^^ help: convert the identifier to snake case: `left_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `rightX` should have a snake case name
[INFO] [stdout]  --> src/rectangles.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub rightX: f64,
[INFO] [stdout]   |         ^^^^^^ help: convert the identifier to snake case: `right_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `bottomY` should have a snake case name
[INFO] [stdout]  --> src/rectangles.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub bottomY: f64,
[INFO] [stdout]   |         ^^^^^^^ help: convert the identifier to snake case: `bottom_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `topY` should have a snake case name
[INFO] [stdout]   --> src/rectangles.rs:10:9
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub topY: f64,
[INFO] [stdout]    |         ^^^^ help: convert the identifier to snake case: `top_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `leftX` should have a snake case name
[INFO] [stdout]   --> src/rectangles.rs:16:16
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub fn new(leftX: f64, rightX: f64, bottomY: f64, topY: f64, z:f64)-> rectangle{
[INFO] [stdout]    |                ^^^^^ help: convert the identifier to snake case: `left_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `rightX` should have a snake case name
[INFO] [stdout]   --> src/rectangles.rs:16:28
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub fn new(leftX: f64, rightX: f64, bottomY: f64, topY: f64, z:f64)-> rectangle{
[INFO] [stdout]    |                            ^^^^^^ help: convert the identifier to snake case: `right_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `bottomY` should have a snake case name
[INFO] [stdout]   --> src/rectangles.rs:16:41
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub fn new(leftX: f64, rightX: f64, bottomY: f64, topY: f64, z:f64)-> rectangle{
[INFO] [stdout]    |                                         ^^^^^^^ help: convert the identifier to snake case: `bottom_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `topY` should have a snake case name
[INFO] [stdout]   --> src/rectangles.rs:16:55
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub fn new(leftX: f64, rightX: f64, bottomY: f64, topY: f64, z:f64)-> rectangle{
[INFO] [stdout]    |                                                       ^^^^ help: convert the identifier to snake case: `top_y`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 15.00s
[INFO] running `Command { std: "docker" "inspect" "f5afb562b038dde848c4378359ccefad29c5b0c2781ec7655c2b0d4ac6ee2f7a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f5afb562b038dde848c4378359ccefad29c5b0c2781ec7655c2b0d4ac6ee2f7a", kill_on_drop: false }`
[INFO] [stdout] f5afb562b038dde848c4378359ccefad29c5b0c2781ec7655c2b0d4ac6ee2f7a
