[INFO] cloning repository https://github.com/AlcyZ/shindex-rust-tracer-challenge
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/AlcyZ/shindex-rust-tracer-challenge" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAlcyZ%2Fshindex-rust-tracer-challenge", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAlcyZ%2Fshindex-rust-tracer-challenge'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] db399c72495e098a01cdcbe8d90fb4f926d02f62
[INFO] checking AlcyZ/shindex-rust-tracer-challenge against master#36b21637e93b038453924d3c66821089e71d8baa for pr-143164
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAlcyZ%2Fshindex-rust-tracer-challenge" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/AlcyZ/shindex-rust-tracer-challenge
[INFO] finished tweaking git repo https://github.com/AlcyZ/shindex-rust-tracer-challenge
[INFO] tweaked toml for git repo https://github.com/AlcyZ/shindex-rust-tracer-challenge written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/AlcyZ/shindex-rust-tracer-challenge on toolchain 36b21637e93b038453924d3c66821089e71d8baa
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+36b21637e93b038453924d3c66821089e71d8baa" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/AlcyZ/shindex-rust-tracer-challenge 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" "+36b21637e93b038453924d3c66821089e71d8baa" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded crossbeam-utils v0.8.4
[INFO] [stderr]   Downloaded gif v0.11.2
[INFO] [stderr]   Downloaded memoffset v0.6.3
[INFO] [stderr]   Downloaded crossbeam-deque v0.8.0
[INFO] [stderr]   Downloaded crossbeam-epoch v0.9.4
[INFO] [stderr]   Downloaded rayon-core v1.9.0
[INFO] [stderr]   Downloaded rayon v1.5.0
[INFO] [stderr]   Downloaded libc v0.2.93
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:cf8efcab8866f2cf4285301c7418e2f4f2a9b088c91ba69c40d5b659f81557f7" "/opt/rustwide/cargo-home/bin/cargo" "+36b21637e93b038453924d3c66821089e71d8baa" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 78ecd54130b661c30099b629325d7e83911cf8f627450af7f602c1fbb779fde7
[INFO] running `Command { std: "docker" "start" "-a" "78ecd54130b661c30099b629325d7e83911cf8f627450af7f602c1fbb779fde7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "78ecd54130b661c30099b629325d7e83911cf8f627450af7f602c1fbb779fde7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "78ecd54130b661c30099b629325d7e83911cf8f627450af7f602c1fbb779fde7", kill_on_drop: false }`
[INFO] [stdout] 78ecd54130b661c30099b629325d7e83911cf8f627450af7f602c1fbb779fde7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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:cf8efcab8866f2cf4285301c7418e2f4f2a9b088c91ba69c40d5b659f81557f7" "/opt/rustwide/cargo-home/bin/cargo" "+36b21637e93b038453924d3c66821089e71d8baa" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] f7c915ac0337acce14222312271282e8801a005ce78aa4827e24a323bb60ca2e
[INFO] running `Command { std: "docker" "start" "-a" "f7c915ac0337acce14222312271282e8801a005ce78aa4827e24a323bb60ca2e", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.93
[INFO] [stderr]    Compiling crossbeam-utils v0.8.4
[INFO] [stderr]    Compiling memoffset v0.6.3
[INFO] [stderr]    Compiling num-traits v0.2.14
[INFO] [stderr]    Compiling rayon-core v1.9.0
[INFO] [stderr]    Compiling num-integer v0.1.44
[INFO] [stderr]    Compiling rayon v1.5.0
[INFO] [stderr]    Compiling miniz_oxide v0.4.4
[INFO] [stderr]     Checking either v1.6.1
[INFO] [stderr]     Checking adler32 v1.2.0
[INFO] [stderr]    Compiling crc32fast v1.2.1
[INFO] [stderr]    Compiling num-iter v0.1.42
[INFO] [stderr]    Compiling num-rational v0.3.2
[INFO] [stderr]     Checking weezl v0.1.5
[INFO] [stderr]    Compiling getrandom v0.2.2
[INFO] [stderr]     Checking scoped_threadpool v0.1.9
[INFO] [stderr]     Checking bytemuck v1.5.1
[INFO] [stderr]     Checking deflate v0.8.6
[INFO] [stderr]     Checking miniz_oxide v0.3.7
[INFO] [stderr]     Checking gif v0.11.2
[INFO] [stderr]     Checking png v0.16.8
[INFO] [stderr]     Checking crossbeam-epoch v0.9.4
[INFO] [stderr]     Checking crossbeam-channel v0.5.1
[INFO] [stderr]     Checking crossbeam-deque v0.8.0
[INFO] [stderr]     Checking num_cpus v1.13.0
[INFO] [stderr]     Checking time v0.1.44
[INFO] [stderr]     Checking threadpool v1.8.1
[INFO] [stderr]     Checking uuid v0.8.2
[INFO] [stderr]     Checking chrono v0.4.19
[INFO] [stderr]     Checking jpeg-decoder v0.1.22
[INFO] [stderr]     Checking tiff v0.6.1
[INFO] [stderr]     Checking image v0.23.14
[INFO] [stderr]     Checking shindex-rust-tracer-challenge v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `rotation_y`
[INFO] [stdout]  --> src/samples/cylinders_sample.rs:1:35
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::math::transformation::{rotation_y, scaling, translation};
[INFO] [stdout]   |                                   ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `water_material`
[INFO] [stdout]  --> src/samples/cylinders_sample.rs:8:58
[INFO] [stdout]   |
[INFO] [stdout] 8 |     date_ymd_his, glass_material, mirror_material, save, water_material, SceneCamera,
[INFO] [stdout]   |                                                          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f64::consts::PI`
[INFO] [stdout]   --> src/samples/cylinders_sample.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::f64::consts::PI;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rotation_y`
[INFO] [stdout]  --> src/samples/cylinders_sample.rs:1:35
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::math::transformation::{rotation_y, scaling, translation};
[INFO] [stdout]   |                                   ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `water_material`
[INFO] [stdout]  --> src/samples/cylinders_sample.rs:8:58
[INFO] [stdout]   |
[INFO] [stdout] 8 |     date_ymd_his, glass_material, mirror_material, save, water_material, SceneCamera,
[INFO] [stdout]   |                                                          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f64::consts::PI`
[INFO] [stdout]   --> src/samples/cylinders_sample.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::f64::consts::PI;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `point`
[INFO] [stdout]   --> src/primitives/cone.rs:39:31
[INFO] [stdout]    |
[INFO] [stdout] 39 |     fn local_normal_at(&self, point: Tuple) -> Tuple {
[INFO] [stdout]    |                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_point`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get` is never used
[INFO] [stdout]    --> src/math/matrix.rs:253:8
[INFO] [stdout]     |
[INFO] [stdout] 252 | impl M2 {
[INFO] [stdout]     | ------- method in this implementation
[INFO] [stdout] 253 |     fn get(&self, row: usize, column: usize) -> f64 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rotation_x` is never used
[INFO] [stdout]   --> src/math/transformation.rs:22:15
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub(crate) fn rotation_x(radians: f64) -> M4 {
[INFO] [stdout]    |               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rotation_y` is never used
[INFO] [stdout]   --> src/math/transformation.rs:32:15
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub(crate) fn rotation_y(radians: f64) -> M4 {
[INFO] [stdout]    |               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rotation_z` is never used
[INFO] [stdout]   --> src/math/transformation.rs:42:15
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub(crate) fn rotation_z(radians: f64) -> M4 {
[INFO] [stdout]    |               ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `shearing` is never used
[INFO] [stdout]   --> src/math/transformation.rs:52:15
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub(crate) fn shearing(xy: f64, xz: f64, yx: f64, yz: f64, zx: f64, zy: f64) -> M4 {
[INFO] [stdout]    |               ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_point` and `is_direction` are never used
[INFO] [stdout]   --> src/math/tuple.rs:25:19
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Tuple {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub(crate) fn is_point(&self) -> bool {
[INFO] [stdout]    |                   ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub(crate) fn is_direction(&self) -> bool {
[INFO] [stdout]    |                   ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `mut_props` is never used
[INFO] [stdout]   --> src/pattern/mod.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub(crate) trait Pattern: Debug + Sync + Send {
[INFO] [stdout]    |                  ------- method in this trait
[INFO] [stdout] ...
[INFO] [stdout] 24 |     fn mut_props(&mut self) -> &mut PatternProps;
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `default` and `set_transform` are never used
[INFO] [stdout]   --> src/pattern/mod.rs:33:19
[INFO] [stdout]    |
[INFO] [stdout] 32 | impl PatternProps {
[INFO] [stdout]    | ----------------- associated items in this implementation
[INFO] [stdout] 33 |     pub(crate) fn default() -> PatternProps {
[INFO] [stdout]    |                   ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub(crate) fn set_transform(&mut self, new: M4) {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CheckerPattern` is never constructed
[INFO] [stdout]  --> src/pattern/checker.rs:6:19
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub(crate) struct CheckerPattern {
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/pattern/checker.rs:13:19
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl CheckerPattern {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 13 |     pub(crate) fn new(a: Color, b: Color) -> CheckerPattern {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GradientPattern` is never constructed
[INFO] [stdout]  --> src/pattern/gradient.rs:6:19
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub(crate) struct GradientPattern {
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/pattern/gradient.rs:13:19
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl GradientPattern {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 13 |     pub(crate) fn new(a: Color, b: Color) -> GradientPattern {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RingPattern` is never constructed
[INFO] [stdout]  --> src/pattern/ring.rs:7:19
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub(crate) struct RingPattern {
[INFO] [stdout]   |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/pattern/ring.rs:14:19
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl RingPattern {
[INFO] [stdout]    | ---------------- associated function in this implementation
[INFO] [stdout] 14 |     pub(crate) fn new(a: Color, b: Color) -> RingPattern {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `StripePattern` is never constructed
[INFO] [stdout]  --> src/pattern/stripe.rs:6:19
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub(crate) struct StripePattern {
[INFO] [stdout]   |                   ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/pattern/stripe.rs:31:19
[INFO] [stdout]    |
[INFO] [stdout] 30 | impl StripePattern {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 31 |     pub(crate) fn new(a: Color, b: Color) -> StripePattern {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Cone` is never constructed
[INFO] [stdout]  --> src/primitives/cone.rs:8:19
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub(crate) struct Cone {
[INFO] [stdout]   |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `close` are never used
[INFO] [stdout]   --> src/primitives/cone.rs:16:19
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl Cone {
[INFO] [stdout]    | --------- associated items in this implementation
[INFO] [stdout] 16 |     pub(crate) fn new() -> Cone {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub(crate) fn close(&mut self) {
[INFO] [stdout]    |                   ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `min_max` is never used
[INFO] [stdout]   --> src/primitives/cone.rs:85:4
[INFO] [stdout]    |
[INFO] [stdout] 85 | fn min_max(a: f64, b: f64) -> (f64, f64) {
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/primitives/cylinder.rs:16:19
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl Cylinder {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 16 |     pub(crate) fn new() -> Cylinder {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Plane` is never constructed
[INFO] [stdout]  --> src/primitives/plane.rs:8:19
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub(crate) struct Plane {
[INFO] [stdout]   |                   ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/primitives/plane.rs:13:19
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Plane {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] 13 |     pub(crate) fn new() -> Plane {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `set_material` and `set_pattern` are never used
[INFO] [stdout]    --> src/primitives/shape.rs:70:19
[INFO] [stdout]     |
[INFO] [stdout] 49  | impl ShapeProps {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 70  |     pub(crate) fn set_material(&mut self, new: Material) {
[INFO] [stdout]     |                   ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     pub(crate) fn set_pattern(&mut self, new: Box<dyn Pattern>) {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `glass` is never used
[INFO] [stdout]   --> src/primitives/sphere.rs:68:19
[INFO] [stdout]    |
[INFO] [stdout] 61 | impl Sphere {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub(crate) fn glass() -> Sphere {
[INFO] [stdout]    |                   ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `water_material` is never used
[INFO] [stdout]   --> src/samples/utility.rs:36:15
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub(super) fn water_material(props: &mut ShapeProps) {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `fov` is never read
[INFO] [stdout]   --> src/scene/camera.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub(crate) struct Camera {
[INFO] [stdout]    |                   ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     fov: f64,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_color` and `set_pattern` are never used
[INFO] [stdout]    --> src/scene/shading/material.rs:85:19
[INFO] [stdout]     |
[INFO] [stdout] 21  | impl Material {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 85  |     pub(crate) fn get_color(&self) -> Color {
[INFO] [stdout]     |                   ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub(crate) fn set_pattern(&mut self, new: Box<dyn Pattern>) {
[INFO] [stdout]     |                   ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `t`, `point`, and `inside` are never read
[INFO] [stdout]    --> src/scene/tracing/intersection.rs:117:16
[INFO] [stdout]     |
[INFO] [stdout] 116 | pub(crate) struct Computation<'a> {
[INFO] [stdout]     |                   ----------- fields in this struct
[INFO] [stdout] 117 |     pub(crate) t: f64,
[INFO] [stdout]     |                ^
[INFO] [stdout] 118 |     pub(crate) object: &'a dyn Shape,
[INFO] [stdout] 119 |     pub(crate) point: Tuple,
[INFO] [stdout]     |                ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 125 |     pub(crate) inside: bool,
[INFO] [stdout]     |                ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Computation` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `first`, `last`, `len`, and `get` are never used
[INFO] [stdout]    --> src/scene/tracing/intersection.rs:197:19
[INFO] [stdout]     |
[INFO] [stdout] 188 | impl<'a> Intersections<'a> {
[INFO] [stdout]     | -------------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 197 |     pub(crate) fn first(&self) -> Option<&Intersection> {
[INFO] [stdout]     |                   ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |     pub(crate) fn last(&self) -> Option<&Intersection> {
[INFO] [stdout]     |                   ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 205 |     pub(crate) fn len(&self) -> usize {
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] ...
[INFO] [stdout] 209 |     pub(crate) fn get(&self, index: usize) -> Option<&Intersection> {
[INFO] [stdout]     |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/primitives/cone.rs:43:24
[INFO] [stdout]    |
[INFO] [stdout] 43 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections> {
[INFO] [stdout]    |                        ^^^^^                      ------------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        this lifetime flows to the output
[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] 43 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections<'_>> {
[INFO] [stdout]    |                                                                ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/primitives/cube.rs:61:24
[INFO] [stdout]    |
[INFO] [stdout] 61 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections> {
[INFO] [stdout]    |                        ^^^^^                      ------------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        this lifetime flows to the output
[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] 61 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections<'_>> {
[INFO] [stdout]    |                                                                ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/primitives/cylinder.rs:38:23
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn intersect_caps(&self, ray: Ray) -> Intersections {
[INFO] [stdout]    |                       ^^^^^               ------------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |                       |
[INFO] [stdout]    |                       this lifetime flows to the output
[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 intersect_caps(&self, ray: Ray) -> Intersections<'_> {
[INFO] [stdout]    |                                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/primitives/cylinder.rs:89:24
[INFO] [stdout]    |
[INFO] [stdout] 89 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections> {
[INFO] [stdout]    |                        ^^^^^                      ------------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        this lifetime flows to the output
[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] 89 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections<'_>> {
[INFO] [stdout]    |                                                                ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/primitives/plane.rs:33:24
[INFO] [stdout]    |
[INFO] [stdout] 33 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections> {
[INFO] [stdout]    |                        ^^^^^                      ------------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        this lifetime flows to the output
[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] 33 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections<'_>> {
[INFO] [stdout]    |                                                                ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/primitives/shape.rs:18:24
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections>;
[INFO] [stdout]    |                        ^^^^^                      ------------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        this lifetime flows to the output
[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 local_intersect(&self, ray: Ray) -> Option<Intersections<'_>>;
[INFO] [stdout]    |                                                                ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/primitives/shape.rs:35:18
[INFO] [stdout]    |
[INFO] [stdout] 35 |     fn intersect(&self, ray: Ray) -> Option<Intersections> {
[INFO] [stdout]    |                  ^^^^^                      ------------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |                  |
[INFO] [stdout]    |                  this lifetime flows to the output
[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] 35 |     fn intersect(&self, ray: Ray) -> Option<Intersections<'_>> {
[INFO] [stdout]    |                                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/primitives/sphere.rs:24:24
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections> {
[INFO] [stdout]    |                        ^^^^^                      ------------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        this lifetime flows to the output
[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] 24 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections<'_>> {
[INFO] [stdout]    |                                                                ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/scene/tracing/intersection.rs:16:39
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub(crate) fn new(t: f64, object: &dyn Shape) -> Intersection {
[INFO] [stdout]    |                                       ^^^^^^^^^^     ------------ the lifetime gets resolved as `'_`
[INFO] [stdout]    |                                       |
[INFO] [stdout]    |                                       this lifetime flows to the output
[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 |     pub(crate) fn new(t: f64, object: &dyn Shape) -> Intersection<'_> {
[INFO] [stdout]    |                                                                  ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/scene/tracing/intersection.rs:24:39
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub(crate) fn prepare_computation(&self, ray: Ray, xs: &Intersections) -> Computation {
[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] 24 |     pub(crate) fn prepare_computation(&self, ray: Ray, xs: &Intersections) -> Computation<'_> {
[INFO] [stdout]    |                                                                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/scene/tracing/intersection.rs:133:18
[INFO] [stdout]     |
[INFO] [stdout] 133 |         object: &'a dyn Shape,
[INFO] [stdout]     |                  ^^ this lifetime flows to the output
[INFO] [stdout] ...
[INFO] [stdout] 143 |     ) -> Computation {
[INFO] [stdout]     |          ----------- the lifetime gets resolved as `'a`
[INFO] [stdout]     |
[INFO] [stdout] help: one option is to consistently use `'a`
[INFO] [stdout]     |
[INFO] [stdout] 143 |     ) -> Computation<'a> {
[INFO] [stdout]     |                     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/scene/tracing/intersection.rs:197:25
[INFO] [stdout]     |
[INFO] [stdout] 197 |     pub(crate) fn first(&self) -> Option<&Intersection> {
[INFO] [stdout]     |                         ^^^^^            -------------
[INFO] [stdout]     |                         |                ||
[INFO] [stdout]     |                         |                |the lifetimes get resolved as `'_`
[INFO] [stdout]     |                         |                the lifetimes get resolved as `'_`
[INFO] [stdout]     |                         this lifetime flows to the output
[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] 197 |     pub(crate) fn first(&self) -> Option<&Intersection<'_>> {
[INFO] [stdout]     |                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/scene/tracing/intersection.rs:201:24
[INFO] [stdout]     |
[INFO] [stdout] 201 |     pub(crate) fn last(&self) -> Option<&Intersection> {
[INFO] [stdout]     |                        ^^^^^            -------------
[INFO] [stdout]     |                        |                ||
[INFO] [stdout]     |                        |                |the lifetimes get resolved as `'_`
[INFO] [stdout]     |                        |                the lifetimes get resolved as `'_`
[INFO] [stdout]     |                        this lifetime flows to the output
[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] 201 |     pub(crate) fn last(&self) -> Option<&Intersection<'_>> {
[INFO] [stdout]     |                                                      ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/scene/tracing/intersection.rs:209:23
[INFO] [stdout]     |
[INFO] [stdout] 209 |     pub(crate) fn get(&self, index: usize) -> Option<&Intersection> {
[INFO] [stdout]     |                       ^^^^^                          -------------
[INFO] [stdout]     |                       |                              ||
[INFO] [stdout]     |                       |                              |the lifetimes get resolved as `'_`
[INFO] [stdout]     |                       |                              the lifetimes get resolved as `'_`
[INFO] [stdout]     |                       this lifetime flows to the output
[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] 209 |     pub(crate) fn get(&self, index: usize) -> Option<&Intersection<'_>> {
[INFO] [stdout]     |                                                                   ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/scene/tracing/intersection.rs:234:23
[INFO] [stdout]     |
[INFO] [stdout] 234 |     pub(crate) fn hit(&self) -> Option<&Intersection> {
[INFO] [stdout]     |                       ^^^^^            -------------
[INFO] [stdout]     |                       |                ||
[INFO] [stdout]     |                       |                |the lifetimes get resolved as `'_`
[INFO] [stdout]     |                       |                the lifetimes get resolved as `'_`
[INFO] [stdout]     |                       this lifetime flows to the output
[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] 234 |     pub(crate) fn hit(&self) -> Option<&Intersection<'_>> {
[INFO] [stdout]     |                                                     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/scene/world.rs:108:18
[INFO] [stdout]     |
[INFO] [stdout] 108 |     fn intersect(&self, ray: Ray) -> Intersections {
[INFO] [stdout]     |                  ^^^^^               ------------- the lifetime gets resolved as `'_`
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  this lifetime flows to the output
[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 intersect(&self, ray: Ray) -> Intersections<'_> {
[INFO] [stdout]     |                                                   ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `point`
[INFO] [stdout]   --> src/primitives/cone.rs:39:31
[INFO] [stdout]    |
[INFO] [stdout] 39 |     fn local_normal_at(&self, point: Tuple) -> Tuple {
[INFO] [stdout]    |                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_point`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `closed` is never read
[INFO] [stdout]   --> src/primitives/cone.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 8  | pub(crate) struct Cone {
[INFO] [stdout]    |                   ---- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 12 |     closed: bool,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Cone` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `close` is never used
[INFO] [stdout]   --> src/primitives/cone.rs:25:19
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl Cone {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub(crate) fn close(&mut self) {
[INFO] [stdout]    |                   ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `water_material` is never used
[INFO] [stdout]   --> src/samples/utility.rs:36:15
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub(super) fn water_material(props: &mut ShapeProps) {
[INFO] [stdout]    |               ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `t` is never read
[INFO] [stdout]    --> src/scene/tracing/intersection.rs:117:16
[INFO] [stdout]     |
[INFO] [stdout] 116 | pub(crate) struct Computation<'a> {
[INFO] [stdout]     |                   ----------- field in this struct
[INFO] [stdout] 117 |     pub(crate) t: f64,
[INFO] [stdout]     |                ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `Computation` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/primitives/cone.rs:43:24
[INFO] [stdout]    |
[INFO] [stdout] 43 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections> {
[INFO] [stdout]    |                        ^^^^^                      ------------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        this lifetime flows to the output
[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] 43 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections<'_>> {
[INFO] [stdout]    |                                                                ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/primitives/cube.rs:61:24
[INFO] [stdout]    |
[INFO] [stdout] 61 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections> {
[INFO] [stdout]    |                        ^^^^^                      ------------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        this lifetime flows to the output
[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] 61 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections<'_>> {
[INFO] [stdout]    |                                                                ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/primitives/cylinder.rs:38:23
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn intersect_caps(&self, ray: Ray) -> Intersections {
[INFO] [stdout]    |                       ^^^^^               ------------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |                       |
[INFO] [stdout]    |                       this lifetime flows to the output
[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 intersect_caps(&self, ray: Ray) -> Intersections<'_> {
[INFO] [stdout]    |                                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/primitives/cylinder.rs:89:24
[INFO] [stdout]    |
[INFO] [stdout] 89 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections> {
[INFO] [stdout]    |                        ^^^^^                      ------------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        this lifetime flows to the output
[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] 89 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections<'_>> {
[INFO] [stdout]    |                                                                ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/primitives/plane.rs:33:24
[INFO] [stdout]    |
[INFO] [stdout] 33 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections> {
[INFO] [stdout]    |                        ^^^^^                      ------------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        this lifetime flows to the output
[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] 33 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections<'_>> {
[INFO] [stdout]    |                                                                ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/primitives/shape.rs:18:24
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections>;
[INFO] [stdout]    |                        ^^^^^                      ------------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        this lifetime flows to the output
[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 local_intersect(&self, ray: Ray) -> Option<Intersections<'_>>;
[INFO] [stdout]    |                                                                ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/primitives/shape.rs:35:18
[INFO] [stdout]    |
[INFO] [stdout] 35 |     fn intersect(&self, ray: Ray) -> Option<Intersections> {
[INFO] [stdout]    |                  ^^^^^                      ------------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |                  |
[INFO] [stdout]    |                  this lifetime flows to the output
[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] 35 |     fn intersect(&self, ray: Ray) -> Option<Intersections<'_>> {
[INFO] [stdout]    |                                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/primitives/shape.rs:152:28
[INFO] [stdout]     |
[INFO] [stdout] 152 |         fn local_intersect(&self, _ray: Ray) -> Option<Intersections> {
[INFO] [stdout]     |                            ^^^^^                       ------------- the lifetime gets resolved as `'_`
[INFO] [stdout]     |                            |
[INFO] [stdout]     |                            this lifetime flows to the output
[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] 152 |         fn local_intersect(&self, _ray: Ray) -> Option<Intersections<'_>> {
[INFO] [stdout]     |                                                                     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/primitives/sphere.rs:24:24
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections> {
[INFO] [stdout]    |                        ^^^^^                      ------------- the lifetime gets resolved as `'_`
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        this lifetime flows to the output
[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] 24 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections<'_>> {
[INFO] [stdout]    |                                                                ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/scene/tracing/intersection.rs:16:39
[INFO] [stdout]    |
[INFO] [stdout] 16 |     pub(crate) fn new(t: f64, object: &dyn Shape) -> Intersection {
[INFO] [stdout]    |                                       ^^^^^^^^^^     ------------ the lifetime gets resolved as `'_`
[INFO] [stdout]    |                                       |
[INFO] [stdout]    |                                       this lifetime flows to the output
[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 |     pub(crate) fn new(t: f64, object: &dyn Shape) -> Intersection<'_> {
[INFO] [stdout]    |                                                                  ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]   --> src/scene/tracing/intersection.rs:24:39
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub(crate) fn prepare_computation(&self, ray: Ray, xs: &Intersections) -> Computation {
[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] 24 |     pub(crate) fn prepare_computation(&self, ray: Ray, xs: &Intersections) -> Computation<'_> {
[INFO] [stdout]    |                                                                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/scene/tracing/intersection.rs:133:18
[INFO] [stdout]     |
[INFO] [stdout] 133 |         object: &'a dyn Shape,
[INFO] [stdout]     |                  ^^ this lifetime flows to the output
[INFO] [stdout] ...
[INFO] [stdout] 143 |     ) -> Computation {
[INFO] [stdout]     |          ----------- the lifetime gets resolved as `'a`
[INFO] [stdout]     |
[INFO] [stdout] help: one option is to consistently use `'a`
[INFO] [stdout]     |
[INFO] [stdout] 143 |     ) -> Computation<'a> {
[INFO] [stdout]     |                     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/scene/tracing/intersection.rs:197:25
[INFO] [stdout]     |
[INFO] [stdout] 197 |     pub(crate) fn first(&self) -> Option<&Intersection> {
[INFO] [stdout]     |                         ^^^^^            -------------
[INFO] [stdout]     |                         |                ||
[INFO] [stdout]     |                         |                |the lifetimes get resolved as `'_`
[INFO] [stdout]     |                         |                the lifetimes get resolved as `'_`
[INFO] [stdout]     |                         this lifetime flows to the output
[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] 197 |     pub(crate) fn first(&self) -> Option<&Intersection<'_>> {
[INFO] [stdout]     |                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/scene/tracing/intersection.rs:201:24
[INFO] [stdout]     |
[INFO] [stdout] 201 |     pub(crate) fn last(&self) -> Option<&Intersection> {
[INFO] [stdout]     |                        ^^^^^            -------------
[INFO] [stdout]     |                        |                ||
[INFO] [stdout]     |                        |                |the lifetimes get resolved as `'_`
[INFO] [stdout]     |                        |                the lifetimes get resolved as `'_`
[INFO] [stdout]     |                        this lifetime flows to the output
[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] 201 |     pub(crate) fn last(&self) -> Option<&Intersection<'_>> {
[INFO] [stdout]     |                                                      ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/scene/tracing/intersection.rs:209:23
[INFO] [stdout]     |
[INFO] [stdout] 209 |     pub(crate) fn get(&self, index: usize) -> Option<&Intersection> {
[INFO] [stdout]     |                       ^^^^^                          -------------
[INFO] [stdout]     |                       |                              ||
[INFO] [stdout]     |                       |                              |the lifetimes get resolved as `'_`
[INFO] [stdout]     |                       |                              the lifetimes get resolved as `'_`
[INFO] [stdout]     |                       this lifetime flows to the output
[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] 209 |     pub(crate) fn get(&self, index: usize) -> Option<&Intersection<'_>> {
[INFO] [stdout]     |                                                                   ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/scene/tracing/intersection.rs:234:23
[INFO] [stdout]     |
[INFO] [stdout] 234 |     pub(crate) fn hit(&self) -> Option<&Intersection> {
[INFO] [stdout]     |                       ^^^^^            -------------
[INFO] [stdout]     |                       |                ||
[INFO] [stdout]     |                       |                |the lifetimes get resolved as `'_`
[INFO] [stdout]     |                       |                the lifetimes get resolved as `'_`
[INFO] [stdout]     |                       this lifetime flows to the output
[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] 234 |     pub(crate) fn hit(&self) -> Option<&Intersection<'_>> {
[INFO] [stdout]     |                                                     ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stdout]    --> src/scene/world.rs:108:18
[INFO] [stdout]     |
[INFO] [stdout] 108 |     fn intersect(&self, ray: Ray) -> Intersections {
[INFO] [stdout]     |                  ^^^^^               ------------- the lifetime gets resolved as `'_`
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  this lifetime flows to the output
[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 intersect(&self, ray: Ray) -> Intersections<'_> {
[INFO] [stdout]     |                                                   ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 10.17s
[INFO] running `Command { std: "docker" "inspect" "f7c915ac0337acce14222312271282e8801a005ce78aa4827e24a323bb60ca2e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f7c915ac0337acce14222312271282e8801a005ce78aa4827e24a323bb60ca2e", kill_on_drop: false }`
[INFO] [stdout] f7c915ac0337acce14222312271282e8801a005ce78aa4827e24a323bb60ca2e
