[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] testing AlcyZ/shindex-rust-tracer-challenge against master#733b47ea4b1b86216f14ef56e49440c33933f230+rustflags=-Copt-level=3 for pr-138759
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAlcyZ%2Fshindex-rust-tracer-challenge" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/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-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/AlcyZ/shindex-rust-tracer-challenge on toolchain 733b47ea4b1b86216f14ef56e49440c33933f230
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+733b47ea4b1b86216f14ef56e49440c33933f230" "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" "+733b47ea4b1b86216f14ef56e49440c33933f230" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+733b47ea4b1b86216f14ef56e49440c33933f230" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] dd91ae3e81e935bc7945c72ee0ff5d5a36285c133d09d5a73660d54646d0b6af
[INFO] running `Command { std: "docker" "start" "-a" "dd91ae3e81e935bc7945c72ee0ff5d5a36285c133d09d5a73660d54646d0b6af", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "dd91ae3e81e935bc7945c72ee0ff5d5a36285c133d09d5a73660d54646d0b6af", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "dd91ae3e81e935bc7945c72ee0ff5d5a36285c133d09d5a73660d54646d0b6af", kill_on_drop: false }`
[INFO] [stdout] dd91ae3e81e935bc7945c72ee0ff5d5a36285c133d09d5a73660d54646d0b6af
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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 -Copt-level=3" "-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+733b47ea4b1b86216f14ef56e49440c33933f230" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 739cecedcb669fc16f44910f980eb750e7e96f6ee25221b424a35634f8316081
[INFO] running `Command { std: "docker" "start" "-a" "739cecedcb669fc16f44910f980eb750e7e96f6ee25221b424a35634f8316081", 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 rayon-core v1.9.0
[INFO] [stderr]    Compiling rayon v1.5.0
[INFO] [stderr]    Compiling miniz_oxide v0.4.4
[INFO] [stderr]    Compiling crc32fast v1.2.1
[INFO] [stderr]    Compiling adler32 v1.2.0
[INFO] [stderr]    Compiling either v1.6.1
[INFO] [stderr]    Compiling bitflags v1.2.1
[INFO] [stderr]    Compiling num-rational v0.3.2
[INFO] [stderr]    Compiling num-iter v0.1.42
[INFO] [stderr]    Compiling weezl v0.1.5
[INFO] [stderr]    Compiling getrandom v0.2.2
[INFO] [stderr]    Compiling num-integer v0.1.44
[INFO] [stderr]    Compiling scoped_threadpool v0.1.9
[INFO] [stderr]    Compiling deflate v0.8.6
[INFO] [stderr]    Compiling miniz_oxide v0.3.7
[INFO] [stderr]    Compiling bytemuck v1.5.1
[INFO] [stderr]    Compiling gif v0.11.2
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.4
[INFO] [stderr]    Compiling crossbeam-channel v0.5.1
[INFO] [stderr]    Compiling crossbeam-deque v0.8.0
[INFO] [stderr]    Compiling num_cpus v1.13.0
[INFO] [stderr]    Compiling time v0.1.44
[INFO] [stderr]    Compiling png v0.16.8
[INFO] [stderr]    Compiling uuid v0.8.2
[INFO] [stderr]    Compiling threadpool v1.8.1
[INFO] [stderr]    Compiling chrono v0.4.19
[INFO] [stderr]    Compiling jpeg-decoder v0.1.22
[INFO] [stderr]    Compiling tiff v0.6.1
[INFO] [stderr]    Compiling image v0.23.14
[INFO] [stderr]    Compiling 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 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] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 03s
[INFO] running `Command { std: "docker" "inspect" "739cecedcb669fc16f44910f980eb750e7e96f6ee25221b424a35634f8316081", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "739cecedcb669fc16f44910f980eb750e7e96f6ee25221b424a35634f8316081", kill_on_drop: false }`
[INFO] [stdout] 739cecedcb669fc16f44910f980eb750e7e96f6ee25221b424a35634f8316081
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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 -Copt-level=3" "-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+733b47ea4b1b86216f14ef56e49440c33933f230" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 73420af24bc4e0b33d78dd79ad631ecec78b44894149552a314af70c45bdc6b7
[INFO] running `Command { std: "docker" "start" "-a" "73420af24bc4e0b33d78dd79ad631ecec78b44894149552a314af70c45bdc6b7", kill_on_drop: false }`
[INFO] [stderr]    Compiling 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 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 `test` profile [unoptimized + debuginfo] target(s) in 3.56s
[INFO] running `Command { std: "docker" "inspect" "73420af24bc4e0b33d78dd79ad631ecec78b44894149552a314af70c45bdc6b7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "73420af24bc4e0b33d78dd79ad631ecec78b44894149552a314af70c45bdc6b7", kill_on_drop: false }`
[INFO] [stdout] 73420af24bc4e0b33d78dd79ad631ecec78b44894149552a314af70c45bdc6b7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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 -Copt-level=3" "-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+733b47ea4b1b86216f14ef56e49440c33933f230" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] da0d732dcd04dbf572d8b2698a9ea523a93030cc0fc7bd3a19ed3a0f2cb35e54
[INFO] running `Command { std: "docker" "start" "-a" "da0d732dcd04dbf572d8b2698a9ea523a93030cc0fc7bd3a19ed3a0f2cb35e54", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `rotation_y`
[INFO] [stderr]  --> src/samples/cylinders_sample.rs:1:35
[INFO] [stderr]   |
[INFO] [stderr] 1 | use crate::math::transformation::{rotation_y, scaling, translation};
[INFO] [stderr]   |                                   ^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `water_material`
[INFO] [stderr]  --> src/samples/cylinders_sample.rs:8:58
[INFO] [stderr]   |
[INFO] [stderr] 8 |     date_ymd_his, glass_material, mirror_material, save, water_material, SceneCamera,
[INFO] [stderr]   |                                                          ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::f64::consts::PI`
[INFO] [stderr]   --> src/samples/cylinders_sample.rs:13:5
[INFO] [stderr]    |
[INFO] [stderr] 13 | use std::f64::consts::PI;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `point`
[INFO] [stderr]   --> src/primitives/cone.rs:39:31
[INFO] [stderr]    |
[INFO] [stderr] 39 |     fn local_normal_at(&self, point: Tuple) -> Tuple {
[INFO] [stderr]    |                               ^^^^^ help: if this is intentional, prefix it with an underscore: `_point`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: field `closed` is never read
[INFO] [stderr]   --> src/primitives/cone.rs:12:5
[INFO] [stderr]    |
[INFO] [stderr] 8  | pub(crate) struct Cone {
[INFO] [stderr]    |                   ---- field in this struct
[INFO] [stderr] ...
[INFO] [stderr] 12 |     closed: bool,
[INFO] [stderr]    |     ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `Cone` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr]    = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: method `close` is never used
[INFO] [stderr]   --> src/primitives/cone.rs:25:19
[INFO] [stderr]    |
[INFO] [stderr] 15 | impl Cone {
[INFO] [stderr]    | --------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 25 |     pub(crate) fn close(&mut self) {
[INFO] [stderr]    |                   ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `water_material` is never used
[INFO] [stderr]   --> src/samples/utility.rs:36:15
[INFO] [stderr]    |
[INFO] [stderr] 36 | pub(super) fn water_material(props: &mut ShapeProps) {
[INFO] [stderr]    |               ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field `t` is never read
[INFO] [stderr]    --> src/scene/tracing/intersection.rs:117:16
[INFO] [stderr]     |
[INFO] [stderr] 116 | pub(crate) struct Computation<'a> {
[INFO] [stderr]     |                   ----------- field in this struct
[INFO] [stderr] 117 |     pub(crate) t: f64,
[INFO] [stderr]     |                ^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `Computation` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stderr] 
[INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stderr]   --> src/primitives/cone.rs:43:24
[INFO] [stderr]    |
[INFO] [stderr] 43 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections> {
[INFO] [stderr]    |                        ^^^^^                      ------------- the lifetime gets resolved as `'_`
[INFO] [stderr]    |                        |
[INFO] [stderr]    |                        this lifetime flows to the output
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stderr]    |
[INFO] [stderr] 43 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections<'_>> {
[INFO] [stderr]    |                                                                ++++
[INFO] [stderr] 
[INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stderr]   --> src/primitives/cube.rs:61:24
[INFO] [stderr]    |
[INFO] [stderr] 61 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections> {
[INFO] [stderr]    |                        ^^^^^                      ------------- the lifetime gets resolved as `'_`
[INFO] [stderr]    |                        |
[INFO] [stderr]    |                        this lifetime flows to the output
[INFO] [stderr]    |
[INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stderr]    |
[INFO] [stderr] 61 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections<'_>> {
[INFO] [stderr]    |                                                                ++++
[INFO] [stderr] 
[INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stderr]   --> src/primitives/cylinder.rs:38:23
[INFO] [stderr]    |
[INFO] [stderr] 38 |     fn intersect_caps(&self, ray: Ray) -> Intersections {
[INFO] [stderr]    |                       ^^^^^               ------------- the lifetime gets resolved as `'_`
[INFO] [stderr]    |                       |
[INFO] [stderr]    |                       this lifetime flows to the output
[INFO] [stderr]    |
[INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stderr]    |
[INFO] [stderr] 38 |     fn intersect_caps(&self, ray: Ray) -> Intersections<'_> {
[INFO] [stderr]    |                                                        ++++
[INFO] [stderr] 
[INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stderr]   --> src/primitives/cylinder.rs:89:24
[INFO] [stderr]    |
[INFO] [stderr] 89 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections> {
[INFO] [stderr]    |                        ^^^^^                      ------------- the lifetime gets resolved as `'_`
[INFO] [stderr]    |                        |
[INFO] [stderr]    |                        this lifetime flows to the output
[INFO] [stderr]    |
[INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stderr]    |
[INFO] [stderr] 89 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections<'_>> {
[INFO] [stderr]    |                                                                ++++
[INFO] [stderr] 
[INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stderr]   --> src/primitives/plane.rs:33:24
[INFO] [stderr]    |
[INFO] [stderr] 33 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections> {
[INFO] [stderr]    |                        ^^^^^                      ------------- the lifetime gets resolved as `'_`
[INFO] [stderr]    |                        |
[INFO] [stderr]    |                        this lifetime flows to the output
[INFO] [stderr]    |
[INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stderr]    |
[INFO] [stderr] 33 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections<'_>> {
[INFO] [stderr]    |                                                                ++++
[INFO] [stderr] 
[INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stderr]   --> src/primitives/shape.rs:18:24
[INFO] [stderr]    |
[INFO] [stderr] 18 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections>;
[INFO] [stderr]    |                        ^^^^^                      ------------- the lifetime gets resolved as `'_`
[INFO] [stderr]    |                        |
[INFO] [stderr]    |                        this lifetime flows to the output
[INFO] [stderr]    |
[INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stderr]    |
[INFO] [stderr] 18 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections<'_>>;
[INFO] [stderr]    |                                                                ++++
[INFO] [stderr] 
[INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stderr]   --> src/primitives/shape.rs:35:18
[INFO] [stderr]    |
[INFO] [stderr] 35 |     fn intersect(&self, ray: Ray) -> Option<Intersections> {
[INFO] [stderr]    |                  ^^^^^                      ------------- the lifetime gets resolved as `'_`
[INFO] [stderr]    |                  |
[INFO] [stderr]    |                  this lifetime flows to the output
[INFO] [stderr]    |
[INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stderr]    |
[INFO] [stderr] 35 |     fn intersect(&self, ray: Ray) -> Option<Intersections<'_>> {
[INFO] [stderr]    |                                                          ++++
[INFO] [stderr] 
[INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stderr]    --> src/primitives/shape.rs:152:28
[INFO] [stderr]     |
[INFO] [stderr] 152 |         fn local_intersect(&self, _ray: Ray) -> Option<Intersections> {
[INFO] [stderr]     |                            ^^^^^                       ------------- the lifetime gets resolved as `'_`
[INFO] [stderr]     |                            |
[INFO] [stderr]     |                            this lifetime flows to the output
[INFO] [stderr]     |
[INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stderr]     |
[INFO] [stderr] 152 |         fn local_intersect(&self, _ray: Ray) -> Option<Intersections<'_>> {
[INFO] [stderr]     |                                                                     ++++
[INFO] [stderr] 
[INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stderr]   --> src/primitives/sphere.rs:24:24
[INFO] [stderr]    |
[INFO] [stderr] 24 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections> {
[INFO] [stderr]    |                        ^^^^^                      ------------- the lifetime gets resolved as `'_`
[INFO] [stderr]    |                        |
[INFO] [stderr]    |                        this lifetime flows to the output
[INFO] [stderr]    |
[INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stderr]    |
[INFO] [stderr] 24 |     fn local_intersect(&self, ray: Ray) -> Option<Intersections<'_>> {
[INFO] [stderr]    |                                                                ++++
[INFO] [stderr] 
[INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stderr]   --> src/scene/tracing/intersection.rs:16:39
[INFO] [stderr]    |
[INFO] [stderr] 16 |     pub(crate) fn new(t: f64, object: &dyn Shape) -> Intersection {
[INFO] [stderr]    |                                       ^^^^^^^^^^     ------------ the lifetime gets resolved as `'_`
[INFO] [stderr]    |                                       |
[INFO] [stderr]    |                                       this lifetime flows to the output
[INFO] [stderr]    |
[INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stderr]    |
[INFO] [stderr] 16 |     pub(crate) fn new(t: f64, object: &dyn Shape) -> Intersection<'_> {
[INFO] [stderr]    |                                                                  ++++
[INFO] [stderr] 
[INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stderr]   --> src/scene/tracing/intersection.rs:24:39
[INFO] [stderr]    |
[INFO] [stderr] 24 |     pub(crate) fn prepare_computation(&self, ray: Ray, xs: &Intersections) -> Computation {
[INFO] [stderr]    |                                       ^^^^^ this lifetime flows to the output ----------- the lifetime gets resolved as `'_`
[INFO] [stderr]    |
[INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stderr]    |
[INFO] [stderr] 24 |     pub(crate) fn prepare_computation(&self, ray: Ray, xs: &Intersections) -> Computation<'_> {
[INFO] [stderr]    |                                                                                          ++++
[INFO] [stderr] 
[INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stderr]    --> src/scene/tracing/intersection.rs:133:18
[INFO] [stderr]     |
[INFO] [stderr] 133 |         object: &'a dyn Shape,
[INFO] [stderr]     |                  ^^ this lifetime flows to the output
[INFO] [stderr] ...
[INFO] [stderr] 143 |     ) -> Computation {
[INFO] [stderr]     |          ----------- the lifetime gets resolved as `'a`
[INFO] [stderr]     |
[INFO] [stderr] help: one option is to consistently use `'a`
[INFO] [stderr]     |
[INFO] [stderr] 143 |     ) -> Computation<'a> {
[INFO] [stderr]     |                     ++++
[INFO] [stderr] 
[INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stderr]    --> src/scene/tracing/intersection.rs:197:25
[INFO] [stderr]     |
[INFO] [stderr] 197 |     pub(crate) fn first(&self) -> Option<&Intersection> {
[INFO] [stderr]     |                         ^^^^^            -------------
[INFO] [stderr]     |                         |                ||
[INFO] [stderr]     |                         |                |the lifetimes get resolved as `'_`
[INFO] [stderr]     |                         |                the lifetimes get resolved as `'_`
[INFO] [stderr]     |                         this lifetime flows to the output
[INFO] [stderr]     |
[INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stderr]     |
[INFO] [stderr] 197 |     pub(crate) fn first(&self) -> Option<&Intersection<'_>> {
[INFO] [stderr]     |                                                       ++++
[INFO] [stderr] 
[INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stderr]    --> src/scene/tracing/intersection.rs:201:24
[INFO] [stderr]     |
[INFO] [stderr] 201 |     pub(crate) fn last(&self) -> Option<&Intersection> {
[INFO] [stderr]     |                        ^^^^^            -------------
[INFO] [stderr]     |                        |                ||
[INFO] [stderr]     |                        |                |the lifetimes get resolved as `'_`
[INFO] [stderr]     |                        |                the lifetimes get resolved as `'_`
[INFO] [stderr]     |                        this lifetime flows to the output
[INFO] [stderr]     |
[INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stderr]     |
[INFO] [stderr] 201 |     pub(crate) fn last(&self) -> Option<&Intersection<'_>> {
[INFO] [stderr]     |                                                      ++++
[INFO] [stderr] 
[INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stderr]    --> src/scene/tracing/intersection.rs:209:23
[INFO] [stderr]     |
[INFO] [stderr] 209 |     pub(crate) fn get(&self, index: usize) -> Option<&Intersection> {
[INFO] [stderr]     |                       ^^^^^                          -------------
[INFO] [stderr]     |                       |                              ||
[INFO] [stderr]     |                       |                              |the lifetimes get resolved as `'_`
[INFO] [stderr]     |                       |                              the lifetimes get resolved as `'_`
[INFO] [stderr]     |                       this lifetime flows to the output
[INFO] [stderr]     |
[INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stderr]     |
[INFO] [stderr] 209 |     pub(crate) fn get(&self, index: usize) -> Option<&Intersection<'_>> {
[INFO] [stderr]     |                                                                   ++++
[INFO] [stderr] 
[INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stderr]    --> src/scene/tracing/intersection.rs:234:23
[INFO] [stderr]     |
[INFO] [stderr] 234 |     pub(crate) fn hit(&self) -> Option<&Intersection> {
[INFO] [stderr]     |                       ^^^^^            -------------
[INFO] [stderr]     |                       |                ||
[INFO] [stderr]     |                       |                |the lifetimes get resolved as `'_`
[INFO] [stderr]     |                       |                the lifetimes get resolved as `'_`
[INFO] [stderr]     |                       this lifetime flows to the output
[INFO] [stderr]     |
[INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stderr]     |
[INFO] [stderr] 234 |     pub(crate) fn hit(&self) -> Option<&Intersection<'_>> {
[INFO] [stderr]     |                                                     ++++
[INFO] [stderr] 
[INFO] [stderr] warning: lifetime flowing from input to output with different syntax can be confusing
[INFO] [stderr]    --> src/scene/world.rs:108:18
[INFO] [stderr]     |
[INFO] [stderr] 108 |     fn intersect(&self, ray: Ray) -> Intersections {
[INFO] [stderr]     |                  ^^^^^               ------------- the lifetime gets resolved as `'_`
[INFO] [stderr]     |                  |
[INFO] [stderr]     |                  this lifetime flows to the output
[INFO] [stderr]     |
[INFO] [stderr] help: one option is to remove the lifetime for references and use the anonymous lifetime for paths
[INFO] [stderr]     |
[INFO] [stderr] 108 |     fn intersect(&self, ray: Ray) -> Intersections<'_> {
[INFO] [stderr]     |                                                   ++++
[INFO] [stderr] 
[INFO] [stderr] warning: `shindex-rust-tracer-challenge` (bin "shindex-rust-tracer-challenge" test) generated 25 warnings (run `cargo fix --bin "shindex-rust-tracer-challenge" --tests` to apply 3 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.10s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/shindex_rust_tracer_challenge-0bdf4f3b185bcf98)
[INFO] [stdout] 
[INFO] [stdout] running 194 tests
[INFO] [stdout] test math::matrix::tests::calc_cofactor_of_3x3_matrix ... ok
[INFO] [stdout] test math::matrix::tests::calc_determinant_of_3x3_matrix ... ok
[INFO] [stdout] test math::matrix::tests::calc_determinant_of_4x4_matrix ... ok
[INFO] [stdout] test math::matrix::tests::test_calc_inverse_of_matrix_1 ... ok
[INFO] [stdout] test math::matrix::tests::test_calc_inverse_of_matrix_2 ... ok
[INFO] [stdout] test math::matrix::tests::calc_determinant_of_2x2_matrix ... ok
[INFO] [stdout] test math::matrix::tests::test_calc_minor_of_3x3_matrix ... ok
[INFO] [stdout] test math::matrix::tests::test_create_and_access_m3_matrix ... ok
[INFO] [stdout] test math::matrix::tests::test_equality_with_different_matrices ... ok
[INFO] [stdout] test math::matrix::tests::test_equality_with_identical_matrices ... ok
[INFO] [stdout] test math::matrix::tests::test_multiply_matrix_by_identity_matrix ... ok
[INFO] [stdout] test math::matrix::tests::test_create_and_access_m2_matrix ... ok
[INFO] [stdout] test math::matrix::tests::test_multiply_two_matrices ... ok
[INFO] [stdout] test math::matrix::tests::test_create_and_access_m4_matrix ... ok
[INFO] [stdout] test math::matrix::tests::test_transposing_matrix ... ok
[INFO] [stdout] test math::matrix::tests::test_non_invertible_matrix ... ok
[INFO] [stdout] test math::transformation::tests::test_chained_transformations_must_be_applied_in_reverse_order ... ok
[INFO] [stdout] test math::transformation::tests::test_multiply_inverse_of_scaling_matrix ... ok
[INFO] [stdout] test math::transformation::tests::test_individual_transformations_are_applied_in_sequence ... ok
[INFO] [stdout] test math::matrix::tests::test_multiply_matrix_by_identity_tuple ... ok
[INFO] [stdout] test math::transformation::tests::test_rotate_point_around_y_axis ... ok
[INFO] [stdout] test math::transformation::tests::test_rotate_point_around_z_axis ... ok
[INFO] [stdout] test math::transformation::tests::test_scaling_matrix_applied_to_point ... ok
[INFO] [stdout] test math::matrix::tests::test_submatrix_of_4x4 ... ok
[INFO] [stdout] test math::transformation::tests::test_scaling_matrix_applied_to_vector ... ok
[INFO] [stdout] test math::matrix::tests::test_multiply_product_by_inverse ... ok
[INFO] [stdout] test math::matrix::tests::test_multiply_matrix_by_tuple ... ok
[INFO] [stdout] test math::transformation::tests::test_rotate_point_around_x_axis ... ok
[INFO] [stdout] test math::transformation::tests::test_reflection_is_scaling_by_negative_value ... ok
[INFO] [stdout] test math::transformation::tests::test_multiply_by_inverse_of_translation_matrix ... ok
[INFO] [stdout] test math::transformation::tests::test_shearing_transformation_moves_x_in_proportion_to_z ... ok
[INFO] [stdout] test math::transformation::tests::test_translation_does_not_affect_direction_vectors ... ok
[INFO] [stdout] test math::transformation::tests::test_inverse_rotate_point_around_x_axis_in_opposite_direction ... ok
[INFO] [stdout] test math::tuple::tests::test_add_two_tuples ... ok
[INFO] [stdout] test math::tuple::tests::test_compute_magnitude_1 ... ok
[INFO] [stdout] test math::transformation::tests::test_shearing_transformation_moves_y_in_proportion_to_z ... ok
[INFO] [stdout] test math::matrix::tests::test_invertible_matrix ... ok
[INFO] [stdout] test math::transformation::tests::test_shearing_transformation_moves_y_in_proportion_to_x ... ok
[INFO] [stdout] test math::transformation::tests::test_shearing_transformation_moves_z_in_proportion_to_x ... ok
[INFO] [stdout] test math::transformation::tests::test_shearing_transformation_moves_z_in_proportion_to_y ... ok
[INFO] [stdout] test math::transformation::tests::test_transformation_matrix_for_default_orientation ... ok
[INFO] [stdout] test math::transformation::tests::test_shearing_transformation_moves_x_in_proportion_to_y ... ok
[INFO] [stdout] test math::transformation::tests::test_view_in_arbitrary_direction ... ok
[INFO] [stdout] test math::transformation::tests::test_view_transformation_looking_in_positive_z_direction ... ok
[INFO] [stdout] test math::tuple::tests::negating_tuple ... ok
[INFO] [stdout] test math::transformation::tests::test_view_transformation_moves_world ... ok
[INFO] [stdout] test math::matrix::tests::test_submatrix_of_3x3 ... ok
[INFO] [stdout] test math::tuple::tests::test_compute_magnitude_2 ... ok
[INFO] [stdout] test math::tuple::tests::test_compute_magnitude_4 ... ok
[INFO] [stdout] test math::tuple::tests::test_compute_magnitude_5 ... ok
[INFO] [stdout] test math::tuple::tests::test_cross_product_1 ... ok
[INFO] [stdout] test math::tuple::tests::test_cross_product_2 ... ok
[INFO] [stdout] test math::tuple::tests::test_direction_has_factory_fn ... ok
[INFO] [stdout] test math::tuple::tests::test_div_tuple_by_scalar ... ok
[INFO] [stdout] test math::tuple::tests::test_dot_product_of_directions ... ok
[INFO] [stdout] test math::tuple::tests::test_magnitude_of_normalized_vector ... ok
[INFO] [stdout] test math::tuple::tests::test_mul_tuple_by_faction ... ok
[INFO] [stdout] test math::tuple::tests::test_compute_magnitude_3 ... ok
[INFO] [stdout] test math::tuple::tests::test_normalize_1 ... ok
[INFO] [stdout] test math::tuple::tests::test_normalize_2 ... ok
[INFO] [stdout] test pattern::gradient::tests::test_gradient_linearly_interpolates_between_colors ... ok
[INFO] [stdout] test pattern::ring::tests::test_ring_should_extend_in_both_x_and_z ... ok
[INFO] [stdout] test math::tuple::tests::test_point_has_factory_fn ... ok
[INFO] [stdout] test math::tuple::tests::test_reflecting_direction_approaching_at_45_degree ... ok
[INFO] [stdout] test math::tuple::tests::test_reflecting_direction_off_slanted_surface ... ok
[INFO] [stdout] test math::tuple::tests::test_subtract_direction_from_point ... ok
[INFO] [stdout] test math::tuple::tests::test_subtract_two_directions ... ok
[INFO] [stdout] test math::tuple::tests::test_subtract_two_points ... ok
[INFO] [stdout] test math::tuple::tests::test_tuple_with_w_equals_0_is_direction ... ok
[INFO] [stdout] test math::tuple::tests::test_tuple_with_w_equals_1_is_point ... ok
[INFO] [stdout] test pattern::checker::tests::test_checkers_should_repeat_in_y ... ok
[INFO] [stdout] test math::tuple::tests::test_mul_tuple_by_scalar ... ok
[INFO] [stdout] test pattern::checker::tests::test_checkers_should_repeat_in_z ... ok
[INFO] [stdout] test pattern::stripe::tests::test_stripe_pattern_alternates_in_x ... ok
[INFO] [stdout] test pattern::stripe::tests::test_create_stripe_pattern ... ok
[INFO] [stdout] test pattern::stripe::tests::test_stripe_pattern_is_constant_in_y ... ok
[INFO] [stdout] test pattern::tests::test_assign_pattern_transformation ... ok
[INFO] [stdout] test pattern::tests::test_pattern_with_object_and_pattern_transformation ... ok
[INFO] [stdout] test pattern::tests::test_default_pattern_transformation ... ok
[INFO] [stdout] test pattern::tests::test_pattern_with_object_transformation ... ok
[INFO] [stdout] test pattern::tests::test_pattern_with_pattern_transformation ... ok
[INFO] [stdout] test primitives::cone::tests::test_intersect_cone_with_ray ... ok
[INFO] [stdout] test primitives::cone::tests::test_intersecting_cone_with_ray_parallel_to_one_of_its_halves ... ok
[INFO] [stdout] test primitives::cube::tests::test_normal_on_surface_of_cube ... ok
[INFO] [stdout] test primitives::cube::tests::test_ray_misses_cube ... ok
[INFO] [stdout] test primitives::cylinder::tests::test_intersecting_a_constrained_cylinder ... ok
[INFO] [stdout] test primitives::cylinder::tests::test_intersecting_caps_of_closed_cylinder ... ok
[INFO] [stdout] test primitives::cylinder::tests::test_normal_vector_on_cylinder_end_caps ... ok
[INFO] [stdout] test primitives::cylinder::tests::test_ray_miss_cylinder ... ok
[INFO] [stdout] test primitives::plane::tests::test_intersect_plane_from_below ... ok
[INFO] [stdout] test primitives::plane::tests::test_intersect_with_coplanar_ray ... ok
[INFO] [stdout] test primitives::shape::tests::test_assign_transformation ... ok
[INFO] [stdout] test primitives::plane::tests::test_intersect_with_ray_parallel_to_plane ... ok
[INFO] [stdout] test primitives::cylinder::tests::test_ray_strikes_cylinder ... ok
[INFO] [stdout] test primitives::plane::tests::test_normal_of_plane_is_constant_everywhere ... ok
[INFO] [stdout] test primitives::shape::tests::test_compute_normal_on_asd_shape ... ok
[INFO] [stdout] test primitives::plane::tests::test_intersect_plane_from_above ... ok
[INFO] [stdout] test primitives::sphere::tests::test_intersect_sets_object_on_intersection ... ok
[INFO] [stdout] test primitives::shape::tests::test_intersect_scaled_shape_with_ray ... ok
[INFO] [stdout] test primitives::shape::tests::test_intersect_translated_shape_with_ray ... ok
[INFO] [stdout] test primitives::shape::tests::test_shape_assigning_material ... ok
[INFO] [stdout] test primitives::shape::tests::test_shape_default_material ... ok
[INFO] [stdout] test primitives::sphere::tests::test_normal_on_sphere_at_non_axial_point ... ok
[INFO] [stdout] test primitives::cube::tests::test_ray_intersects_cube ... ok
[INFO] [stdout] test primitives::shape::tests::test_shape_default_transform ... ok
[INFO] [stdout] test primitives::sphere::tests::test_helper_function_to_create_sphere_with_glassy_material ... ok
[INFO] [stdout] test primitives::sphere::tests::test_normal_on_sphere_at_point_on_y_axis ... ok
[INFO] [stdout] test primitives::sphere::tests::test_ray_originates_in_sphere ... ok
[INFO] [stdout] test primitives::sphere::tests::test_normal_on_sphere_at_point_on_x_axis ... ok
[INFO] [stdout] test scene::camera::tests::test_create_camera ... ok
[INFO] [stdout] test primitives::sphere::tests::test_normal_on_sphere_at_point_on_z_axis ... ok
[INFO] [stdout] test primitives::sphere::tests::test_ray_intersect_sphere_at_tangent ... ok
[INFO] [stdout] test scene::camera::tests::test_create_ray_then_camera_is_transformed ... ok
[INFO] [stdout] test primitives::sphere::tests::test_ray_intersect_sphere_at_two_points ... ok
[INFO] [stdout] test primitives::sphere::tests::test_ray_is_behind_sphere ... ok
[INFO] [stdout] test scene::camera::tests::test_create_ray_through_corner_of_canvas ... ok
[INFO] [stdout] test scene::camera::tests::test_pixel_size_for_horizontal_canvas ... ok
[INFO] [stdout] test scene::camera::tests::test_pixel_size_for_vertical_canvas ... ok
[INFO] [stdout] test scene::camera::tests::test_render_world_with_camera ... ok
[INFO] [stdout] test primitives::sphere::tests::test_ray_misses_sphere ... ok
[INFO] [stdout] test scene::camera::tests::test_create_ray_through_center_of_canvas ... ok
[INFO] [stdout] test scene::canvas::tests::test_create_ppm_data ... ok
[INFO] [stdout] test scene::canvas::tests::test_creating_canvas ... ok
[INFO] [stdout] test scene::canvas::tests::test_ppm_ends_with_newlines ... ok
[INFO] [stdout] test scene::canvas::tests::test_write_pixel ... ok
[INFO] [stdout] test scene::shading::color::tests::test_add_colors ... ok
[INFO] [stdout] test scene::shading::color::tests::test_multiply_color_by_scalar ... ok
[INFO] [stdout] test scene::shading::color::tests::test_subtract_colors ... ok
[INFO] [stdout] test primitives::cylinder::tests::test_cylinder_is_not_closed_as_default ... ok
[INFO] [stdout] test scene::shading::color::tests::test_multiply_colors ... ok
[INFO] [stdout] test scene::shading::color::tests::test_colors_are_like_tuples ... ok
[INFO] [stdout] test scene::shading::material::tests::test_light_behind_surface ... ok
[INFO] [stdout] test primitives::cylinder::tests::test_default_minimum_and_maximum_for_a_cylinder ... ok
[INFO] [stdout] test scene::shading::material::tests::test_light_with_eye_in_path_of_reflection_vector ... ok
[INFO] [stdout] test scene::shading::material::tests::test_light_with_eye_opposite_surface_and_light_with_45_degree_offset ... ok
[INFO] [stdout] test scene::canvas::tests::test_create_ppm_header ... ok
[INFO] [stdout] test scene::shading::material::tests::test_light_with_eye_between_light_and_surface_with_45_degree_offset ... ok
[INFO] [stdout] test scene::canvas::tests::test_splitting_to_long_ppm_lines ... ok
[INFO] [stdout] test math::transformation::tests::test_multiply_by_translation_matrix ... ok
[INFO] [stdout] test primitives::cylinder::tests::test_normal_vector_on_cylinder ... ok
[INFO] [stdout] test scene::shading::light::tests::test_point_light_has_position_and_intensity ... ok
[INFO] [stdout] test scene::shading::material::tests::test_default_material ... ok
[INFO] [stdout] test scene::shading::material::tests::test_light_with_eye_between_light_and_surface ... ok
[INFO] [stdout] test scene::shading::material::tests::test_lighting_with_pattern_applied ... ok
[INFO] [stdout] test scene::shading::material::tests::test_reflectivity_of_default_material ... ok
[INFO] [stdout] test scene::tracing::intersection::tests::test_aggregating_intersections ... ok
[INFO] [stdout] test scene::shading::material::tests::test_transparency_and_refractive_index_for_default_material ... ok
[INFO] [stdout] test scene::tracing::intersection::tests::test_hit_is_always_lowest_negative_value ... ok
[INFO] [stdout] test scene::tracing::intersection::tests::test_finding_n1_and_n2_at_various_intersections ... ok
[INFO] [stdout] test scene::shading::material::tests::test_lighting_with_surface_in_shadow ... ok
[INFO] [stdout] test scene::tracing::intersection::tests::test_hit_when_all_intersections_have_positive_t ... ok
[INFO] [stdout] test scene::tracing::intersection::tests::test_hit_when_intersection_occurs_on_outside ... ok
[INFO] [stdout] test scene::tracing::intersection::tests::test_hit_should_offset_point ... ok
[INFO] [stdout] test scene::tracing::intersection::tests::test_hit_when_all_intersections_have_negative_t ... ok
[INFO] [stdout] test scene::tracing::intersection::tests::test_intersection_encapsulate_t_and_object ... ok
[INFO] [stdout] test scene::tracing::intersection::tests::test_hit_when_intersection_occurs_on_inside ... ok
[INFO] [stdout] test scene::tracing::intersection::tests::test_precomputing_state_of_intersection ... ok
[INFO] [stdout] test scene::tracing::intersection::tests::test_schlick_approximation_with_perpendicular_viewing_angle ... ok
[INFO] [stdout] test scene::tracing::intersection::tests::test_schlick_approximation_with_small_angle_and_n2_greater_n1 ... ok
[INFO] [stdout] test scene::tracing::intersection::tests::test_under_point_is_offset_below_the_surface ... ok
[INFO] [stdout] test scene::tracing::intersection::tests::test_schlick_approximation_under_total_internal_reflection ... ok
[INFO] [stdout] test scene::tracing::intersection::tests::test_hit_when_some_intersections_have_negative_t ... ok
[INFO] [stdout] test scene::tracing::intersection::tests::test_precomputing_the_reflection_vector ... ok
[INFO] [stdout] test scene::tracing::ray::tests::test_scaling_a_ray ... ok
[INFO] [stdout] test scene::tracing::ray::tests::test_translating_a_ray ... ok
[INFO] [stdout] test scene::world::tests::test_color_at_with_mutually_reflective_surfaces ... ok
[INFO] [stdout] test scene::world::tests::test_color_when_ray_hits ... ok
[INFO] [stdout] test scene::world::tests::test_color_with_intersection_behind_ray ... ok
[INFO] [stdout] test scene::world::tests::test_creating_world ... ok
[INFO] [stdout] test scene::world::tests::test_intersect_world_with_ray ... ok
[INFO] [stdout] test scene::world::tests::test_no_shadow_when_nothing_collinear_with_point_and_light ... ok
[INFO] [stdout] test scene::world::tests::test_no_shadow_when_object_is_behind_light ... ok
[INFO] [stdout] test scene::world::tests::test_no_shadow_when_object_is_behind_point ... ok
[INFO] [stdout] test scene::world::tests::test_reflected_color_at_maximum_recursive_depth ... ok
[INFO] [stdout] test scene::world::tests::test_reflected_color_for_non_reflective_material ... ok
[INFO] [stdout] test scene::world::tests::test_reflected_color_for_reflective_material ... ok
[INFO] [stdout] test scene::world::tests::test_refracted_color_at_maximum_recursive_depth ... ok
[INFO] [stdout] test scene::world::tests::test_refracted_color_under_total_internal_reflection ... ok
[INFO] [stdout] test scene::tracing::ray::tests::test_compute_point_from_distance ... ok
[INFO] [stdout] test scene::tracing::ray::tests::test_create_and_query_ray ... ok
[INFO] [stdout] test scene::world::tests::test_color_when_ray_miss ... ok
[INFO] [stdout] test scene::world::tests::test_refracted_color_with_a_refracted_ray ... ok
[INFO] [stdout] test scene::world::tests::test_shade_hit_for_reflective_material ... ok
[INFO] [stdout] test scene::world::tests::test_shade_hit_with_reflective_and_transparent_material ... ok
[INFO] [stdout] test scene::world::tests::test_shade_hit_with_intersection_in_shadow ... ok
[INFO] [stdout] test scene::world::tests::test_shade_hit_with_transparent_material ... ok
[INFO] [stdout] test scene::world::tests::test_shading_an_intersection_from_inside ... ok
[INFO] [stdout] test scene::world::tests::test_shadow_when_object_is_between_point_and_light ... ok
[INFO] [stdout] test scene::world::tests::test_refracted_color_with_opaque_surface ... ok
[INFO] [stdout] test scene::world::tests::test_shading_an_intersection ... ok
[INFO] [stdout] test math::matrix::tests::test_calc_inverse_of_matrix_3 ... ok
[INFO] [stdout] test pattern::checker::tests::test_checkers_should_repeat_in_x ... ok
[INFO] [stdout] test pattern::stripe::tests::test_stripe_pattern_is_constant_in_z ... ok
[INFO] [stdout] test primitives::shape::tests::test_compute_normal_on_translated_shape ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 194 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "da0d732dcd04dbf572d8b2698a9ea523a93030cc0fc7bd3a19ed3a0f2cb35e54", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "da0d732dcd04dbf572d8b2698a9ea523a93030cc0fc7bd3a19ed3a0f2cb35e54", kill_on_drop: false }`
[INFO] [stdout] da0d732dcd04dbf572d8b2698a9ea523a93030cc0fc7bd3a19ed3a0f2cb35e54
