[INFO] cloning repository https://github.com/cdriehuys/raytracer
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/cdriehuys/raytracer" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcdriehuys%2Fraytracer", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcdriehuys%2Fraytracer'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] d6d88f25c0b7a234afffd2ddc5f0bb0bcf997363
[INFO] checking cdriehuys/raytracer against 1.95.0 for pr-155915
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcdriehuys%2Fraytracer" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/cdriehuys/raytracer
[INFO] finished tweaking git repo https://github.com/cdriehuys/raytracer
[INFO] tweaked toml for git repo https://github.com/cdriehuys/raytracer written to /workspace/builds/worker-3-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/cdriehuys/raytracer on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/cdriehuys/raytracer already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded walkdir v2.3.3
[INFO] [stderr]   Downloaded memoffset v0.8.0
[INFO] [stderr]   Downloaded plotters-svg v0.3.3
[INFO] [stderr]   Downloaded crossbeam-epoch v0.9.14
[INFO] [stderr]   Downloaded either v1.8.1
[INFO] [stderr]   Downloaded plotters-backend v0.3.4
[INFO] [stderr]   Downloaded float-cmp v0.8.0
[INFO] [stderr]   Downloaded os_str_bytes v6.5.0
[INFO] [stderr]   Downloaded crossbeam-utils v0.8.15
[INFO] [stderr]   Downloaded proc-macro2 v1.0.56
[INFO] [stderr]   Downloaded serde_derive v1.0.160
[INFO] [stderr]   Downloaded bumpalo v3.12.1
[INFO] [stderr]   Downloaded serde v1.0.160
[INFO] [stderr]   Downloaded rayon-core v1.11.0
[INFO] [stderr]   Downloaded rayon v1.7.0
[INFO] [stderr]   Downloaded plotters v0.3.4
[INFO] [stderr]   Downloaded serde_json v1.0.96
[INFO] [stderr]   Downloaded clap v3.2.25
[INFO] [stderr]   Downloaded regex v1.8.1
[INFO] [stderr]   Downloaded syn v2.0.15
[INFO] [stderr]   Downloaded regex-syntax v0.7.1
[INFO] [stderr]   Downloaded quote v1.0.26
[INFO] [stderr]   Downloaded libc v0.2.142
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] d3fdc64442157d967f5412bf0710eaf1f1123b4c65f0bca47854c476e948c66b
[INFO] running `Command { std: "docker" "start" "-a" "d3fdc64442157d967f5412bf0710eaf1f1123b4c65f0bca47854c476e948c66b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "d3fdc64442157d967f5412bf0710eaf1f1123b4c65f0bca47854c476e948c66b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d3fdc64442157d967f5412bf0710eaf1f1123b4c65f0bca47854c476e948c66b", kill_on_drop: false }`
[INFO] [stdout] d3fdc64442157d967f5412bf0710eaf1f1123b4c65f0bca47854c476e948c66b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 31c8b8f7a89d8eef3f379d131e1ec0a4f94f2024f72931d1709f3e42aa5f2810
[INFO] running `Command { std: "docker" "start" "-a" "31c8b8f7a89d8eef3f379d131e1ec0a4f94f2024f72931d1709f3e42aa5f2810", kill_on_drop: false }`
[INFO] [stderr]    Compiling autocfg v1.0.1
[INFO] [stderr]    Compiling proc-macro2 v1.0.56
[INFO] [stderr]    Compiling crossbeam-utils v0.8.15
[INFO] [stderr]    Compiling libc v0.2.142
[INFO] [stderr]    Compiling quote v1.0.26
[INFO] [stderr]    Compiling serde_derive v1.0.160
[INFO] [stderr]     Checking scopeguard v1.1.0
[INFO] [stderr]    Compiling rayon-core v1.11.0
[INFO] [stderr]     Checking either v1.8.1
[INFO] [stderr]    Compiling serde v1.0.160
[INFO] [stderr]    Compiling serde_json v1.0.96
[INFO] [stderr]    Compiling memoffset v0.8.0
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.14
[INFO] [stderr]    Compiling num-traits v0.2.14
[INFO] [stderr]    Compiling indexmap v1.9.3
[INFO] [stderr]     Checking lazy_static v1.4.0
[INFO] [stderr]     Checking plotters-backend v0.3.4
[INFO] [stderr]     Checking half v1.8.2
[INFO] [stderr]     Checking os_str_bytes v6.5.0
[INFO] [stderr]     Checking ciborium-io v0.2.0
[INFO] [stderr]     Checking crossbeam-channel v0.5.8
[INFO] [stderr]     Checking ciborium-ll v0.2.0
[INFO] [stderr]     Checking plotters-svg v0.3.3
[INFO] [stderr]     Checking clap_lex v0.2.4
[INFO] [stderr]     Checking itertools v0.10.5
[INFO] [stderr]     Checking textwrap v0.16.0
[INFO] [stderr]     Checking crossbeam-deque v0.8.3
[INFO] [stderr]     Checking regex-syntax v0.7.1
[INFO] [stderr]     Checking num_cpus v1.15.0
[INFO] [stderr]     Checking clap v3.2.25
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking walkdir v2.3.3
[INFO] [stderr]    Compiling syn v2.0.15
[INFO] [stderr]     Checking oorandom v11.1.3
[INFO] [stderr]     Checking float-cmp v0.8.0
[INFO] [stderr]     Checking plotters v0.3.4
[INFO] [stderr]     Checking rayon v1.7.0
[INFO] [stderr]     Checking regex v1.8.1
[INFO] [stderr]     Checking criterion-plot v0.5.0
[INFO] [stderr]     Checking raytracer v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/intersections.rs:72:25
[INFO] [stdout]    |
[INFO] [stdout] 72 |     pub fn prepare_info(&self, ray: &Ray) -> IntersectionInfo {
[INFO] [stdout]    |                         ^^^^^                ^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 72 |     pub fn prepare_info(&self, ray: &Ray) -> IntersectionInfo<'_> {
[INFO] [stdout]    |                                                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/intersections.rs:216:16
[INFO] [stdout]     |
[INFO] [stdout] 216 |     pub fn hit(&self) -> Option<&Intersection> {
[INFO] [stdout]     |                ^^^^^            ^^^^^^^^^^^^^
[INFO] [stdout]     |                |                ||
[INFO] [stdout]     |                |                |the same lifetime is hidden here
[INFO] [stdout]     |                |                the same lifetime is elided here
[INFO] [stdout]     |                the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 216 |     pub fn hit(&self) -> Option<&Intersection<'_>> {
[INFO] [stdout]     |                                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/objects/base_shape.rs:35:24
[INFO] [stdout]    |
[INFO] [stdout] 35 |     fn intersect_local(&self, _ray: &Ray) -> Intersections {
[INFO] [stdout]    |                        ^^^^^                 ^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 35 |     fn intersect_local(&self, _ray: &Ray) -> Intersections<'_> {
[INFO] [stdout]    |                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/objects/plane.rs:24:24
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn intersect_local(&self, ray: &Ray) -> Intersections {
[INFO] [stdout]    |                        ^^^^^                ^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn intersect_local(&self, ray: &Ray) -> Intersections<'_> {
[INFO] [stdout]    |                                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/objects/shape.rs:30:24
[INFO] [stdout]    |
[INFO] [stdout] 30 |     fn intersect_local(&self, ray: &Ray) -> Intersections;
[INFO] [stdout]    |                        ^^^^^                ^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 30 |     fn intersect_local(&self, ray: &Ray) -> Intersections<'_>;
[INFO] [stdout]    |                                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/objects/shape.rs:84:18
[INFO] [stdout]    |
[INFO] [stdout] 84 |     fn intersect(&self, ray: &Ray) -> Intersections {
[INFO] [stdout]    |                  ^^^^^                ^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                  |
[INFO] [stdout]    |                  the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 84 |     fn intersect(&self, ray: &Ray) -> Intersections<'_> {
[INFO] [stdout]    |                                                    ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/objects/sphere.rs:21:24
[INFO] [stdout]    |
[INFO] [stdout] 21 |     fn intersect_local(&self, ray: &Ray) -> Intersections {
[INFO] [stdout]    |                        ^^^^^                ^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 21 |     fn intersect_local(&self, ray: &Ray) -> Intersections<'_> {
[INFO] [stdout]    |                                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/world.rs:117:22
[INFO] [stdout]     |
[INFO] [stdout] 117 |     pub fn intersect(&self, ray: &Ray) -> Intersections {
[INFO] [stdout]     |                      ^^^^^                ^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 117 |     pub fn intersect(&self, ray: &Ray) -> Intersections<'_> {
[INFO] [stdout]     |                                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking ciborium v0.2.0
[INFO] [stderr]     Checking tinytemplate v1.2.1
[INFO] [stderr]     Checking criterion v0.4.0
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]   --> tests/canvas_renderer_tests.rs:10:28
[INFO] [stdout]    |
[INFO] [stdout] 10 |         Err(err) => panic!(err),
[INFO] [stdout]    |                            ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]    = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]    = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: add a "{}" format string to `Display` the message
[INFO] [stdout]    |
[INFO] [stdout] 10 |         Err(err) => panic!("{}", err),
[INFO] [stdout]    |                            +++++
[INFO] [stdout] help: or use std::panic::panic_any instead
[INFO] [stdout]    |
[INFO] [stdout] 10 -         Err(err) => panic!(err),
[INFO] [stdout] 10 +         Err(err) => std::panic::panic_any(err),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]   --> tests/canvas_renderer_tests.rs:47:28
[INFO] [stdout]    |
[INFO] [stdout] 47 |         Err(err) => panic!(err),
[INFO] [stdout]    |                            ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]    = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout] help: add a "{}" format string to `Display` the message
[INFO] [stdout]    |
[INFO] [stdout] 47 |         Err(err) => panic!("{}", err),
[INFO] [stdout]    |                            +++++
[INFO] [stdout] help: or use std::panic::panic_any instead
[INFO] [stdout]    |
[INFO] [stdout] 47 -         Err(err) => panic!(err),
[INFO] [stdout] 47 +         Err(err) => std::panic::panic_any(err),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]   --> tests/canvas_renderer_tests.rs:81:28
[INFO] [stdout]    |
[INFO] [stdout] 81 |         Err(err) => panic!(err),
[INFO] [stdout]    |                            ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]    = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout] help: add a "{}" format string to `Display` the message
[INFO] [stdout]    |
[INFO] [stdout] 81 |         Err(err) => panic!("{}", err),
[INFO] [stdout]    |                            +++++
[INFO] [stdout] help: or use std::panic::panic_any instead
[INFO] [stdout]    |
[INFO] [stdout] 81 -         Err(err) => panic!(err),
[INFO] [stdout] 81 +         Err(err) => std::panic::panic_any(err),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message is not a string literal
[INFO] [stdout]    --> tests/canvas_renderer_tests.rs:101:28
[INFO] [stdout]     |
[INFO] [stdout] 101 |         Err(err) => panic!(err),
[INFO] [stdout]     |                            ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout]     = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/panic-macro-consistency.html>
[INFO] [stdout] help: add a "{}" format string to `Display` the message
[INFO] [stdout]     |
[INFO] [stdout] 101 |         Err(err) => panic!("{}", err),
[INFO] [stdout]     |                            +++++
[INFO] [stdout] help: or use std::panic::panic_any instead
[INFO] [stdout]     |
[INFO] [stdout] 101 -         Err(err) => panic!(err),
[INFO] [stdout] 101 +         Err(err) => std::panic::panic_any(err),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/intersections.rs:72:25
[INFO] [stdout]    |
[INFO] [stdout] 72 |     pub fn prepare_info(&self, ray: &Ray) -> IntersectionInfo {
[INFO] [stdout]    |                         ^^^^^                ^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 72 |     pub fn prepare_info(&self, ray: &Ray) -> IntersectionInfo<'_> {
[INFO] [stdout]    |                                                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/intersections.rs:216:16
[INFO] [stdout]     |
[INFO] [stdout] 216 |     pub fn hit(&self) -> Option<&Intersection> {
[INFO] [stdout]     |                ^^^^^            ^^^^^^^^^^^^^
[INFO] [stdout]     |                |                ||
[INFO] [stdout]     |                |                |the same lifetime is hidden here
[INFO] [stdout]     |                |                the same lifetime is elided here
[INFO] [stdout]     |                the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 216 |     pub fn hit(&self) -> Option<&Intersection<'_>> {
[INFO] [stdout]     |                                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/objects/base_shape.rs:35:24
[INFO] [stdout]    |
[INFO] [stdout] 35 |     fn intersect_local(&self, _ray: &Ray) -> Intersections {
[INFO] [stdout]    |                        ^^^^^                 ^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 35 |     fn intersect_local(&self, _ray: &Ray) -> Intersections<'_> {
[INFO] [stdout]    |                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/objects/plane.rs:24:24
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn intersect_local(&self, ray: &Ray) -> Intersections {
[INFO] [stdout]    |                        ^^^^^                ^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn intersect_local(&self, ray: &Ray) -> Intersections<'_> {
[INFO] [stdout]    |                                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/objects/shape.rs:30:24
[INFO] [stdout]    |
[INFO] [stdout] 30 |     fn intersect_local(&self, ray: &Ray) -> Intersections;
[INFO] [stdout]    |                        ^^^^^                ^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 30 |     fn intersect_local(&self, ray: &Ray) -> Intersections<'_>;
[INFO] [stdout]    |                                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/objects/shape.rs:84:18
[INFO] [stdout]    |
[INFO] [stdout] 84 |     fn intersect(&self, ray: &Ray) -> Intersections {
[INFO] [stdout]    |                  ^^^^^                ^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                  |
[INFO] [stdout]    |                  the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 84 |     fn intersect(&self, ray: &Ray) -> Intersections<'_> {
[INFO] [stdout]    |                                                    ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/objects/sphere.rs:21:24
[INFO] [stdout]    |
[INFO] [stdout] 21 |     fn intersect_local(&self, ray: &Ray) -> Intersections {
[INFO] [stdout]    |                        ^^^^^                ^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 21 |     fn intersect_local(&self, ray: &Ray) -> Intersections<'_> {
[INFO] [stdout]    |                                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/objects/test_shape.rs:24:24
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn intersect_local(&self, ray: &Ray) -> Intersections {
[INFO] [stdout]    |                        ^^^^^                ^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                        |
[INFO] [stdout]    |                        the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn intersect_local(&self, ray: &Ray) -> Intersections<'_> {
[INFO] [stdout]    |                                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/world.rs:117:22
[INFO] [stdout]     |
[INFO] [stdout] 117 |     pub fn intersect(&self, ray: &Ray) -> Intersections {
[INFO] [stdout]     |                      ^^^^^                ^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 117 |     pub fn intersect(&self, ray: &Ray) -> Intersections<'_> {
[INFO] [stdout]     |                                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 29.10s
[INFO] running `Command { std: "docker" "inspect" "31c8b8f7a89d8eef3f379d131e1ec0a4f94f2024f72931d1709f3e42aa5f2810", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "31c8b8f7a89d8eef3f379d131e1ec0a4f94f2024f72931d1709f3e42aa5f2810", kill_on_drop: false }`
[INFO] [stdout] 31c8b8f7a89d8eef3f379d131e1ec0a4f94f2024f72931d1709f3e42aa5f2810
