[INFO] cloning repository https://github.com/u4ium/ray-tracer
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/u4ium/ray-tracer" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fu4ium%2Fray-tracer", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fu4ium%2Fray-tracer'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 587e915f6c15e0393142aa1b32bed87e6258d062
[INFO] checking u4ium/ray-tracer against try#59a256151e578f525a26127f2c3e3a6c7e2982ca for pr-149291-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fu4ium%2Fray-tracer" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/u4ium/ray-tracer
[INFO] finished tweaking git repo https://github.com/u4ium/ray-tracer
[INFO] tweaked toml for git repo https://github.com/u4ium/ray-tracer written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/u4ium/ray-tracer on toolchain 59a256151e578f525a26127f2c3e3a6c7e2982ca
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+59a256151e578f525a26127f2c3e3a6c7e2982ca" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/u4ium/ray-tracer 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" "+59a256151e578f525a26127f2c3e3a6c7e2982ca" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded ndarray v0.15.3
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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:94a0c148923f5b2b52a63ef0eeb1882ad339ab61bce784c8077cbe41c61feb6c" "/opt/rustwide/cargo-home/bin/cargo" "+59a256151e578f525a26127f2c3e3a6c7e2982ca" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 2359e0e6c560e4e292fb3da93294a21e3b1aef6c747b3b6fbe8fb2baa695b446
[INFO] running `Command { std: "docker" "start" "-a" "2359e0e6c560e4e292fb3da93294a21e3b1aef6c747b3b6fbe8fb2baa695b446", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2359e0e6c560e4e292fb3da93294a21e3b1aef6c747b3b6fbe8fb2baa695b446", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2359e0e6c560e4e292fb3da93294a21e3b1aef6c747b3b6fbe8fb2baa695b446", kill_on_drop: false }`
[INFO] [stdout] 2359e0e6c560e4e292fb3da93294a21e3b1aef6c747b3b6fbe8fb2baa695b446
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:94a0c148923f5b2b52a63ef0eeb1882ad339ab61bce784c8077cbe41c61feb6c" "/opt/rustwide/cargo-home/bin/cargo" "+59a256151e578f525a26127f2c3e3a6c7e2982ca" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] dda8eab6fbc96907329b36f240bc0f9c2011b3b8094a4efebfd4f1a1e145614f
[INFO] running `Command { std: "docker" "start" "-a" "dda8eab6fbc96907329b36f240bc0f9c2011b3b8094a4efebfd4f1a1e145614f", kill_on_drop: false }`
[INFO] [stderr]    Compiling num-traits v0.2.14
[INFO] [stderr]    Compiling radium v0.5.3
[INFO] [stderr]    Compiling num-integer v0.1.44
[INFO] [stderr]    Compiling memchr v2.3.4
[INFO] [stderr]     Checking arrayvec v0.5.2
[INFO] [stderr]     Checking rawpointer v0.2.1
[INFO] [stderr]    Compiling nom v6.2.1
[INFO] [stderr]     Checking matrixmultiply v0.3.1
[INFO] [stderr]     Checking lexical-core v0.7.6
[INFO] [stderr]     Checking bitvec v0.19.5
[INFO] [stderr]     Checking num-complex v0.4.0
[INFO] [stderr]     Checking ndarray v0.15.3
[INFO] [stderr]     Checking ray-tracer v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `ndarray::array`
[INFO] [stdout]  --> src/camera.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use ndarray::array;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ndarray::array`
[INFO] [stdout]  --> src/scene/light.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use ndarray::array;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `recognize`
[INFO] [stdout]  --> src/scene/object/parsers/obj/polygon.rs:5:28
[INFO] [stdout]   |
[INFO] [stdout] 5 |     combinator::{map, opt, recognize, value},
[INFO] [stdout]   |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::scene::object::parsers::common::identifier::parse_identifier`
[INFO] [stdout]  --> src/scene/object/parsers/obj/material.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::scene::object::parsers::common::identifier::parse_identifier;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `nom::IResult`
[INFO] [stdout]  --> src/scene/object/parsers/obj/material.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use nom::IResult;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ndarray::array`
[INFO] [stdout]  --> src/camera.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use ndarray::array;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ndarray::array`
[INFO] [stdout]  --> src/scene/light.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use ndarray::array;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `recognize`
[INFO] [stdout]  --> src/scene/object/parsers/obj/polygon.rs:5:28
[INFO] [stdout]   |
[INFO] [stdout] 5 |     combinator::{map, opt, recognize, value},
[INFO] [stdout]   |                            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::scene::object::parsers::common::identifier::parse_identifier`
[INFO] [stdout]  --> src/scene/object/parsers/obj/material.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::scene::object::parsers::common::identifier::parse_identifier;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `nom::IResult`
[INFO] [stdout]  --> src/scene/object/parsers/obj/material.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use nom::IResult;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/scene/object/parsers/obj.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 24 |     let mut result = vec![];
[INFO] [stdout]    |         ----^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `filename`
[INFO] [stdout]   --> src/scene/object/parsers/obj.rs:23:15
[INFO] [stdout]    |
[INFO] [stdout] 23 | fn parse_file(filename: &str) -> Vec<WaveFrontObject> {
[INFO] [stdout]    |               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_filename`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `depth`
[INFO] [stdout]   --> src/scene.rs:28:62
[INFO] [stdout]    |
[INFO] [stdout] 28 |     pub fn get_colour(&self, direction: &HVector, hit: &Hit, depth: u8) -> Colour {
[INFO] [stdout]    |                                                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_depth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `shape` is never read
[INFO] [stdout]  --> src/scene/light.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct Light {
[INFO] [stdout]   |            ----- field in this struct
[INFO] [stdout] 9 |     shape: LightShape,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `LeafShape` is never used
[INFO] [stdout]   --> src/scene/object.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 | trait LeafShape {
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `point`, `texture_coordinates`, and `normal` are never read
[INFO] [stdout]   --> src/scene/object.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct MappedTrianglePoint {
[INFO] [stdout]    |            ------------------- fields in this struct
[INFO] [stdout] 28 |     point: HVector,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 29 |     texture_coordinates: [f64; 2],
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 30 |     normal: HVector,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_file_name` is never used
[INFO] [stdout]   --> src/scene/object/parsers/common/filename.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn parse_file_name<'a, F>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Group` is never constructed
[INFO] [stdout]  --> src/scene/object/parsers/obj.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | struct Group {
[INFO] [stdout]   |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WaveFrontObject` is never constructed
[INFO] [stdout]   --> src/scene/object/parsers/obj.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct WaveFrontObject {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_object` is never used
[INFO] [stdout]   --> src/scene/object/parsers/obj.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl WaveFrontObject {
[INFO] [stdout]    | -------------------- method in this implementation
[INFO] [stdout] 18 |     pub fn to_object(&self) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_file` is never used
[INFO] [stdout]   --> src/scene/object/parsers/obj.rs:23:4
[INFO] [stdout]    |
[INFO] [stdout] 23 | fn parse_file(filename: &str) -> Vec<WaveFrontObject> {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_polygon` is never used
[INFO] [stdout]    --> src/scene/object/parsers/obj/polygon.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl PolygonIndices {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] 107 |     pub fn to_polygon(&self) -> Result<Polygon, &'static str> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PolygonVertex` is never constructed
[INFO] [stdout]    --> src/scene/object/parsers/obj/polygon.rs:142:12
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub struct PolygonVertex {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Polygon` is never constructed
[INFO] [stdout]    --> src/scene/object/parsers/obj/polygon.rs:148:12
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub struct Polygon {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FileType` is never used
[INFO] [stdout]  --> src/scene/object/parsers/obj/material.rs:9:6
[INFO] [stdout]   |
[INFO] [stdout] 9 | enum FileType {
[INFO] [stdout]   |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FilenameParser` is never constructed
[INFO] [stdout]   --> src/scene/object/parsers/obj/material.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | struct FilenameParser {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `recognize_map_filename` is never used
[INFO] [stdout]  --> src/scene/object/parsers/obj/material/map.rs:7:4
[INFO] [stdout]   |
[INFO] [stdout] 7 | fn recognize_map_filename(input: &str) -> IResult<&str, &str> {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_map_filenames` is never used
[INFO] [stdout]   --> src/scene/object/parsers/obj/material/map.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn parse_map_filenames(input: &str) -> IResult<&str, Vec<&str>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/scene/object.rs:152:18
[INFO] [stdout]     |
[INFO] [stdout] 152 |     fn intersect(&self, ray: &Ray) -> Option<Hit>;
[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] 152 |     fn intersect(&self, ray: &Ray) -> Option<Hit<'_>>;
[INFO] [stdout]     |                                                 ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/scene/object.rs:173:18
[INFO] [stdout]     |
[INFO] [stdout] 173 |     fn intersect(&self, ray: &Ray) -> Option<Hit> {
[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] 173 |     fn intersect(&self, ray: &Ray) -> Option<Hit<'_>> {
[INFO] [stdout]     |                                                 ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/scene/object.rs:203:18
[INFO] [stdout]     |
[INFO] [stdout] 203 |     fn intersect(&self, ray: &Ray) -> Option<Hit> {
[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] 203 |     fn intersect(&self, ray: &Ray) -> Option<Hit<'_>> {
[INFO] [stdout]     |                                                 ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/scene/object.rs:231:18
[INFO] [stdout]     |
[INFO] [stdout] 231 |     fn intersect(&self, ray: &Ray) -> Option<Hit> {
[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] 231 |     fn intersect(&self, ray: &Ray) -> Option<Hit<'_>> {
[INFO] [stdout]     |                                                 ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/scene/object.rs:252:18
[INFO] [stdout]     |
[INFO] [stdout] 252 |     fn intersect(&self, ray: &Ray) -> Option<Hit> {
[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] 252 |     fn intersect(&self, ray: &Ray) -> Option<Hit<'_>> {
[INFO] [stdout]     |                                                 ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/scene/object/parsers/obj.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 24 |     let mut result = vec![];
[INFO] [stdout]    |         ----^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `filename`
[INFO] [stdout]   --> src/scene/object/parsers/obj.rs:23:15
[INFO] [stdout]    |
[INFO] [stdout] 23 | fn parse_file(filename: &str) -> Vec<WaveFrontObject> {
[INFO] [stdout]    |               ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_filename`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `depth`
[INFO] [stdout]   --> src/scene.rs:28:62
[INFO] [stdout]    |
[INFO] [stdout] 28 |     pub fn get_colour(&self, direction: &HVector, hit: &Hit, depth: u8) -> Colour {
[INFO] [stdout]    |                                                              ^^^^^ help: if this is intentional, prefix it with an underscore: `_depth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `shape` is never read
[INFO] [stdout]  --> src/scene/light.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct Light {
[INFO] [stdout]   |            ----- field in this struct
[INFO] [stdout] 9 |     shape: LightShape,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `LeafShape` is never used
[INFO] [stdout]   --> src/scene/object.rs:21:7
[INFO] [stdout]    |
[INFO] [stdout] 21 | trait LeafShape {
[INFO] [stdout]    |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `point`, `texture_coordinates`, and `normal` are never read
[INFO] [stdout]   --> src/scene/object.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub struct MappedTrianglePoint {
[INFO] [stdout]    |            ------------------- fields in this struct
[INFO] [stdout] 28 |     point: HVector,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 29 |     texture_coordinates: [f64; 2],
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 30 |     normal: HVector,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_eol_comment` is never used
[INFO] [stdout]  --> src/scene/object/parsers/common/comment.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn parse_eol_comment<'a>(i: &'a str) -> IResult<&'a str, ()> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `recognize_filename` is never used
[INFO] [stdout]   --> src/scene/object/parsers/common/filename.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn recognize_filename<'a>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_file_name` is never used
[INFO] [stdout]   --> src/scene/object/parsers/common/filename.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn parse_file_name<'a, F>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_filenames` is never used
[INFO] [stdout]   --> src/scene/object/parsers/common/filename.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub fn parse_filenames<'a, F>(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `float` is never used
[INFO] [stdout]   --> src/scene/object/parsers/common/float.rs:10:4
[INFO] [stdout]    |
[INFO] [stdout] 10 | fn float(input: &str) -> IResult<&str, &str> {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `string_to_float` is never used
[INFO] [stdout]   --> src/scene/object/parsers/common/float.rs:44:4
[INFO] [stdout]    |
[INFO] [stdout] 44 | fn string_to_float(input: &str) -> f64 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_float` is never used
[INFO] [stdout]   --> src/scene/object/parsers/common/float.rs:48:8
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub fn parse_float(input: &str) -> IResult<&str, f64> {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_identifier` is never used
[INFO] [stdout]  --> src/scene/object/parsers/common/identifier.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn parse_identifier<'a>(tag_string: &'static str, input: &'a str) -> IResult<&'a str, &'a str> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decimal` is never used
[INFO] [stdout]  --> src/scene/object/parsers/common/integer.rs:9:8
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub fn decimal(input: &str) -> IResult<&str, &str> {
[INFO] [stdout]   |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `string_to_usize` is never used
[INFO] [stdout]   --> src/scene/object/parsers/common/integer.rs:24:4
[INFO] [stdout]    |
[INFO] [stdout] 24 | fn string_to_usize(input: &str) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_integer` is never used
[INFO] [stdout]   --> src/scene/object/parsers/common/integer.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn parse_integer(input: &str) -> IResult<&str, usize> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tws` is never used
[INFO] [stdout]  --> src/scene/object/parsers/common/whitespace.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn tws<'a, F: 'a, O, E: ParseError<&'a str>>(
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Group` is never constructed
[INFO] [stdout]  --> src/scene/object/parsers/obj.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | struct Group {
[INFO] [stdout]   |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WaveFrontObject` is never constructed
[INFO] [stdout]   --> src/scene/object/parsers/obj.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub struct WaveFrontObject {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_object` is never used
[INFO] [stdout]   --> src/scene/object/parsers/obj.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl WaveFrontObject {
[INFO] [stdout]    | -------------------- method in this implementation
[INFO] [stdout] 18 |     pub fn to_object(&self) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_file` is never used
[INFO] [stdout]   --> src/scene/object/parsers/obj.rs:23:4
[INFO] [stdout]    |
[INFO] [stdout] 23 | fn parse_file(filename: &str) -> Vec<WaveFrontObject> {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PolygonVertexIndices` is never constructed
[INFO] [stdout]   --> src/scene/object/parsers/obj/polygon.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct PolygonVertexIndices {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_polygon_vertex_indices` is never used
[INFO] [stdout]   --> src/scene/object/parsers/obj/polygon.rs:27:4
[INFO] [stdout]    |
[INFO] [stdout] 27 | fn parse_polygon_vertex_indices(input: &str) -> IResult<&str, PolygonVertexIndices> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PolygonIndices` is never constructed
[INFO] [stdout]    --> src/scene/object/parsers/obj/polygon.rs:102:12
[INFO] [stdout]     |
[INFO] [stdout] 102 | pub struct PolygonIndices {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_polygon` is never used
[INFO] [stdout]    --> src/scene/object/parsers/obj/polygon.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 106 | impl PolygonIndices {
[INFO] [stdout]     | ------------------- method in this implementation
[INFO] [stdout] 107 |     pub fn to_polygon(&self) -> Result<Polygon, &'static str> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_polygon_indices` is never used
[INFO] [stdout]    --> src/scene/object/parsers/obj/polygon.rs:112:8
[INFO] [stdout]     |
[INFO] [stdout] 112 | pub fn parse_polygon_indices(input: &str) -> IResult<&str, PolygonIndices> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PolygonVertex` is never constructed
[INFO] [stdout]    --> src/scene/object/parsers/obj/polygon.rs:142:12
[INFO] [stdout]     |
[INFO] [stdout] 142 | pub struct PolygonVertex {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Polygon` is never constructed
[INFO] [stdout]    --> src/scene/object/parsers/obj/polygon.rs:148:12
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub struct Polygon {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vertex` is never constructed
[INFO] [stdout]  --> src/scene/object/parsers/obj/polygon/vertex.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Vertex {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_vertex` is never used
[INFO] [stdout]   --> src/scene/object/parsers/obj/polygon/vertex.rs:12:4
[INFO] [stdout]    |
[INFO] [stdout] 12 | fn parse_vertex(input: &str) -> IResult<&str, Vertex> {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Vector` is never constructed
[INFO] [stdout]  --> src/scene/object/parsers/obj/polygon/vector.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Vector {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_vector` is never used
[INFO] [stdout]   --> src/scene/object/parsers/obj/polygon/vector.rs:11:4
[INFO] [stdout]    |
[INFO] [stdout] 11 | fn parse_vector(input: &str) -> IResult<&str, Vector> {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TextureCoordinates` is never constructed
[INFO] [stdout]  --> src/scene/object/parsers/obj/polygon/texture_coordinates.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct TextureCoordinates {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_texture_coordinates` is never used
[INFO] [stdout]   --> src/scene/object/parsers/obj/polygon/texture_coordinates.rs:11:4
[INFO] [stdout]    |
[INFO] [stdout] 11 | fn parse_texture_coordinates(input: &str) -> IResult<&str, TextureCoordinates> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `FileType` is never used
[INFO] [stdout]  --> src/scene/object/parsers/obj/material.rs:9:6
[INFO] [stdout]   |
[INFO] [stdout] 9 | enum FileType {
[INFO] [stdout]   |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FilenameParser` is never constructed
[INFO] [stdout]   --> src/scene/object/parsers/obj/material.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | struct FilenameParser {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `recognize_material_filename` is never used
[INFO] [stdout]  --> src/scene/object/parsers/obj/material/filename.rs:4:4
[INFO] [stdout]   |
[INFO] [stdout] 4 | fn recognize_material_filename(input: &str) -> IResult<&str, &str> {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_material_filenames` is never used
[INFO] [stdout]   --> src/scene/object/parsers/obj/material/filename.rs:40:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | pub fn parse_material_filenames(input: &str) -> IResult<&str, Vec<&str>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_material_identifier` is never used
[INFO] [stdout]  --> src/scene/object/parsers/obj/material/identifier.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn parse_material_identifier(input: &str) -> IResult<&str, &str> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `recognize_map_filename` is never used
[INFO] [stdout]  --> src/scene/object/parsers/obj/material/map.rs:7:4
[INFO] [stdout]   |
[INFO] [stdout] 7 | fn recognize_map_filename(input: &str) -> IResult<&str, &str> {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_map_filenames` is never used
[INFO] [stdout]   --> src/scene/object/parsers/obj/material/map.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn parse_map_filenames(input: &str) -> IResult<&str, Vec<&str>> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_texture_map_identifier` is never used
[INFO] [stdout]   --> src/scene/object/parsers/obj/material/map.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub fn parse_texture_map_identifier(input: &str) -> IResult<&str, &str> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/scene/object.rs:152:18
[INFO] [stdout]     |
[INFO] [stdout] 152 |     fn intersect(&self, ray: &Ray) -> Option<Hit>;
[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] 152 |     fn intersect(&self, ray: &Ray) -> Option<Hit<'_>>;
[INFO] [stdout]     |                                                 ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/scene/object.rs:173:18
[INFO] [stdout]     |
[INFO] [stdout] 173 |     fn intersect(&self, ray: &Ray) -> Option<Hit> {
[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] 173 |     fn intersect(&self, ray: &Ray) -> Option<Hit<'_>> {
[INFO] [stdout]     |                                                 ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/scene/object.rs:203:18
[INFO] [stdout]     |
[INFO] [stdout] 203 |     fn intersect(&self, ray: &Ray) -> Option<Hit> {
[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] 203 |     fn intersect(&self, ray: &Ray) -> Option<Hit<'_>> {
[INFO] [stdout]     |                                                 ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/scene/object.rs:231:18
[INFO] [stdout]     |
[INFO] [stdout] 231 |     fn intersect(&self, ray: &Ray) -> Option<Hit> {
[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] 231 |     fn intersect(&self, ray: &Ray) -> Option<Hit<'_>> {
[INFO] [stdout]     |                                                 ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/scene/object.rs:252:18
[INFO] [stdout]     |
[INFO] [stdout] 252 |     fn intersect(&self, ray: &Ray) -> Option<Hit> {
[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] 252 |     fn intersect(&self, ray: &Ray) -> Option<Hit<'_>> {
[INFO] [stdout]     |                                                 ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ndarray::array`
[INFO] [stdout]  --> src/main.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use ndarray::array;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Intersectable`
[INFO] [stdout]  --> src/main.rs:9:63
[INFO] [stdout]   |
[INFO] [stdout] 9 |             material::Material, matrix::AffineTransformation, Intersectable, Object, ObjectShape::*,
[INFO] [stdout]   |                                                               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ndarray::array`
[INFO] [stdout]  --> src/main.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use ndarray::array;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Intersectable`
[INFO] [stdout]  --> src/main.rs:9:63
[INFO] [stdout]   |
[INFO] [stdout] 9 |             material::Material, matrix::AffineTransformation, Intersectable, Object, ObjectShape::*,
[INFO] [stdout]   |                                                               ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.69s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nom v6.2.1
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 4`
[INFO] running `Command { std: "docker" "inspect" "dda8eab6fbc96907329b36f240bc0f9c2011b3b8094a4efebfd4f1a1e145614f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "dda8eab6fbc96907329b36f240bc0f9c2011b3b8094a4efebfd4f1a1e145614f", kill_on_drop: false }`
[INFO] [stdout] dda8eab6fbc96907329b36f240bc0f9c2011b3b8094a4efebfd4f1a1e145614f
