[INFO] cloning repository https://github.com/velvetops/rust-rtnw
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/velvetops/rust-rtnw" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvelvetops%2Frust-rtnw", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvelvetops%2Frust-rtnw'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 0d82e0fca59fd3d84caccebb54996c05a485bd0e
[INFO] checking velvetops/rust-rtnw against try#1f5783cbeb5da8b38566d718631d016891e9c912 for pr-142704
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvelvetops%2Frust-rtnw" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/velvetops/rust-rtnw on toolchain 1f5783cbeb5da8b38566d718631d016891e9c912
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1f5783cbeb5da8b38566d718631d016891e9c912" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/velvetops/rust-rtnw
[INFO] finished tweaking git repo https://github.com/velvetops/rust-rtnw
[INFO] tweaked toml for git repo https://github.com/velvetops/rust-rtnw written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] crate git repo https://github.com/velvetops/rust-rtnw 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" "+1f5783cbeb5da8b38566d718631d016891e9c912" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[ERROR] error running command: no output for 300 seconds
[INFO] checking velvetops/rust-rtnw against try#1f5783cbeb5da8b38566d718631d016891e9c912 for pr-142704
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvelvetops%2Frust-rtnw" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/velvetops/rust-rtnw on toolchain 1f5783cbeb5da8b38566d718631d016891e9c912
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1f5783cbeb5da8b38566d718631d016891e9c912" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/velvetops/rust-rtnw
[INFO] finished tweaking git repo https://github.com/velvetops/rust-rtnw
[INFO] tweaked toml for git repo https://github.com/velvetops/rust-rtnw written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] crate git repo https://github.com/velvetops/rust-rtnw 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" "+1f5783cbeb5da8b38566d718631d016891e9c912" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[ERROR] error running command: no output for 300 seconds
[INFO] checking velvetops/rust-rtnw against try#1f5783cbeb5da8b38566d718631d016891e9c912 for pr-142704
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvelvetops%2Frust-rtnw" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/velvetops/rust-rtnw on toolchain 1f5783cbeb5da8b38566d718631d016891e9c912
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1f5783cbeb5da8b38566d718631d016891e9c912" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/velvetops/rust-rtnw
[INFO] finished tweaking git repo https://github.com/velvetops/rust-rtnw
[INFO] tweaked toml for git repo https://github.com/velvetops/rust-rtnw written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] crate git repo https://github.com/velvetops/rust-rtnw 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" "+1f5783cbeb5da8b38566d718631d016891e9c912" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded image v0.22.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/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:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+1f5783cbeb5da8b38566d718631d016891e9c912" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 842259a13216a174bcc0f621d5e2827321cbc05fd56e1cc0aebeba829e894980
[INFO] running `Command { std: "docker" "start" "-a" "842259a13216a174bcc0f621d5e2827321cbc05fd56e1cc0aebeba829e894980", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "842259a13216a174bcc0f621d5e2827321cbc05fd56e1cc0aebeba829e894980", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "842259a13216a174bcc0f621d5e2827321cbc05fd56e1cc0aebeba829e894980", kill_on_drop: false }`
[INFO] [stdout] 842259a13216a174bcc0f621d5e2827321cbc05fd56e1cc0aebeba829e894980
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/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:90999bfc7ae267e83380e433d8e61a7c072ca6729e92edbae886d3423b3a6f4c" "/opt/rustwide/cargo-home/bin/cargo" "+1f5783cbeb5da8b38566d718631d016891e9c912" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 88513b71bb5f7a4104bf5768903986c32b79e3aa6bf9f3c43a0b8f457e7f712d
[INFO] running `Command { std: "docker" "start" "-a" "88513b71bb5f7a4104bf5768903986c32b79e3aa6bf9f3c43a0b8f457e7f712d", kill_on_drop: false }`
[INFO] [stderr]    Compiling autocfg v0.1.5
[INFO] [stderr]     Checking spin v0.5.0
[INFO] [stderr]    Compiling libc v0.2.60
[INFO] [stderr]    Compiling semver-parser v0.7.0
[INFO] [stderr]     Checking cfg-if v0.1.9
[INFO] [stderr]    Compiling arrayvec v0.4.11
[INFO] [stderr]    Compiling byteorder v1.3.2
[INFO] [stderr]     Checking nodrop v0.1.13
[INFO] [stderr]    Compiling proc-macro2 v0.4.30
[INFO] [stderr]     Checking scopeguard v1.0.0
[INFO] [stderr]    Compiling unicode-xid v0.1.0
[INFO] [stderr]    Compiling rayon-core v1.5.0
[INFO] [stderr]    Compiling syn v0.15.42
[INFO] [stderr]     Checking adler32 v1.0.3
[INFO] [stderr]    Compiling bitflags v1.1.0
[INFO] [stderr]    Compiling num-derive v0.2.5
[INFO] [stderr]    Compiling crc32fast v1.2.0
[INFO] [stderr]     Checking lzw v0.10.0
[INFO] [stderr]     Checking either v1.5.2
[INFO] [stderr]     Checking ppv-lite86 v0.2.5
[INFO] [stderr]     Checking inflate v0.4.5
[INFO] [stderr]     Checking lazy_static v1.3.0
[INFO] [stderr]    Compiling semver v0.9.0
[INFO] [stderr]     Checking crossbeam-utils v0.6.6
[INFO] [stderr]     Checking color_quant v1.0.1
[INFO] [stderr]     Checking scoped_threadpool v0.1.9
[INFO] [stderr]    Compiling num-traits v0.2.8
[INFO] [stderr]    Compiling num-integer v0.1.41
[INFO] [stderr]    Compiling num-iter v0.1.39
[INFO] [stderr]    Compiling rand_chacha v0.2.0
[INFO] [stderr]    Compiling num-rational v0.2.2
[INFO] [stderr]     Checking gif v0.10.2
[INFO] [stderr]     Checking crossbeam-queue v0.1.2
[INFO] [stderr]     Checking c2-chacha v0.2.2
[INFO] [stderr]    Compiling rustc_version v0.2.3
[INFO] [stderr]    Compiling memoffset v0.5.1
[INFO] [stderr]     Checking num_cpus v1.10.1
[INFO] [stderr]     Checking getrandom v0.1.6
[INFO] [stderr]    Compiling quote v0.6.13
[INFO] [stderr]     Checking deflate v0.7.20
[INFO] [stderr]     Checking crossbeam-epoch v0.7.2
[INFO] [stderr]     Checking rand_core v0.5.0
[INFO] [stderr]     Checking rand v0.7.0
[INFO] [stderr]     Checking crossbeam-deque v0.6.3
[INFO] [stderr]     Checking png v0.15.0
[INFO] [stderr]     Checking rayon v1.1.0
[INFO] [stderr]     Checking jpeg-decoder v0.1.15
[INFO] [stderr]     Checking tiff v0.3.1
[INFO] [stderr]     Checking image v0.22.1
[INFO] [stderr]     Checking rust-rtnw v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]   --> src/block.rs:88:28
[INFO] [stdout]    |
[INFO] [stdout] 88 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]   --> src/block.rs:88:37
[INFO] [stdout]    |
[INFO] [stdout] 88 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bbox`
[INFO] [stdout]   --> src/hitable_list.rs:34:29
[INFO] [stdout]    |
[INFO] [stdout] 34 |                         let bbox = surrounding_box(bbox, temp_box);
[INFO] [stdout]    |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_bbox`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]   --> src/sphere.rs:64:28
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]   --> src/sphere.rs:64:37
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]   --> src/texture.rs:90:37
[INFO] [stdout]    |
[INFO] [stdout] 90 |     fn value(&self, u: f32, v: f32, p: &Vec3) -> Vec3 {
[INFO] [stdout]    |                                     ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]    --> src/translate.rs:113:28
[INFO] [stdout]     |
[INFO] [stdout] 113 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]     |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/translate.rs:113:37
[INFO] [stdout]     |
[INFO] [stdout] 113 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]     |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clamp` is never used
[INFO] [stdout]    --> src/texture.rs:109:4
[INFO] [stdout]     |
[INFO] [stdout] 109 | fn clamp(x: f32, max: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/block.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 84 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 84 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/flip.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/hitable.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord>;
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>>;
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/hitable_list.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/medium.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/rectangle.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/sphere.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/sphere.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 108 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]     |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]     |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]     |
[INFO] [stdout] 108 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]     |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/translate.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/translate.rs:90:12
[INFO] [stdout]    |
[INFO] [stdout] 90 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 90 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]   --> src/block.rs:88:28
[INFO] [stdout]    |
[INFO] [stdout] 88 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]   --> src/block.rs:88:37
[INFO] [stdout]    |
[INFO] [stdout] 88 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bbox`
[INFO] [stdout]   --> src/hitable_list.rs:34:29
[INFO] [stdout]    |
[INFO] [stdout] 34 |                         let bbox = surrounding_box(bbox, temp_box);
[INFO] [stdout]    |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_bbox`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]   --> src/sphere.rs:64:28
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]   --> src/sphere.rs:64:37
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]   --> src/texture.rs:90:37
[INFO] [stdout]    |
[INFO] [stdout] 90 |     fn value(&self, u: f32, v: f32, p: &Vec3) -> Vec3 {
[INFO] [stdout]    |                                     ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]    --> src/translate.rs:113:28
[INFO] [stdout]     |
[INFO] [stdout] 113 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]     |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/translate.rs:113:37
[INFO] [stdout]     |
[INFO] [stdout] 113 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]     |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clamp` is never used
[INFO] [stdout]    --> src/texture.rs:109:4
[INFO] [stdout]     |
[INFO] [stdout] 109 | fn clamp(x: f32, max: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/block.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 84 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 84 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/flip.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/hitable.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord>;
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>>;
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/hitable_list.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/medium.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/rectangle.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/sphere.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/sphere.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 108 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]     |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]     |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]     |
[INFO] [stdout] 108 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]     |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/translate.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/translate.rs:90:12
[INFO] [stdout]    |
[INFO] [stdout] 90 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 90 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]   --> src/block.rs:88:28
[INFO] [stdout]    |
[INFO] [stdout] 88 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]   --> src/block.rs:88:37
[INFO] [stdout]    |
[INFO] [stdout] 88 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bbox`
[INFO] [stdout]   --> src/hitable_list.rs:34:29
[INFO] [stdout]    |
[INFO] [stdout] 34 |                         let bbox = surrounding_box(bbox, temp_box);
[INFO] [stdout]    |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_bbox`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]   --> src/sphere.rs:64:28
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]   --> src/sphere.rs:64:37
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]   --> src/texture.rs:90:37
[INFO] [stdout]    |
[INFO] [stdout] 90 |     fn value(&self, u: f32, v: f32, p: &Vec3) -> Vec3 {
[INFO] [stdout]    |                                     ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]    --> src/translate.rs:113:28
[INFO] [stdout]     |
[INFO] [stdout] 113 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]     |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/translate.rs:113:37
[INFO] [stdout]     |
[INFO] [stdout] 113 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]     |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `hit` is never used
[INFO] [stdout]   --> src/aabb.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl AABB {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub fn hit(&self, r: &Ray, tmin: f32, tmax: f32) -> bool {
[INFO] [stdout]    |            ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `w` is never read
[INFO] [stdout]   --> src/camera.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 7  | pub struct Camera {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub w: Vec3,
[INFO] [stdout]    |         ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Camera` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `camera_for_random_spheres` is never used
[INFO] [stdout]   --> src/camera.rs:83:8
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub fn camera_for_random_spheres(nx: u32, ny: u32) -> Camera {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `camera_for_two_spheres` is never used
[INFO] [stdout]    --> src/camera.rs:106:8
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn camera_for_two_spheres(nx: u32, ny: u32) -> Camera {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Metal` is never constructed
[INFO] [stdout]   --> src/material.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct Metal {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Metal` 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 `new` is never used
[INFO] [stdout]   --> src/material.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl Metal {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] 57 |     pub fn new(v: (f32, f32, f32), fuzz: f32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reflect` is never used
[INFO] [stdout]    --> src/material.rs:104:4
[INFO] [stdout]     |
[INFO] [stdout] 104 | fn reflect(v: Vec3, n: Vec3) -> Vec3 {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Dielectric` is never constructed
[INFO] [stdout]    --> src/material.rs:109:12
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub struct Dielectric {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Dielectric` 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 `new` is never used
[INFO] [stdout]    --> src/material.rs:114:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | impl Dielectric {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] 114 |     pub fn new(refract_idx: f32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `refract` is never used
[INFO] [stdout]    --> src/material.rs:166:4
[INFO] [stdout]     |
[INFO] [stdout] 166 | fn refract(v: &Vec3, n: &Vec3, ni_over_nt: f32) -> Option<Vec3> {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `schlick` is never used
[INFO] [stdout]    --> src/material.rs:178:4
[INFO] [stdout]     |
[INFO] [stdout] 178 | fn schlick(cosine: f32, refract_idx: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Perlin` is never constructed
[INFO] [stdout]  --> src/perlin.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Perlin {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Perlin` 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 items `new`, `noise`, and `turbulence` are never used
[INFO] [stdout]   --> src/perlin.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Perlin {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 13 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn noise(&self, p: &Vec3) -> f32 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn turbulence(&self, p: &Vec3, depth: usize) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `perlin_generate` is never used
[INFO] [stdout]   --> src/perlin.rs:55:4
[INFO] [stdout]    |
[INFO] [stdout] 55 | fn perlin_generate() -> Vec<Vec3> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `perlin_generate_perm` is never used
[INFO] [stdout]   --> src/perlin.rs:68:4
[INFO] [stdout]    |
[INFO] [stdout] 68 | fn perlin_generate_perm() -> Vec<usize> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `perlin_interp` is never used
[INFO] [stdout]   --> src/perlin.rs:75:4
[INFO] [stdout]    |
[INFO] [stdout] 75 | fn perlin_interp(c: &[[[Vec3; 2]; 2]; 2], u: f32, v: f32, w: f32) -> f32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_scene` is never used
[INFO] [stdout]   --> src/scene.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn random_scene() -> HitableList {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_scene_with_motion` is never used
[INFO] [stdout]   --> src/scene.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub fn random_scene_with_motion() -> HitableList {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `two_spheres` is never used
[INFO] [stdout]    --> src/scene.rs:181:8
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub fn two_spheres() -> HitableList {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `two_perlin_spheres` is never used
[INFO] [stdout]    --> src/scene.rs:202:8
[INFO] [stdout]     |
[INFO] [stdout] 202 | pub fn two_perlin_spheres() -> HitableList {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `earth` is never used
[INFO] [stdout]    --> src/scene.rs:220:8
[INFO] [stdout]     |
[INFO] [stdout] 220 | pub fn earth() -> HitableList {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `simple_light` is never used
[INFO] [stdout]    --> src/scene.rs:242:8
[INFO] [stdout]     |
[INFO] [stdout] 242 | pub fn simple_light() -> HitableList {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cornell_box` is never used
[INFO] [stdout]    --> src/scene.rs:269:8
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub fn cornell_box() -> HitableList {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Sphere` is never constructed
[INFO] [stdout]   --> src/sphere.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Sphere<M: Material> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/sphere.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl<M: Material> Sphere<M> {
[INFO] [stdout]    | --------------------------- associated function in this implementation
[INFO] [stdout] 17 |     pub fn new(center: Vec3, radius: f32, material: M) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MovingSphere` is never constructed
[INFO] [stdout]   --> src/sphere.rs:73:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub struct MovingSphere<M: Material> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `center_at_time` are never used
[INFO] [stdout]    --> src/sphere.rs:83:12
[INFO] [stdout]     |
[INFO] [stdout] 82  | impl<M: Material> MovingSphere<M> {
[INFO] [stdout]     | --------------------------------- associated items in this implementation
[INFO] [stdout] 83  |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn center_at_time(&self, time: f32) -> Vec3 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_sphere_uv` is never used
[INFO] [stdout]    --> src/sphere.rs:159:4
[INFO] [stdout]     |
[INFO] [stdout] 159 | fn get_sphere_uv(p: &Vec3) -> (f32, f32) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CheckerTexture` is never constructed
[INFO] [stdout]   --> src/texture.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct CheckerTexture<T: Texture, U: Texture> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CheckerTexture` 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 `new` is never used
[INFO] [stdout]   --> src/texture.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl<T: Texture, U: Texture> CheckerTexture<T, U> {
[INFO] [stdout]    | ------------------------------------------------- associated function in this implementation
[INFO] [stdout] 34 |     pub fn new(odd: T, even: U) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NoiseTexture` is never constructed
[INFO] [stdout]   --> src/texture.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct NoiseTexture {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `NoiseTexture` 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 `new` is never used
[INFO] [stdout]   --> src/texture.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl NoiseTexture {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 57 |     pub fn new(scale: f32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImageTexture` is never constructed
[INFO] [stdout]   --> src/texture.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub struct ImageTexture {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ImageTexture` 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 `new` is never used
[INFO] [stdout]   --> src/texture.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | impl ImageTexture {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 84 |     pub fn new(data: Vec<u8>, nx: u32, ny: u32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clamp` is never used
[INFO] [stdout]    --> src/texture.rs:109:4
[INFO] [stdout]     |
[INFO] [stdout] 109 | fn clamp(x: f32, max: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/block.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 84 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 84 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/flip.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/hitable.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord>;
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>>;
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/hitable_list.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/medium.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/rectangle.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/sphere.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/sphere.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 108 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]     |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]     |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]     |
[INFO] [stdout] 108 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]     |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/translate.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/translate.rs:90:12
[INFO] [stdout]    |
[INFO] [stdout] 90 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 90 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]   --> src/block.rs:88:28
[INFO] [stdout]    |
[INFO] [stdout] 88 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]   --> src/block.rs:88:37
[INFO] [stdout]    |
[INFO] [stdout] 88 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bbox`
[INFO] [stdout]   --> src/hitable_list.rs:34:29
[INFO] [stdout]    |
[INFO] [stdout] 34 |                         let bbox = surrounding_box(bbox, temp_box);
[INFO] [stdout]    |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_bbox`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]   --> src/sphere.rs:64:28
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]   --> src/sphere.rs:64:37
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]   --> src/texture.rs:90:37
[INFO] [stdout]    |
[INFO] [stdout] 90 |     fn value(&self, u: f32, v: f32, p: &Vec3) -> Vec3 {
[INFO] [stdout]    |                                     ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]    --> src/translate.rs:113:28
[INFO] [stdout]     |
[INFO] [stdout] 113 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]     |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/translate.rs:113:37
[INFO] [stdout]     |
[INFO] [stdout] 113 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]     |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `hit` is never used
[INFO] [stdout]   --> src/aabb.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl AABB {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub fn hit(&self, r: &Ray, tmin: f32, tmax: f32) -> bool {
[INFO] [stdout]    |            ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `w` is never read
[INFO] [stdout]   --> src/camera.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 7  | pub struct Camera {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub w: Vec3,
[INFO] [stdout]    |         ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Camera` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `camera_for_random_spheres` is never used
[INFO] [stdout]   --> src/camera.rs:83:8
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub fn camera_for_random_spheres(nx: u32, ny: u32) -> Camera {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `camera_for_two_spheres` is never used
[INFO] [stdout]    --> src/camera.rs:106:8
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn camera_for_two_spheres(nx: u32, ny: u32) -> Camera {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Metal` is never constructed
[INFO] [stdout]   --> src/material.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct Metal {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Metal` 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 `new` is never used
[INFO] [stdout]   --> src/material.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl Metal {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] 57 |     pub fn new(v: (f32, f32, f32), fuzz: f32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reflect` is never used
[INFO] [stdout]    --> src/material.rs:104:4
[INFO] [stdout]     |
[INFO] [stdout] 104 | fn reflect(v: Vec3, n: Vec3) -> Vec3 {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Dielectric` is never constructed
[INFO] [stdout]    --> src/material.rs:109:12
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub struct Dielectric {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Dielectric` 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 `new` is never used
[INFO] [stdout]    --> src/material.rs:114:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | impl Dielectric {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] 114 |     pub fn new(refract_idx: f32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `refract` is never used
[INFO] [stdout]    --> src/material.rs:166:4
[INFO] [stdout]     |
[INFO] [stdout] 166 | fn refract(v: &Vec3, n: &Vec3, ni_over_nt: f32) -> Option<Vec3> {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `schlick` is never used
[INFO] [stdout]    --> src/material.rs:178:4
[INFO] [stdout]     |
[INFO] [stdout] 178 | fn schlick(cosine: f32, refract_idx: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Perlin` is never constructed
[INFO] [stdout]  --> src/perlin.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Perlin {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Perlin` 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 items `new`, `noise`, and `turbulence` are never used
[INFO] [stdout]   --> src/perlin.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Perlin {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 13 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn noise(&self, p: &Vec3) -> f32 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn turbulence(&self, p: &Vec3, depth: usize) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `perlin_generate` is never used
[INFO] [stdout]   --> src/perlin.rs:55:4
[INFO] [stdout]    |
[INFO] [stdout] 55 | fn perlin_generate() -> Vec<Vec3> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `perlin_generate_perm` is never used
[INFO] [stdout]   --> src/perlin.rs:68:4
[INFO] [stdout]    |
[INFO] [stdout] 68 | fn perlin_generate_perm() -> Vec<usize> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `perlin_interp` is never used
[INFO] [stdout]   --> src/perlin.rs:75:4
[INFO] [stdout]    |
[INFO] [stdout] 75 | fn perlin_interp(c: &[[[Vec3; 2]; 2]; 2], u: f32, v: f32, w: f32) -> f32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_scene` is never used
[INFO] [stdout]   --> src/scene.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn random_scene() -> HitableList {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_scene_with_motion` is never used
[INFO] [stdout]   --> src/scene.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub fn random_scene_with_motion() -> HitableList {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `two_spheres` is never used
[INFO] [stdout]    --> src/scene.rs:181:8
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub fn two_spheres() -> HitableList {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `two_perlin_spheres` is never used
[INFO] [stdout]    --> src/scene.rs:202:8
[INFO] [stdout]     |
[INFO] [stdout] 202 | pub fn two_perlin_spheres() -> HitableList {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `earth` is never used
[INFO] [stdout]    --> src/scene.rs:220:8
[INFO] [stdout]     |
[INFO] [stdout] 220 | pub fn earth() -> HitableList {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `simple_light` is never used
[INFO] [stdout]    --> src/scene.rs:242:8
[INFO] [stdout]     |
[INFO] [stdout] 242 | pub fn simple_light() -> HitableList {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cornell_box` is never used
[INFO] [stdout]    --> src/scene.rs:269:8
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub fn cornell_box() -> HitableList {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Sphere` is never constructed
[INFO] [stdout]   --> src/sphere.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Sphere<M: Material> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/sphere.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl<M: Material> Sphere<M> {
[INFO] [stdout]    | --------------------------- associated function in this implementation
[INFO] [stdout] 17 |     pub fn new(center: Vec3, radius: f32, material: M) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MovingSphere` is never constructed
[INFO] [stdout]   --> src/sphere.rs:73:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub struct MovingSphere<M: Material> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `center_at_time` are never used
[INFO] [stdout]    --> src/sphere.rs:83:12
[INFO] [stdout]     |
[INFO] [stdout] 82  | impl<M: Material> MovingSphere<M> {
[INFO] [stdout]     | --------------------------------- associated items in this implementation
[INFO] [stdout] 83  |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn center_at_time(&self, time: f32) -> Vec3 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_sphere_uv` is never used
[INFO] [stdout]    --> src/sphere.rs:159:4
[INFO] [stdout]     |
[INFO] [stdout] 159 | fn get_sphere_uv(p: &Vec3) -> (f32, f32) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CheckerTexture` is never constructed
[INFO] [stdout]   --> src/texture.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct CheckerTexture<T: Texture, U: Texture> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CheckerTexture` 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 `new` is never used
[INFO] [stdout]   --> src/texture.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl<T: Texture, U: Texture> CheckerTexture<T, U> {
[INFO] [stdout]    | ------------------------------------------------- associated function in this implementation
[INFO] [stdout] 34 |     pub fn new(odd: T, even: U) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NoiseTexture` is never constructed
[INFO] [stdout]   --> src/texture.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct NoiseTexture {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `NoiseTexture` 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 `new` is never used
[INFO] [stdout]   --> src/texture.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl NoiseTexture {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 57 |     pub fn new(scale: f32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImageTexture` is never constructed
[INFO] [stdout]   --> src/texture.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub struct ImageTexture {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ImageTexture` 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 `new` is never used
[INFO] [stdout]   --> src/texture.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | impl ImageTexture {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 84 |     pub fn new(data: Vec<u8>, nx: u32, ny: u32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clamp` is never used
[INFO] [stdout]    --> src/texture.rs:109:4
[INFO] [stdout]     |
[INFO] [stdout] 109 | fn clamp(x: f32, max: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/block.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 84 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 84 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/flip.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/hitable.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord>;
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>>;
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/hitable_list.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/medium.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/rectangle.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/sphere.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/sphere.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 108 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]     |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]     |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]     |
[INFO] [stdout] 108 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]     |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/translate.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/translate.rs:90:12
[INFO] [stdout]    |
[INFO] [stdout] 90 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ this lifetime flows to the output           --------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |
[INFO] [stdout] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stdout]    |
[INFO] [stdout] 90 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 9.63s
[INFO] running `Command { std: "docker" "inspect" "88513b71bb5f7a4104bf5768903986c32b79e3aa6bf9f3c43a0b8f457e7f712d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "88513b71bb5f7a4104bf5768903986c32b79e3aa6bf9f3c43a0b8f457e7f712d", kill_on_drop: false }`
[INFO] [stdout] 88513b71bb5f7a4104bf5768903986c32b79e3aa6bf9f3c43a0b8f457e7f712d
