[INFO] cloning repository https://github.com/WereDiggle/rust-raytracer
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/WereDiggle/rust-raytracer" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FWereDiggle%2Frust-raytracer", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FWereDiggle%2Frust-raytracer'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] a962e5ab9c1106aef40b867bce6f25aa2b0842d2
[INFO] checking WereDiggle/rust-raytracer against try#dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e for pr-153721
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FWereDiggle%2Frust-raytracer" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/WereDiggle/rust-raytracer
[INFO] finished tweaking git repo https://github.com/WereDiggle/rust-raytracer
[INFO] tweaked toml for git repo https://github.com/WereDiggle/rust-raytracer written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/WereDiggle/rust-raytracer on toolchain dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/WereDiggle/rust-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" "+dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024`
[INFO] [stderr] warning: `raytracer` (manifest) generated 1 warning
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3e793bdf10248eb2ddbd6b0faebed8155c11b4589982e2893733958d93e8d540" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 4add6afd4adb6bb22c9d460106bda952f2b3c1187b6cf26855d0d6b19f6c052e
[INFO] running `Command { std: "docker" "start" "4add6afd4adb6bb22c9d460106bda952f2b3c1187b6cf26855d0d6b19f6c052e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4add6afd4adb6bb22c9d460106bda952f2b3c1187b6cf26855d0d6b19f6c052e" "/opt/rustwide/cargo-home/bin/cargo" "+dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4add6afd4adb6bb22c9d460106bda952f2b3c1187b6cf26855d0d6b19f6c052e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "4add6afd4adb6bb22c9d460106bda952f2b3c1187b6cf26855d0d6b19f6c052e" "/opt/rustwide/cargo-home/bin/cargo" "+dcc22e5232dd0dbe95a4b3ab84c8d24a0880771e" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: Cargo.toml: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024`
[INFO] [stderr] warning: `raytracer` (manifest) generated 1 warning
[INFO] [stderr]    Compiling num-traits v0.2.6
[INFO] [stderr]    Compiling libc v0.2.48
[INFO] [stderr]    Compiling arrayvec v0.4.10
[INFO] [stderr]    Compiling proc-macro2 v0.4.26
[INFO] [stderr]    Compiling rayon-core v1.4.1
[INFO] [stderr]    Compiling num-integer v0.1.39
[INFO] [stderr]    Compiling rayon v1.0.3
[INFO] [stderr]    Compiling num-iter v0.1.37
[INFO] [stderr]    Compiling num-derive v0.2.3
[INFO] [stderr]     Checking crossbeam-utils v0.2.2
[INFO] [stderr]     Checking adler32 v1.0.3
[INFO] [stderr]    Compiling num-rational v0.2.1
[INFO] [stderr]     Checking lzw v0.10.0
[INFO] [stderr]    Compiling cgmath v0.16.1
[INFO] [stderr]     Checking either v1.5.0
[INFO] [stderr]     Checking mint v0.5.1
[INFO] [stderr]     Checking deflate v0.7.19
[INFO] [stderr]     Checking inflate v0.4.4
[INFO] [stderr]     Checking color_quant v1.0.1
[INFO] [stderr]     Checking approx v0.1.1
[INFO] [stderr]     Checking scoped_threadpool v0.1.9
[INFO] [stderr]     Checking snowflake v1.3.0
[INFO] [stderr]     Checking tobj v0.1.7
[INFO] [stderr]     Checking gif v0.10.1
[INFO] [stderr]     Checking crossbeam-epoch v0.3.1
[INFO] [stderr]     Checking crossbeam-deque v0.2.0
[INFO] [stderr]     Checking num_cpus v1.9.0
[INFO] [stderr]     Checking rand v0.4.5
[INFO] [stderr]     Checking rand v0.5.6
[INFO] [stderr]    Compiling quote v0.6.11
[INFO] [stderr]     Checking num-traits v0.1.43
[INFO] [stderr]    Compiling syn v0.15.26
[INFO] [stderr]     Checking png v0.14.0
[INFO] [stderr]     Checking euler v0.4.0
[INFO] [stderr]     Checking jpeg-decoder v0.1.15
[INFO] [stderr]     Checking tiff v0.2.1
[INFO] [stderr]     Checking image v0.21.1
[INFO] [stderr]     Checking raytracer v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `ImageBuffer` and `RgbImage`
[INFO] [stdout]  --> src/scene.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 | use image::{RgbImage, ImageBuffer};
[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: `std::sync::Arc`
[INFO] [stdout]   --> src/scene.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f64::EPSILON as e`
[INFO] [stdout]   --> src/geometry/surface_coord.rs:10:13
[INFO] [stdout]    |
[INFO] [stdout] 10 |         use std::f64::EPSILON as e;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ray`
[INFO] [stdout]  --> src/shader.rs:5:27
[INFO] [stdout]   |
[INFO] [stdout] 5 | use geometry::{Intersect, Ray};
[INFO] [stdout]   |                           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/shader.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `snowflake::ProcessUniqueId`
[INFO] [stdout]  --> src/shader.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use snowflake::ProcessUniqueId;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `geometry::Ray`
[INFO] [stdout]  --> src/shader/translucent.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use geometry::Ray;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `euler::DVec3`
[INFO] [stdout]  --> src/shader/translucent.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use euler::DVec3;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/light.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `light::*`
[INFO] [stdout]  --> src/render.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use light::*;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `color::Color`
[INFO] [stdout]  --> src/normal_map.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use color::Color;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `image::RgbImage`
[INFO] [stdout]  --> src/asset_manager.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use image::RgbImage;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/asset_manager.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `primitive::plane::Triangle`
[INFO] [stdout]  --> src/mesh.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use primitive::plane::Triangle;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/mesh.rs:176:9
[INFO] [stdout]     |
[INFO] [stdout] 176 |           ///println!("BoundingNode check_intersect hit_point: {}", hit_point);
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 177 |
[INFO] [stdout] 178 | /         match self {
[INFO] [stdout] 179 | |             BoundingNode::Interior{axis, split, child} => {
[INFO] [stdout] ...   |
[INFO] [stdout] 277 | |             },
[INFO] [stdout] 278 | |         }
[INFO] [stdout]     | |_________- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout]     = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/scene.rs:17:16
[INFO] [stdout]    |
[INFO] [stdout] 17 |     image: Box<TextureMappable + Send + Sync>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     image: Box<dyn TextureMappable + Send + Sync>,
[INFO] [stdout]    |                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/scene.rs:48:19
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub root: Box<Traceable + Send + Sync>,
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub root: Box<dyn Traceable + Send + Sync>,
[INFO] [stdout]    |                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/scene.rs:49:25
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub lights: Vec<Box<Lightable + Send + Sync>>,
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub lights: Vec<Box<dyn Lightable + Send + Sync>>,
[INFO] [stdout]    |                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:144:27
[INFO] [stdout]     |
[INFO] [stdout] 144 |     primitive: Option<Box<Intersectable + Send + Sync>>,
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 144 |     primitive: Option<Box<dyn Intersectable + Send + Sync>>,
[INFO] [stdout]     |                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:145:19
[INFO] [stdout]     |
[INFO] [stdout] 145 |     material: Box<Shadable + Send + Sync>,
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 145 |     material: Box<dyn Shadable + Send + Sync>,
[INFO] [stdout]     |                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:147:23
[INFO] [stdout]     |
[INFO] [stdout] 147 |     children: Vec<Box<Traceable + Send + Sync>>,
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 147 |     children: Vec<Box<dyn Traceable + Send + Sync>>,
[INFO] [stdout]     |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/intersect.rs:73:22
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub shader: &'a (Shadable + Send + Sync + 'a),
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub shader: &'a (dyn Shadable + Send + Sync + 'a),
[INFO] [stdout]    |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/shader/texture.rs:5:18
[INFO] [stdout]   |
[INFO] [stdout] 5 |     texture: Box<TextureMappable + Send + Sync>,
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 5 |     texture: Box<dyn TextureMappable + Send + Sync>,
[INFO] [stdout]   |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:53:22
[INFO] [stdout]    |
[INFO] [stdout] 53 |     shaders: Vec<Box<Shadable + Send + Sync>>,
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 53 |     shaders: Vec<Box<dyn Shadable + Send + Sync>>,
[INFO] [stdout]    |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:78:28
[INFO] [stdout]    |
[INFO] [stdout] 78 |     shaders: Vec<(f64, Box<Shadable + Send + Sync>)>,
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 78 |     shaders: Vec<(f64, Box<dyn Shadable + Send + Sync>)>,
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/shader.rs:115:22
[INFO] [stdout]     |
[INFO] [stdout] 115 |     shaders: Vec<Box<Shadable + Send + Sync>>,
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 115 |     shaders: Vec<Box<dyn Shadable + Send + Sync>>,
[INFO] [stdout]     |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/shader.rs:157:21
[INFO] [stdout]     |
[INFO] [stdout] 157 |     normal_map: Box<NormalMappable + Send + Sync>,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 157 |     normal_map: Box<dyn NormalMappable + Send + Sync>,
[INFO] [stdout]     |                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/primitive.rs:21:20
[INFO] [stdout]    |
[INFO] [stdout] 21 |     primitive: Box<Intersectable + Send + Sync>,
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 21 |     primitive: Box<dyn Intersectable + Send + Sync>,
[INFO] [stdout]    |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/primitive.rs:50:20
[INFO] [stdout]    |
[INFO] [stdout] 50 |     primitive: Box<Intersectable + Send + Sync>,
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 50 |     primitive: Box<dyn Intersectable + Send + Sync>,
[INFO] [stdout]    |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/multithread.rs:19:16
[INFO] [stdout]    |
[INFO] [stdout] 19 | type Job = Box<FnBox + Send>;
[INFO] [stdout]    |                ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 19 | type Job = Box<dyn FnBox + Send>;
[INFO] [stdout]    |                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/base_shape.rs:6:20
[INFO] [stdout]   |
[INFO] [stdout] 6 |     primitive: Box<Intersectable + Send + Sync>,
[INFO] [stdout]   |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 6 |     primitive: Box<dyn Intersectable + Send + Sync>,
[INFO] [stdout]   |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/subtract_shape.rs:6:19
[INFO] [stdout]   |
[INFO] [stdout] 6 |     positive: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 6 |     positive: Box<dyn Compositable + Send + Sync>,
[INFO] [stdout]   |                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/subtract_shape.rs:7:19
[INFO] [stdout]   |
[INFO] [stdout] 7 |     negative: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 7 |     negative: Box<dyn Compositable + Send + Sync>,
[INFO] [stdout]   |                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/or_shape.rs:6:18
[INFO] [stdout]   |
[INFO] [stdout] 6 |     primary: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 6 |     primary: Box<dyn Compositable + Send + Sync>,
[INFO] [stdout]   |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/or_shape.rs:7:20
[INFO] [stdout]   |
[INFO] [stdout] 7 |     secondary: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 7 |     secondary: Box<dyn Compositable + Send + Sync>,
[INFO] [stdout]   |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/xor_shape.rs:6:18
[INFO] [stdout]   |
[INFO] [stdout] 6 |     primary: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 6 |     primary: Box<dyn Compositable + Send + Sync>,
[INFO] [stdout]   |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/xor_shape.rs:7:20
[INFO] [stdout]   |
[INFO] [stdout] 7 |     secondary: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 7 |     secondary: Box<dyn Compositable + Send + Sync>,
[INFO] [stdout]   |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/and_shape.rs:6:18
[INFO] [stdout]   |
[INFO] [stdout] 6 |     primary: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 6 |     primary: Box<dyn Compositable + Send + Sync>,
[INFO] [stdout]   |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/and_shape.rs:7:20
[INFO] [stdout]   |
[INFO] [stdout] 7 |     secondary: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 7 |     secondary: Box<dyn Compositable + Send + Sync>,
[INFO] [stdout]   |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/and_shape.rs:70:21
[INFO] [stdout]    |
[INFO] [stdout] 70 |     shapes: Vec<Box<Compositable + Send + Sync>>,
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 70 |     shapes: Vec<Box<dyn Compositable + Send + Sync>>,
[INFO] [stdout]    |                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:147:22
[INFO] [stdout]     |
[INFO] [stdout] 147 |     pub ceiling: Box<Shadable + Send + Sync>,
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 147 |     pub ceiling: Box<dyn Shadable + Send + Sync>,
[INFO] [stdout]     |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:148:20
[INFO] [stdout]     |
[INFO] [stdout] 148 |     pub floor: Box<Shadable + Send + Sync>,
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 148 |     pub floor: Box<dyn Shadable + Send + Sync>,
[INFO] [stdout]     |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:149:20
[INFO] [stdout]     |
[INFO] [stdout] 149 |     pub front: Box<Shadable + Send + Sync>,
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 149 |     pub front: Box<dyn Shadable + Send + Sync>,
[INFO] [stdout]     |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:150:19
[INFO] [stdout]     |
[INFO] [stdout] 150 |     pub back: Box<Shadable + Send + Sync>,
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 150 |     pub back: Box<dyn Shadable + Send + Sync>,
[INFO] [stdout]     |                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:151:19
[INFO] [stdout]     |
[INFO] [stdout] 151 |     pub left: Box<Shadable + Send + Sync>,
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 151 |     pub left: Box<dyn Shadable + Send + Sync>,
[INFO] [stdout]     |                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:152:20
[INFO] [stdout]     |
[INFO] [stdout] 152 |     pub right: Box<Shadable + Send + Sync>,
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 152 |     pub right: Box<dyn Shadable + Send + Sync>,
[INFO] [stdout]     |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/asset_manager.rs:16:41
[INFO] [stdout]    |
[INFO] [stdout] 16 |     texture_cache: HashMap<&'a str, Box<TextureMappable + Send + Sync>>,
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 16 |     texture_cache: HashMap<&'a str, Box<dyn TextureMappable + Send + Sync>>,
[INFO] [stdout]    |                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/asset_manager.rs:17:44
[INFO] [stdout]    |
[INFO] [stdout] 17 |     normal_map_cache: HashMap<&'a str, Box<NormalMappable + Send + Sync>>,
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     normal_map_cache: HashMap<&'a str, Box<dyn NormalMappable + Send + Sync>>,
[INFO] [stdout]    |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:135:20
[INFO] [stdout]     |
[INFO] [stdout] 135 | impl Clone for Box<Traceable + Send + Sync> {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 135 | impl Clone for Box<dyn Traceable + Send + Sync> {
[INFO] [stdout]     |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:45:20
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl Clone for Box<Intersectable + Send + Sync> {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl Clone for Box<dyn Intersectable + Send + Sync> {
[INFO] [stdout]    |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:77:20
[INFO] [stdout]    |
[INFO] [stdout] 77 | impl Clone for Box<Transformable + Send + Sync> {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 77 | impl Clone for Box<dyn Transformable + Send + Sync> {
[INFO] [stdout]    |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:45:20
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl Clone for Box<Shadable + Send + Sync> {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl Clone for Box<dyn Shadable + Send + Sync> {
[INFO] [stdout]    |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light.rs:59:20
[INFO] [stdout]    |
[INFO] [stdout] 59 | impl Clone for Box<Lightable + Send + Sync> {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 59 | impl Clone for Box<dyn Lightable + Send + Sync> {
[INFO] [stdout]    |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/composite_shape.rs:144:20
[INFO] [stdout]     |
[INFO] [stdout] 144 | impl Clone for Box<Compositable + Send + Sync> {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 144 | impl Clone for Box<dyn Compositable + Send + Sync> {
[INFO] [stdout]     |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:23:20
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl Clone for Box<TextureMappable + Send + Sync> {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl Clone for Box<dyn TextureMappable + Send + Sync> {
[INFO] [stdout]    |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/normal_map.rs:28:20
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl Clone for Box<NormalMappable + Send + Sync> {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl Clone for Box<dyn NormalMappable + Send + Sync> {
[INFO] [stdout]    |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:11:32
[INFO] [stdout]    |
[INFO] [stdout] 11 |     fn clone_box(&self) -> Box<TextureMappable + Send + Sync>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     fn clone_box(&self) -> Box<dyn TextureMappable + Send + Sync>;
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:111:40
[INFO] [stdout]     |
[INFO] [stdout] 111 |     fn add_child(&mut self, child: Box<Traceable + Send + Sync>);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 111 |     fn add_child(&mut self, child: Box<dyn Traceable + Send + Sync>);
[INFO] [stdout]     |                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:112:50
[INFO] [stdout]     |
[INFO] [stdout] 112 |     fn add_children(&mut self, children: Vec<Box<Traceable + Send + Sync>>) {
[INFO] [stdout]     |                                                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 112 |     fn add_children(&mut self, children: Vec<Box<dyn Traceable + Send + Sync>>) {
[INFO] [stdout]     |                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:123:32
[INFO] [stdout]     |
[INFO] [stdout] 123 |     fn clone_box(&self) -> Box<Traceable + Send + Sync>;
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 123 |     fn clone_box(&self) -> Box<dyn Traceable + Send + Sync>;
[INFO] [stdout]     |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light.rs:47:32
[INFO] [stdout]    |
[INFO] [stdout] 47 |     fn clone_box(&self) -> Box<Lightable + Send + Sync>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 47 |     fn clone_box(&self) -> Box<dyn Lightable + Send + Sync>;
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:130:32
[INFO] [stdout]     |
[INFO] [stdout] 130 |     fn clone_box(&self) -> Box<Traceable + Send + Sync> {
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 130 |     fn clone_box(&self) -> Box<dyn Traceable + Send + Sync> {
[INFO] [stdout]     |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:136:28
[INFO] [stdout]     |
[INFO] [stdout] 136 |     fn clone(&self) -> Box<Traceable + Send + Sync> {
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 136 |     fn clone(&self) -> Box<dyn Traceable + Send + Sync> {
[INFO] [stdout]     |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:33:32
[INFO] [stdout]    |
[INFO] [stdout] 33 |     fn clone_box(&self) -> Box<Intersectable + Send + Sync>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 33 |     fn clone_box(&self) -> Box<dyn Intersectable + Send + Sync>;
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:33:32
[INFO] [stdout]    |
[INFO] [stdout] 33 |     fn clone_box(&self) -> Box<Shadable + Send + Sync>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 33 |     fn clone_box(&self) -> Box<dyn Shadable + Send + Sync>;
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:192:40
[INFO] [stdout]     |
[INFO] [stdout] 192 |     fn add_child(&mut self, child: Box<Traceable + Send + Sync>) {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 192 |     fn add_child(&mut self, child: Box<dyn Traceable + Send + Sync>) {
[INFO] [stdout]     |                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:65:32
[INFO] [stdout]    |
[INFO] [stdout] 65 |     fn clone_box(&self) -> Box<Transformable + Send + Sync>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 65 |     fn clone_box(&self) -> Box<dyn Transformable + Send + Sync>;
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/composite_shape.rs:126:35
[INFO] [stdout]     |
[INFO] [stdout] 126 |     fn get_shapes(&self) -> Vec<&(Compositable + Send + Sync)>;
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 126 |     fn get_shapes(&self) -> Vec<&(dyn Compositable + Send + Sync)>;
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/composite_shape.rs:132:45
[INFO] [stdout]     |
[INFO] [stdout] 132 |     fn clone_compositable_box(&self) -> Box<Compositable + Send + Sync>;
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 132 |     fn clone_compositable_box(&self) -> Box<dyn Compositable + Send + Sync>;
[INFO] [stdout]     |                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/normal_map.rs:16:32
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn clone_box(&self) -> Box<NormalMappable + Send + Sync>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn clone_box(&self) -> Box<dyn NormalMappable + Send + Sync>;
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/intersect.rs:78:54
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub fn new(hit_id: ProcessUniqueId, shader: &'a (Shadable + Send + Sync + 'a), intersect: Intersect) -> NodeIntersect<'a> {
[INFO] [stdout]    |                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub fn new(hit_id: ProcessUniqueId, shader: &'a (dyn Shadable + Send + Sync + 'a), intersect: Intersect) -> NodeIntersect<'a> {
[INFO] [stdout]    |                                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:40:32
[INFO] [stdout]    |
[INFO] [stdout] 40 |     fn clone_box(&self) -> Box<Intersectable + Send + Sync> {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 40 |     fn clone_box(&self) -> Box<dyn Intersectable + Send + Sync> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:72:32
[INFO] [stdout]    |
[INFO] [stdout] 72 |     fn clone_box(&self) -> Box<Transformable + Send + Sync> {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 72 |     fn clone_box(&self) -> Box<dyn Transformable + Send + Sync> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:40:32
[INFO] [stdout]    |
[INFO] [stdout] 40 |     fn clone_box(&self) -> Box<Shadable + Send + Sync> {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 40 |     fn clone_box(&self) -> Box<dyn Shadable + Send + Sync> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light.rs:54:32
[INFO] [stdout]    |
[INFO] [stdout] 54 |     fn clone_box(&self) -> Box<Lightable + Send + Sync> {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 54 |     fn clone_box(&self) -> Box<dyn Lightable + Send + Sync> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/composite_shape.rs:139:45
[INFO] [stdout]     |
[INFO] [stdout] 139 |     fn clone_compositable_box(&self) -> Box<Compositable + Send + Sync> {
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 139 |     fn clone_compositable_box(&self) -> Box<dyn Compositable + Send + Sync> {
[INFO] [stdout]     |                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:18:32
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn clone_box(&self) -> Box<TextureMappable + Send + Sync> {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn clone_box(&self) -> Box<dyn TextureMappable + Send + Sync> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/normal_map.rs:23:32
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn clone_box(&self) -> Box<NormalMappable + Send + Sync> {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn clone_box(&self) -> Box<dyn NormalMappable + Send + Sync> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/asset_manager.rs:29:69
[INFO] [stdout]    |
[INFO] [stdout] 29 |     pub fn image_texture_from_path(&mut self, path: &'a str) -> Box<TextureMappable + Send + Sync> {
[INFO] [stdout]    |                                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 29 |     pub fn image_texture_from_path(&mut self, path: &'a str) -> Box<dyn TextureMappable + Send + Sync> {
[INFO] [stdout]    |                                                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/asset_manager.rs:41:76
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn bump_map_from_path(&mut self, path: &'a str, depth: f64) -> Box<NormalMappable + Send + Sync> {
[INFO] [stdout]    |                                                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn bump_map_from_path(&mut self, path: &'a str, depth: f64) -> Box<dyn NormalMappable + Send + Sync> {
[INFO] [stdout]    |                                                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/asset_manager.rs:51:66
[INFO] [stdout]    |
[INFO] [stdout] 51 |     pub fn normal_map_from_path(&mut self, path: &'a str) -> Box<NormalMappable> {
[INFO] [stdout]    |                                                                  ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 51 |     pub fn normal_map_from_path(&mut self, path: &'a str) -> Box<dyn NormalMappable> {
[INFO] [stdout]    |                                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:46:28
[INFO] [stdout]    |
[INFO] [stdout] 46 |     fn clone(&self) -> Box<Intersectable + Send + Sync> {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 46 |     fn clone(&self) -> Box<dyn Intersectable + Send + Sync> {
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:78:28
[INFO] [stdout]    |
[INFO] [stdout] 78 |     fn clone(&self) -> Box<Transformable + Send + Sync> {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 78 |     fn clone(&self) -> Box<dyn Transformable + Send + Sync> {
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:46:28
[INFO] [stdout]    |
[INFO] [stdout] 46 |     fn clone(&self) -> Box<Shadable + Send + Sync> {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 46 |     fn clone(&self) -> Box<dyn Shadable + Send + Sync> {
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light.rs:60:28
[INFO] [stdout]    |
[INFO] [stdout] 60 |     fn clone(&self) -> Box<Lightable + Send + Sync> {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 60 |     fn clone(&self) -> Box<dyn Lightable + Send + Sync> {
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/base_shape.rs:19:35
[INFO] [stdout]    |
[INFO] [stdout] 19 |     fn get_shapes(&self) -> Vec<&(Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 19 |     fn get_shapes(&self) -> Vec<&(dyn Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/subtract_shape.rs:21:35
[INFO] [stdout]    |
[INFO] [stdout] 21 |     fn get_shapes(&self) -> Vec<&(Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 21 |     fn get_shapes(&self) -> Vec<&(dyn Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/or_shape.rs:51:35
[INFO] [stdout]    |
[INFO] [stdout] 51 |     fn get_shapes(&self) -> Vec<&(Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 51 |     fn get_shapes(&self) -> Vec<&(dyn Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/xor_shape.rs:58:35
[INFO] [stdout]    |
[INFO] [stdout] 58 |     fn get_shapes(&self) -> Vec<&(Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 58 |     fn get_shapes(&self) -> Vec<&(dyn Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/and_shape.rs:47:35
[INFO] [stdout]    |
[INFO] [stdout] 47 |     fn get_shapes(&self) -> Vec<&(Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 47 |     fn get_shapes(&self) -> Vec<&(dyn Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/and_shape.rs:83:35
[INFO] [stdout]    |
[INFO] [stdout] 83 |     fn get_shapes(&self) -> Vec<&(Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 83 |     fn get_shapes(&self) -> Vec<&(dyn Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape.rs:75:33
[INFO] [stdout]    |
[INFO] [stdout] 75 | fn calculate_intersects(comp: &(Compositable + Send + Sync), ray: Ray, check_get: &mut FnMut(usize, &Vec<bool>, Intersect) -> Control) 
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 75 | fn calculate_intersects(comp: &(dyn Compositable + Send + Sync), ray: Ray, check_get: &mut FnMut(usize, &Vec<bool>, Intersect) -> Control) 
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape.rs:75:88
[INFO] [stdout]    |
[INFO] [stdout] 75 | fn calculate_intersects(comp: &(Compositable + Send + Sync), ray: Ray, check_get: &mut FnMut(usize, &Vec<bool>, Intersect) -> Control) 
[INFO] [stdout]    |                                                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 75 | fn calculate_intersects(comp: &(Compositable + Send + Sync), ray: Ray, check_get: &mut dyn FnMut(usize, &Vec<bool>, Intersect) -> Control) 
[INFO] [stdout]    |                                                                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/composite_shape.rs:145:28
[INFO] [stdout]     |
[INFO] [stdout] 145 |     fn clone(&self) -> Box<Compositable + Send + Sync> {
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 145 |     fn clone(&self) -> Box<dyn Compositable + Send + Sync> {
[INFO] [stdout]     |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/util.rs:35:36
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn build_scene(lights: Vec<Box<Lightable + Send + Sync>>, 
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn build_scene(lights: Vec<Box<dyn Lightable + Send + Sync>>, 
[INFO] [stdout]    |                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/util.rs:38:30
[INFO] [stdout]    |
[INFO] [stdout] 38 |                    root: Box<Traceable + Send + Sync>) -> Scene {
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 38 |                    root: Box<dyn Traceable + Send + Sync>) -> Scene {
[INFO] [stdout]    |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/util.rs:58:33
[INFO] [stdout]    |
[INFO] [stdout] 58 |                   material: Box<Shadable + Send + Sync>,
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 58 |                   material: Box<dyn Shadable + Send + Sync>,
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/util.rs:59:34
[INFO] [stdout]    |
[INFO] [stdout] 59 |                   primitive: Box<Intersectable + Send + Sync>,
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 59 |                   primitive: Box<dyn Intersectable + Send + Sync>,
[INFO] [stdout]    |                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/util.rs:60:37
[INFO] [stdout]    |
[INFO] [stdout] 60 |                   children: Vec<Box<Traceable + Send + Sync>>) -> Box<SceneNode> {
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 60 |                   children: Vec<Box<dyn Traceable + Send + Sync>>) -> Box<SceneNode> {
[INFO] [stdout]    |                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/util.rs:72:37
[INFO] [stdout]    |
[INFO] [stdout] 72 |                   children: Vec<Box<Traceable + Send + Sync>>) -> Box<SceneNode> {
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 72 |                   children: Vec<Box<dyn Traceable + Send + Sync>>) -> Box<SceneNode> {
[INFO] [stdout]    |                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:101:59
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub fn create_wall_from_material(size: f64, material: Box<Shadable + Send + Sync>, transform: DMat4) -> SceneNode {
[INFO] [stdout]     |                                                           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub fn create_wall_from_material(size: f64, material: Box<dyn Shadable + Send + Sync>, transform: DMat4) -> SceneNode {
[INFO] [stdout]     |                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:128:60
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub fn create_floor_from_material(size: f64, material: Box<Shadable + Send + Sync>) -> Box<SceneNode> {
[INFO] [stdout]     |                                                            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub fn create_floor_from_material(size: f64, material: Box<dyn Shadable + Send + Sync>) -> Box<SceneNode> {
[INFO] [stdout]     |                                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:299:55
[INFO] [stdout]     |
[INFO] [stdout] 299 | pub fn subtract_shape(transform: DMat4, positive: Box<Compositable + Send + Sync>, negative: Box<Compositable + Send + Sync>) -> Bo...
[INFO] [stdout]     |                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 299 | pub fn subtract_shape(transform: DMat4, positive: Box<dyn Compositable + Send + Sync>, negative: Box<Compositable + Send + Sync>) -> Box<SubtractShape> {
[INFO] [stdout]     |                                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:299:98
[INFO] [stdout]     |
[INFO] [stdout] 299 | pub fn subtract_shape(transform: DMat4, positive: Box<Compositable + Send + Sync>, negative: Box<Compositable + Send + Sync>) -> Bo...
[INFO] [stdout]     |                                                                                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 299 | pub fn subtract_shape(transform: DMat4, positive: Box<Compositable + Send + Sync>, negative: Box<dyn Compositable + Send + Sync>) -> Box<SubtractShape> {
[INFO] [stdout]     |                                                                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:305:48
[INFO] [stdout]     |
[INFO] [stdout] 305 | pub fn or_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<OrSh...
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 305 | pub fn or_shape(transform: DMat4, primary: Box<dyn Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<OrShape> {
[INFO] [stdout]     |                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:305:92
[INFO] [stdout]     |
[INFO] [stdout] 305 | pub fn or_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<OrSh...
[INFO] [stdout]     |                                                                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 305 | pub fn or_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<dyn Compositable + Send + Sync>) -> Box<OrShape> {
[INFO] [stdout]     |                                                                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:311:49
[INFO] [stdout]     |
[INFO] [stdout] 311 | pub fn xor_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<Xor...
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 311 | pub fn xor_shape(transform: DMat4, primary: Box<dyn Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<XorShape> {
[INFO] [stdout]     |                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:311:93
[INFO] [stdout]     |
[INFO] [stdout] 311 | pub fn xor_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<Xor...
[INFO] [stdout]     |                                                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 311 | pub fn xor_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<dyn Compositable + Send + Sync>) -> Box<XorShape> {
[INFO] [stdout]     |                                                                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:317:49
[INFO] [stdout]     |
[INFO] [stdout] 317 | pub fn and_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<And...
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 317 | pub fn and_shape(transform: DMat4, primary: Box<dyn Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<AndShape> {
[INFO] [stdout]     |                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:317:93
[INFO] [stdout]     |
[INFO] [stdout] 317 | pub fn and_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<And...
[INFO] [stdout]     |                                                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 317 | pub fn and_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<dyn Compositable + Send + Sync>) -> Box<AndShape> {
[INFO] [stdout]     |                                                                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:351:52
[INFO] [stdout]     |
[INFO] [stdout] 351 | pub fn base_shape(transform: DMat4, primitive: Box<Intersectable + Send + Sync>) -> Box<BaseShape> {
[INFO] [stdout]     |                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 351 | pub fn base_shape(transform: DMat4, primitive: Box<dyn Intersectable + Send + Sync>) -> Box<BaseShape> {
[INFO] [stdout]     |                                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:24:28
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn clone(&self) -> Box<TextureMappable + Send + Sync> {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn clone(&self) -> Box<dyn TextureMappable + Send + Sync> {
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/normal_map.rs:29:28
[INFO] [stdout]    |
[INFO] [stdout] 29 |     fn clone(&self) -> Box<NormalMappable + Send + Sync> {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 29 |     fn clone(&self) -> Box<dyn NormalMappable + Send + Sync> {
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/scene.rs:87:44
[INFO] [stdout]    |
[INFO] [stdout] 87 |     pub fn add_light(&mut self, light: Box<Lightable + Send + Sync>) {
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 87 |     pub fn add_light(&mut self, light: Box<dyn Lightable + Send + Sync>) {
[INFO] [stdout]    |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:163:52
[INFO] [stdout]     |
[INFO] [stdout] 163 |     pub fn set_primitive(&mut self, primitive: Box<Intersectable + Send + Sync>) {
[INFO] [stdout]     |                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 163 |     pub fn set_primitive(&mut self, primitive: Box<dyn Intersectable + Send + Sync>) {
[INFO] [stdout]     |                                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:167:50
[INFO] [stdout]     |
[INFO] [stdout] 167 |     pub fn set_material(&mut self, material: Box<Shadable + Send + Sync>) {
[INFO] [stdout]     |                                                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 167 |     pub fn set_material(&mut self, material: Box<dyn Shadable + Send + Sync>) {
[INFO] [stdout]     |                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/shader/texture.rs:9:29
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub fn new(texture: Box<TextureMappable + Send + Sync>) -> Box<TextureShader> {
[INFO] [stdout]   |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub fn new(texture: Box<dyn TextureMappable + Send + Sync>) -> Box<TextureShader> {
[INFO] [stdout]   |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:57:42
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn from_shaders(shaders: Vec<Box<Shadable + Send + Sync>>) -> Box<MixShader> {
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn from_shaders(shaders: Vec<Box<dyn Shadable + Send + Sync>>) -> Box<MixShader> {
[INFO] [stdout]    |                                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:61:46
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub fn add_shader(&mut self, shader: Box<Shadable + Send + Sync>) {
[INFO] [stdout]    |                                              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub fn add_shader(&mut self, shader: Box<dyn Shadable + Send + Sync>) {
[INFO] [stdout]    |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:86:59
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub fn add_shader(&mut self, weight: f64, shader: Box<Shadable + Send + Sync>) {
[INFO] [stdout]    |                                                           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub fn add_shader(&mut self, weight: f64, shader: Box<dyn Shadable + Send + Sync>) {
[INFO] [stdout]    |                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:90:48
[INFO] [stdout]    |
[INFO] [stdout] 90 |     pub fn from_shaders(shaders: Vec<(f64, Box<Shadable + Send + Sync>)>) -> Box<CompositeShader> {
[INFO] [stdout]    |                                                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 90 |     pub fn from_shaders(shaders: Vec<(f64, Box<dyn Shadable + Send + Sync>)>) -> Box<CompositeShader> {
[INFO] [stdout]    |                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/shader.rs:125:42
[INFO] [stdout]     |
[INFO] [stdout] 125 |     pub fn from_shaders(shaders: Vec<Box<Shadable + Send + Sync>>) -> Box<ChainShader> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 125 |     pub fn from_shaders(shaders: Vec<Box<dyn Shadable + Send + Sync>>) -> Box<ChainShader> {
[INFO] [stdout]     |                                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/shader.rs:129:47
[INFO] [stdout]     |
[INFO] [stdout] 129 |     pub fn push_shader(&mut self, shader: Box<Shadable + Send + Sync>) {
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 129 |     pub fn push_shader(&mut self, shader: Box<dyn Shadable + Send + Sync>) {
[INFO] [stdout]     |                                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/shader.rs:161:32
[INFO] [stdout]     |
[INFO] [stdout] 161 |     pub fn new(normal_map: Box<NormalMappable + Send + Sync>) -> Box<NormalMapShader> {
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 161 |     pub fn new(normal_map: Box<dyn NormalMappable + Send + Sync>) -> Box<NormalMapShader> {
[INFO] [stdout]     |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/primitive.rs:25:31
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn new(primitive: Box<Intersectable + Send + Sync>) -> OneWay {
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn new(primitive: Box<dyn Intersectable + Send + Sync>) -> OneWay {
[INFO] [stdout]    |                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/primitive.rs:54:31
[INFO] [stdout]    |
[INFO] [stdout] 54 |     pub fn new(primitive: Box<Intersectable + Send + Sync>) -> Inverted {
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 54 |     pub fn new(primitive: Box<dyn Intersectable + Send + Sync>) -> Inverted {
[INFO] [stdout]    |                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/base_shape.rs:10:46
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub fn new(matrix: DMat4, primitive: Box<Intersectable + Send + Sync>) -> BaseShape {
[INFO] [stdout]    |                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub fn new(matrix: DMat4, primitive: Box<dyn Intersectable + Send + Sync>) -> BaseShape {
[INFO] [stdout]    |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/subtract_shape.rs:11:30
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(positive: Box<Compositable + Send + Sync>, negative: Box<Compositable + Send + Sync>) -> SubtractShape {
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(positive: Box<dyn Compositable + Send + Sync>, negative: Box<Compositable + Send + Sync>) -> SubtractShape {
[INFO] [stdout]    |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/subtract_shape.rs:11:73
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(positive: Box<Compositable + Send + Sync>, negative: Box<Compositable + Send + Sync>) -> SubtractShape {
[INFO] [stdout]    |                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(positive: Box<Compositable + Send + Sync>, negative: Box<dyn Compositable + Send + Sync>) -> SubtractShape {
[INFO] [stdout]    |                                                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/or_shape.rs:11:29
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> OrShape {
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<dyn Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> OrShape {
[INFO] [stdout]    |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/or_shape.rs:11:73
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> OrShape {
[INFO] [stdout]    |                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<dyn Compositable + Send + Sync>) -> OrShape {
[INFO] [stdout]    |                                                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/xor_shape.rs:11:29
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> XorShape {
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<dyn Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> XorShape {
[INFO] [stdout]    |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/xor_shape.rs:11:73
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> XorShape {
[INFO] [stdout]    |                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<dyn Compositable + Send + Sync>) -> XorShape {
[INFO] [stdout]    |                                                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/and_shape.rs:11:29
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> AndShape {
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<dyn Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> AndShape {
[INFO] [stdout]    |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/and_shape.rs:11:73
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> AndShape {
[INFO] [stdout]    |                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<dyn Compositable + Send + Sync>) -> AndShape {
[INFO] [stdout]    |                                                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/and_shape.rs:74:37
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub fn from_vec(shapes: Vec<Box<Compositable + Send + Sync>>) -> MultiAndShape {
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub fn from_vec(shapes: Vec<Box<dyn Compositable + Send + Sync>>) -> MultiAndShape {
[INFO] [stdout]    |                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ImageBuffer` and `RgbImage`
[INFO] [stdout]  --> src/scene.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 | use image::{RgbImage, ImageBuffer};
[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: `std::sync::Arc`
[INFO] [stdout]   --> src/scene.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::sync::Arc;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f64::EPSILON as e`
[INFO] [stdout]   --> src/geometry/surface_coord.rs:10:13
[INFO] [stdout]    |
[INFO] [stdout] 10 |         use std::f64::EPSILON as e;
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ray`
[INFO] [stdout]  --> src/shader.rs:5:27
[INFO] [stdout]   |
[INFO] [stdout] 5 | use geometry::{Intersect, Ray};
[INFO] [stdout]   |                           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/shader.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `snowflake::ProcessUniqueId`
[INFO] [stdout]  --> src/shader.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use snowflake::ProcessUniqueId;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `geometry::Ray`
[INFO] [stdout]  --> src/shader/translucent.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use geometry::Ray;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `euler::DVec3`
[INFO] [stdout]  --> src/shader/translucent.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use euler::DVec3;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/light.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `light::*`
[INFO] [stdout]  --> src/render.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use light::*;
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `color::Color`
[INFO] [stdout]  --> src/normal_map.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use color::Color;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `image::RgbImage`
[INFO] [stdout]  --> src/asset_manager.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use image::RgbImage;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::sync::Arc`
[INFO] [stdout]  --> src/asset_manager.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::sync::Arc;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `primitive::plane::Triangle`
[INFO] [stdout]  --> src/mesh.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use primitive::plane::Triangle;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]    --> src/mesh.rs:176:9
[INFO] [stdout]     |
[INFO] [stdout] 176 |           ///println!("BoundingNode check_intersect hit_point: {}", hit_point);
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 177 |
[INFO] [stdout] 178 | /         match self {
[INFO] [stdout] 179 | |             BoundingNode::Interior{axis, split, child} => {
[INFO] [stdout] ...   |
[INFO] [stdout] 277 | |             },
[INFO] [stdout] 278 | |         }
[INFO] [stdout]     | |_________- rustdoc does not generate documentation for expressions
[INFO] [stdout]     |
[INFO] [stdout]     = help: use `//` for a plain comment
[INFO] [stdout]     = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/scene.rs:17:16
[INFO] [stdout]    |
[INFO] [stdout] 17 |     image: Box<TextureMappable + Send + Sync>,
[INFO] [stdout]    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     image: Box<dyn TextureMappable + Send + Sync>,
[INFO] [stdout]    |                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/scene.rs:48:19
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub root: Box<Traceable + Send + Sync>,
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub root: Box<dyn Traceable + Send + Sync>,
[INFO] [stdout]    |                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/scene.rs:49:25
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub lights: Vec<Box<Lightable + Send + Sync>>,
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 49 |     pub lights: Vec<Box<dyn Lightable + Send + Sync>>,
[INFO] [stdout]    |                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:144:27
[INFO] [stdout]     |
[INFO] [stdout] 144 |     primitive: Option<Box<Intersectable + Send + Sync>>,
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 144 |     primitive: Option<Box<dyn Intersectable + Send + Sync>>,
[INFO] [stdout]     |                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:145:19
[INFO] [stdout]     |
[INFO] [stdout] 145 |     material: Box<Shadable + Send + Sync>,
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 145 |     material: Box<dyn Shadable + Send + Sync>,
[INFO] [stdout]     |                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:147:23
[INFO] [stdout]     |
[INFO] [stdout] 147 |     children: Vec<Box<Traceable + Send + Sync>>,
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 147 |     children: Vec<Box<dyn Traceable + Send + Sync>>,
[INFO] [stdout]     |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/intersect.rs:73:22
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub shader: &'a (Shadable + Send + Sync + 'a),
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 73 |     pub shader: &'a (dyn Shadable + Send + Sync + 'a),
[INFO] [stdout]    |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/shader/texture.rs:5:18
[INFO] [stdout]   |
[INFO] [stdout] 5 |     texture: Box<TextureMappable + Send + Sync>,
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 5 |     texture: Box<dyn TextureMappable + Send + Sync>,
[INFO] [stdout]   |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:53:22
[INFO] [stdout]    |
[INFO] [stdout] 53 |     shaders: Vec<Box<Shadable + Send + Sync>>,
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 53 |     shaders: Vec<Box<dyn Shadable + Send + Sync>>,
[INFO] [stdout]    |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:78:28
[INFO] [stdout]    |
[INFO] [stdout] 78 |     shaders: Vec<(f64, Box<Shadable + Send + Sync>)>,
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 78 |     shaders: Vec<(f64, Box<dyn Shadable + Send + Sync>)>,
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/shader.rs:115:22
[INFO] [stdout]     |
[INFO] [stdout] 115 |     shaders: Vec<Box<Shadable + Send + Sync>>,
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 115 |     shaders: Vec<Box<dyn Shadable + Send + Sync>>,
[INFO] [stdout]     |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/shader.rs:157:21
[INFO] [stdout]     |
[INFO] [stdout] 157 |     normal_map: Box<NormalMappable + Send + Sync>,
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 157 |     normal_map: Box<dyn NormalMappable + Send + Sync>,
[INFO] [stdout]     |                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/primitive.rs:21:20
[INFO] [stdout]    |
[INFO] [stdout] 21 |     primitive: Box<Intersectable + Send + Sync>,
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 21 |     primitive: Box<dyn Intersectable + Send + Sync>,
[INFO] [stdout]    |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/primitive.rs:50:20
[INFO] [stdout]    |
[INFO] [stdout] 50 |     primitive: Box<Intersectable + Send + Sync>,
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 50 |     primitive: Box<dyn Intersectable + Send + Sync>,
[INFO] [stdout]    |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/multithread.rs:19:16
[INFO] [stdout]    |
[INFO] [stdout] 19 | type Job = Box<FnBox + Send>;
[INFO] [stdout]    |                ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 19 | type Job = Box<dyn FnBox + Send>;
[INFO] [stdout]    |                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/base_shape.rs:6:20
[INFO] [stdout]   |
[INFO] [stdout] 6 |     primitive: Box<Intersectable + Send + Sync>,
[INFO] [stdout]   |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 6 |     primitive: Box<dyn Intersectable + Send + Sync>,
[INFO] [stdout]   |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/subtract_shape.rs:6:19
[INFO] [stdout]   |
[INFO] [stdout] 6 |     positive: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 6 |     positive: Box<dyn Compositable + Send + Sync>,
[INFO] [stdout]   |                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/subtract_shape.rs:7:19
[INFO] [stdout]   |
[INFO] [stdout] 7 |     negative: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 7 |     negative: Box<dyn Compositable + Send + Sync>,
[INFO] [stdout]   |                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/or_shape.rs:6:18
[INFO] [stdout]   |
[INFO] [stdout] 6 |     primary: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 6 |     primary: Box<dyn Compositable + Send + Sync>,
[INFO] [stdout]   |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/or_shape.rs:7:20
[INFO] [stdout]   |
[INFO] [stdout] 7 |     secondary: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 7 |     secondary: Box<dyn Compositable + Send + Sync>,
[INFO] [stdout]   |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/xor_shape.rs:6:18
[INFO] [stdout]   |
[INFO] [stdout] 6 |     primary: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 6 |     primary: Box<dyn Compositable + Send + Sync>,
[INFO] [stdout]   |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/xor_shape.rs:7:20
[INFO] [stdout]   |
[INFO] [stdout] 7 |     secondary: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 7 |     secondary: Box<dyn Compositable + Send + Sync>,
[INFO] [stdout]   |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/and_shape.rs:6:18
[INFO] [stdout]   |
[INFO] [stdout] 6 |     primary: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 6 |     primary: Box<dyn Compositable + Send + Sync>,
[INFO] [stdout]   |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/composite_shape/and_shape.rs:7:20
[INFO] [stdout]   |
[INFO] [stdout] 7 |     secondary: Box<Compositable + Send + Sync>,
[INFO] [stdout]   |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 7 |     secondary: Box<dyn Compositable + Send + Sync>,
[INFO] [stdout]   |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/and_shape.rs:70:21
[INFO] [stdout]    |
[INFO] [stdout] 70 |     shapes: Vec<Box<Compositable + Send + Sync>>,
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 70 |     shapes: Vec<Box<dyn Compositable + Send + Sync>>,
[INFO] [stdout]    |                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:147:22
[INFO] [stdout]     |
[INFO] [stdout] 147 |     pub ceiling: Box<Shadable + Send + Sync>,
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 147 |     pub ceiling: Box<dyn Shadable + Send + Sync>,
[INFO] [stdout]     |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:148:20
[INFO] [stdout]     |
[INFO] [stdout] 148 |     pub floor: Box<Shadable + Send + Sync>,
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 148 |     pub floor: Box<dyn Shadable + Send + Sync>,
[INFO] [stdout]     |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:149:20
[INFO] [stdout]     |
[INFO] [stdout] 149 |     pub front: Box<Shadable + Send + Sync>,
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 149 |     pub front: Box<dyn Shadable + Send + Sync>,
[INFO] [stdout]     |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:150:19
[INFO] [stdout]     |
[INFO] [stdout] 150 |     pub back: Box<Shadable + Send + Sync>,
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 150 |     pub back: Box<dyn Shadable + Send + Sync>,
[INFO] [stdout]     |                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:151:19
[INFO] [stdout]     |
[INFO] [stdout] 151 |     pub left: Box<Shadable + Send + Sync>,
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 151 |     pub left: Box<dyn Shadable + Send + Sync>,
[INFO] [stdout]     |                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:152:20
[INFO] [stdout]     |
[INFO] [stdout] 152 |     pub right: Box<Shadable + Send + Sync>,
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 152 |     pub right: Box<dyn Shadable + Send + Sync>,
[INFO] [stdout]     |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/asset_manager.rs:16:41
[INFO] [stdout]    |
[INFO] [stdout] 16 |     texture_cache: HashMap<&'a str, Box<TextureMappable + Send + Sync>>,
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 16 |     texture_cache: HashMap<&'a str, Box<dyn TextureMappable + Send + Sync>>,
[INFO] [stdout]    |                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/asset_manager.rs:17:44
[INFO] [stdout]    |
[INFO] [stdout] 17 |     normal_map_cache: HashMap<&'a str, Box<NormalMappable + Send + Sync>>,
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     normal_map_cache: HashMap<&'a str, Box<dyn NormalMappable + Send + Sync>>,
[INFO] [stdout]    |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:135:20
[INFO] [stdout]     |
[INFO] [stdout] 135 | impl Clone for Box<Traceable + Send + Sync> {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 135 | impl Clone for Box<dyn Traceable + Send + Sync> {
[INFO] [stdout]     |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:45:20
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl Clone for Box<Intersectable + Send + Sync> {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl Clone for Box<dyn Intersectable + Send + Sync> {
[INFO] [stdout]    |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:77:20
[INFO] [stdout]    |
[INFO] [stdout] 77 | impl Clone for Box<Transformable + Send + Sync> {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 77 | impl Clone for Box<dyn Transformable + Send + Sync> {
[INFO] [stdout]    |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:45:20
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl Clone for Box<Shadable + Send + Sync> {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl Clone for Box<dyn Shadable + Send + Sync> {
[INFO] [stdout]    |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light.rs:59:20
[INFO] [stdout]    |
[INFO] [stdout] 59 | impl Clone for Box<Lightable + Send + Sync> {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 59 | impl Clone for Box<dyn Lightable + Send + Sync> {
[INFO] [stdout]    |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/composite_shape.rs:144:20
[INFO] [stdout]     |
[INFO] [stdout] 144 | impl Clone for Box<Compositable + Send + Sync> {
[INFO] [stdout]     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 144 | impl Clone for Box<dyn Compositable + Send + Sync> {
[INFO] [stdout]     |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:23:20
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl Clone for Box<TextureMappable + Send + Sync> {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl Clone for Box<dyn TextureMappable + Send + Sync> {
[INFO] [stdout]    |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/normal_map.rs:28:20
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl Clone for Box<NormalMappable + Send + Sync> {
[INFO] [stdout]    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl Clone for Box<dyn NormalMappable + Send + Sync> {
[INFO] [stdout]    |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:11:32
[INFO] [stdout]    |
[INFO] [stdout] 11 |     fn clone_box(&self) -> Box<TextureMappable + Send + Sync>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     fn clone_box(&self) -> Box<dyn TextureMappable + Send + Sync>;
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:111:40
[INFO] [stdout]     |
[INFO] [stdout] 111 |     fn add_child(&mut self, child: Box<Traceable + Send + Sync>);
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 111 |     fn add_child(&mut self, child: Box<dyn Traceable + Send + Sync>);
[INFO] [stdout]     |                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:112:50
[INFO] [stdout]     |
[INFO] [stdout] 112 |     fn add_children(&mut self, children: Vec<Box<Traceable + Send + Sync>>) {
[INFO] [stdout]     |                                                  ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 112 |     fn add_children(&mut self, children: Vec<Box<dyn Traceable + Send + Sync>>) {
[INFO] [stdout]     |                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:123:32
[INFO] [stdout]     |
[INFO] [stdout] 123 |     fn clone_box(&self) -> Box<Traceable + Send + Sync>;
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 123 |     fn clone_box(&self) -> Box<dyn Traceable + Send + Sync>;
[INFO] [stdout]     |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light.rs:47:32
[INFO] [stdout]    |
[INFO] [stdout] 47 |     fn clone_box(&self) -> Box<Lightable + Send + Sync>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 47 |     fn clone_box(&self) -> Box<dyn Lightable + Send + Sync>;
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:130:32
[INFO] [stdout]     |
[INFO] [stdout] 130 |     fn clone_box(&self) -> Box<Traceable + Send + Sync> {
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 130 |     fn clone_box(&self) -> Box<dyn Traceable + Send + Sync> {
[INFO] [stdout]     |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:136:28
[INFO] [stdout]     |
[INFO] [stdout] 136 |     fn clone(&self) -> Box<Traceable + Send + Sync> {
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 136 |     fn clone(&self) -> Box<dyn Traceable + Send + Sync> {
[INFO] [stdout]     |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:33:32
[INFO] [stdout]    |
[INFO] [stdout] 33 |     fn clone_box(&self) -> Box<Intersectable + Send + Sync>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 33 |     fn clone_box(&self) -> Box<dyn Intersectable + Send + Sync>;
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:33:32
[INFO] [stdout]    |
[INFO] [stdout] 33 |     fn clone_box(&self) -> Box<Shadable + Send + Sync>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 33 |     fn clone_box(&self) -> Box<dyn Shadable + Send + Sync>;
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:192:40
[INFO] [stdout]     |
[INFO] [stdout] 192 |     fn add_child(&mut self, child: Box<Traceable + Send + Sync>) {
[INFO] [stdout]     |                                        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 192 |     fn add_child(&mut self, child: Box<dyn Traceable + Send + Sync>) {
[INFO] [stdout]     |                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:65:32
[INFO] [stdout]    |
[INFO] [stdout] 65 |     fn clone_box(&self) -> Box<Transformable + Send + Sync>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 65 |     fn clone_box(&self) -> Box<dyn Transformable + Send + Sync>;
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/composite_shape.rs:126:35
[INFO] [stdout]     |
[INFO] [stdout] 126 |     fn get_shapes(&self) -> Vec<&(Compositable + Send + Sync)>;
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 126 |     fn get_shapes(&self) -> Vec<&(dyn Compositable + Send + Sync)>;
[INFO] [stdout]     |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/composite_shape.rs:132:45
[INFO] [stdout]     |
[INFO] [stdout] 132 |     fn clone_compositable_box(&self) -> Box<Compositable + Send + Sync>;
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 132 |     fn clone_compositable_box(&self) -> Box<dyn Compositable + Send + Sync>;
[INFO] [stdout]     |                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/normal_map.rs:16:32
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn clone_box(&self) -> Box<NormalMappable + Send + Sync>;
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn clone_box(&self) -> Box<dyn NormalMappable + Send + Sync>;
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/intersect.rs:78:54
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub fn new(hit_id: ProcessUniqueId, shader: &'a (Shadable + Send + Sync + 'a), intersect: Intersect) -> NodeIntersect<'a> {
[INFO] [stdout]    |                                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub fn new(hit_id: ProcessUniqueId, shader: &'a (dyn Shadable + Send + Sync + 'a), intersect: Intersect) -> NodeIntersect<'a> {
[INFO] [stdout]    |                                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:40:32
[INFO] [stdout]    |
[INFO] [stdout] 40 |     fn clone_box(&self) -> Box<Intersectable + Send + Sync> {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 40 |     fn clone_box(&self) -> Box<dyn Intersectable + Send + Sync> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:72:32
[INFO] [stdout]    |
[INFO] [stdout] 72 |     fn clone_box(&self) -> Box<Transformable + Send + Sync> {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 72 |     fn clone_box(&self) -> Box<dyn Transformable + Send + Sync> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:40:32
[INFO] [stdout]    |
[INFO] [stdout] 40 |     fn clone_box(&self) -> Box<Shadable + Send + Sync> {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 40 |     fn clone_box(&self) -> Box<dyn Shadable + Send + Sync> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light.rs:54:32
[INFO] [stdout]    |
[INFO] [stdout] 54 |     fn clone_box(&self) -> Box<Lightable + Send + Sync> {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 54 |     fn clone_box(&self) -> Box<dyn Lightable + Send + Sync> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/composite_shape.rs:139:45
[INFO] [stdout]     |
[INFO] [stdout] 139 |     fn clone_compositable_box(&self) -> Box<Compositable + Send + Sync> {
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 139 |     fn clone_compositable_box(&self) -> Box<dyn Compositable + Send + Sync> {
[INFO] [stdout]     |                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:18:32
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn clone_box(&self) -> Box<TextureMappable + Send + Sync> {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn clone_box(&self) -> Box<dyn TextureMappable + Send + Sync> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/normal_map.rs:23:32
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn clone_box(&self) -> Box<NormalMappable + Send + Sync> {
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn clone_box(&self) -> Box<dyn NormalMappable + Send + Sync> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/asset_manager.rs:29:69
[INFO] [stdout]    |
[INFO] [stdout] 29 |     pub fn image_texture_from_path(&mut self, path: &'a str) -> Box<TextureMappable + Send + Sync> {
[INFO] [stdout]    |                                                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 29 |     pub fn image_texture_from_path(&mut self, path: &'a str) -> Box<dyn TextureMappable + Send + Sync> {
[INFO] [stdout]    |                                                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/asset_manager.rs:41:76
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn bump_map_from_path(&mut self, path: &'a str, depth: f64) -> Box<NormalMappable + Send + Sync> {
[INFO] [stdout]    |                                                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn bump_map_from_path(&mut self, path: &'a str, depth: f64) -> Box<dyn NormalMappable + Send + Sync> {
[INFO] [stdout]    |                                                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/asset_manager.rs:51:66
[INFO] [stdout]    |
[INFO] [stdout] 51 |     pub fn normal_map_from_path(&mut self, path: &'a str) -> Box<NormalMappable> {
[INFO] [stdout]    |                                                                  ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 51 |     pub fn normal_map_from_path(&mut self, path: &'a str) -> Box<dyn NormalMappable> {
[INFO] [stdout]    |                                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:46:28
[INFO] [stdout]    |
[INFO] [stdout] 46 |     fn clone(&self) -> Box<Intersectable + Send + Sync> {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 46 |     fn clone(&self) -> Box<dyn Intersectable + Send + Sync> {
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry.rs:78:28
[INFO] [stdout]    |
[INFO] [stdout] 78 |     fn clone(&self) -> Box<Transformable + Send + Sync> {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 78 |     fn clone(&self) -> Box<dyn Transformable + Send + Sync> {
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:46:28
[INFO] [stdout]    |
[INFO] [stdout] 46 |     fn clone(&self) -> Box<Shadable + Send + Sync> {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 46 |     fn clone(&self) -> Box<dyn Shadable + Send + Sync> {
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light.rs:60:28
[INFO] [stdout]    |
[INFO] [stdout] 60 |     fn clone(&self) -> Box<Lightable + Send + Sync> {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 60 |     fn clone(&self) -> Box<dyn Lightable + Send + Sync> {
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/base_shape.rs:19:35
[INFO] [stdout]    |
[INFO] [stdout] 19 |     fn get_shapes(&self) -> Vec<&(Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 19 |     fn get_shapes(&self) -> Vec<&(dyn Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/subtract_shape.rs:21:35
[INFO] [stdout]    |
[INFO] [stdout] 21 |     fn get_shapes(&self) -> Vec<&(Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 21 |     fn get_shapes(&self) -> Vec<&(dyn Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/or_shape.rs:51:35
[INFO] [stdout]    |
[INFO] [stdout] 51 |     fn get_shapes(&self) -> Vec<&(Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 51 |     fn get_shapes(&self) -> Vec<&(dyn Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/xor_shape.rs:58:35
[INFO] [stdout]    |
[INFO] [stdout] 58 |     fn get_shapes(&self) -> Vec<&(Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 58 |     fn get_shapes(&self) -> Vec<&(dyn Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/and_shape.rs:47:35
[INFO] [stdout]    |
[INFO] [stdout] 47 |     fn get_shapes(&self) -> Vec<&(Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 47 |     fn get_shapes(&self) -> Vec<&(dyn Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/and_shape.rs:83:35
[INFO] [stdout]    |
[INFO] [stdout] 83 |     fn get_shapes(&self) -> Vec<&(Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 83 |     fn get_shapes(&self) -> Vec<&(dyn Compositable + Send + Sync)> {
[INFO] [stdout]    |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape.rs:75:33
[INFO] [stdout]    |
[INFO] [stdout] 75 | fn calculate_intersects(comp: &(Compositable + Send + Sync), ray: Ray, check_get: &mut FnMut(usize, &Vec<bool>, Intersect) -> Control) 
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 75 | fn calculate_intersects(comp: &(dyn Compositable + Send + Sync), ray: Ray, check_get: &mut FnMut(usize, &Vec<bool>, Intersect) -> Control) 
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape.rs:75:88
[INFO] [stdout]    |
[INFO] [stdout] 75 | fn calculate_intersects(comp: &(Compositable + Send + Sync), ray: Ray, check_get: &mut FnMut(usize, &Vec<bool>, Intersect) -> Control) 
[INFO] [stdout]    |                                                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 75 | fn calculate_intersects(comp: &(Compositable + Send + Sync), ray: Ray, check_get: &mut dyn FnMut(usize, &Vec<bool>, Intersect) -> Control) 
[INFO] [stdout]    |                                                                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/composite_shape.rs:145:28
[INFO] [stdout]     |
[INFO] [stdout] 145 |     fn clone(&self) -> Box<Compositable + Send + Sync> {
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 145 |     fn clone(&self) -> Box<dyn Compositable + Send + Sync> {
[INFO] [stdout]     |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/util.rs:35:36
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn build_scene(lights: Vec<Box<Lightable + Send + Sync>>, 
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn build_scene(lights: Vec<Box<dyn Lightable + Send + Sync>>, 
[INFO] [stdout]    |                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/util.rs:38:30
[INFO] [stdout]    |
[INFO] [stdout] 38 |                    root: Box<Traceable + Send + Sync>) -> Scene {
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 38 |                    root: Box<dyn Traceable + Send + Sync>) -> Scene {
[INFO] [stdout]    |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/util.rs:58:33
[INFO] [stdout]    |
[INFO] [stdout] 58 |                   material: Box<Shadable + Send + Sync>,
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 58 |                   material: Box<dyn Shadable + Send + Sync>,
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/util.rs:59:34
[INFO] [stdout]    |
[INFO] [stdout] 59 |                   primitive: Box<Intersectable + Send + Sync>,
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 59 |                   primitive: Box<dyn Intersectable + Send + Sync>,
[INFO] [stdout]    |                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/util.rs:60:37
[INFO] [stdout]    |
[INFO] [stdout] 60 |                   children: Vec<Box<Traceable + Send + Sync>>) -> Box<SceneNode> {
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 60 |                   children: Vec<Box<dyn Traceable + Send + Sync>>) -> Box<SceneNode> {
[INFO] [stdout]    |                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/util.rs:72:37
[INFO] [stdout]    |
[INFO] [stdout] 72 |                   children: Vec<Box<Traceable + Send + Sync>>) -> Box<SceneNode> {
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 72 |                   children: Vec<Box<dyn Traceable + Send + Sync>>) -> Box<SceneNode> {
[INFO] [stdout]    |                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:101:59
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub fn create_wall_from_material(size: f64, material: Box<Shadable + Send + Sync>, transform: DMat4) -> SceneNode {
[INFO] [stdout]     |                                                           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 101 | pub fn create_wall_from_material(size: f64, material: Box<dyn Shadable + Send + Sync>, transform: DMat4) -> SceneNode {
[INFO] [stdout]     |                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:128:60
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub fn create_floor_from_material(size: f64, material: Box<Shadable + Send + Sync>) -> Box<SceneNode> {
[INFO] [stdout]     |                                                            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub fn create_floor_from_material(size: f64, material: Box<dyn Shadable + Send + Sync>) -> Box<SceneNode> {
[INFO] [stdout]     |                                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:299:55
[INFO] [stdout]     |
[INFO] [stdout] 299 | pub fn subtract_shape(transform: DMat4, positive: Box<Compositable + Send + Sync>, negative: Box<Compositable + Send + Sync>) -> Bo...
[INFO] [stdout]     |                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 299 | pub fn subtract_shape(transform: DMat4, positive: Box<dyn Compositable + Send + Sync>, negative: Box<Compositable + Send + Sync>) -> Box<SubtractShape> {
[INFO] [stdout]     |                                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:299:98
[INFO] [stdout]     |
[INFO] [stdout] 299 | pub fn subtract_shape(transform: DMat4, positive: Box<Compositable + Send + Sync>, negative: Box<Compositable + Send + Sync>) -> Bo...
[INFO] [stdout]     |                                                                                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 299 | pub fn subtract_shape(transform: DMat4, positive: Box<Compositable + Send + Sync>, negative: Box<dyn Compositable + Send + Sync>) -> Box<SubtractShape> {
[INFO] [stdout]     |                                                                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:305:48
[INFO] [stdout]     |
[INFO] [stdout] 305 | pub fn or_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<OrSh...
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 305 | pub fn or_shape(transform: DMat4, primary: Box<dyn Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<OrShape> {
[INFO] [stdout]     |                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:305:92
[INFO] [stdout]     |
[INFO] [stdout] 305 | pub fn or_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<OrSh...
[INFO] [stdout]     |                                                                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 305 | pub fn or_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<dyn Compositable + Send + Sync>) -> Box<OrShape> {
[INFO] [stdout]     |                                                                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:311:49
[INFO] [stdout]     |
[INFO] [stdout] 311 | pub fn xor_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<Xor...
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 311 | pub fn xor_shape(transform: DMat4, primary: Box<dyn Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<XorShape> {
[INFO] [stdout]     |                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:311:93
[INFO] [stdout]     |
[INFO] [stdout] 311 | pub fn xor_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<Xor...
[INFO] [stdout]     |                                                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 311 | pub fn xor_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<dyn Compositable + Send + Sync>) -> Box<XorShape> {
[INFO] [stdout]     |                                                                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:317:49
[INFO] [stdout]     |
[INFO] [stdout] 317 | pub fn and_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<And...
[INFO] [stdout]     |                                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 317 | pub fn and_shape(transform: DMat4, primary: Box<dyn Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<AndShape> {
[INFO] [stdout]     |                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:317:93
[INFO] [stdout]     |
[INFO] [stdout] 317 | pub fn and_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> Box<And...
[INFO] [stdout]     |                                                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 317 | pub fn and_shape(transform: DMat4, primary: Box<Compositable + Send + Sync>, secondary: Box<dyn Compositable + Send + Sync>) -> Box<AndShape> {
[INFO] [stdout]     |                                                                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:351:52
[INFO] [stdout]     |
[INFO] [stdout] 351 | pub fn base_shape(transform: DMat4, primitive: Box<Intersectable + Send + Sync>) -> Box<BaseShape> {
[INFO] [stdout]     |                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 351 | pub fn base_shape(transform: DMat4, primitive: Box<dyn Intersectable + Send + Sync>) -> Box<BaseShape> {
[INFO] [stdout]     |                                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:24:28
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn clone(&self) -> Box<TextureMappable + Send + Sync> {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 24 |     fn clone(&self) -> Box<dyn TextureMappable + Send + Sync> {
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/normal_map.rs:29:28
[INFO] [stdout]    |
[INFO] [stdout] 29 |     fn clone(&self) -> Box<NormalMappable + Send + Sync> {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 29 |     fn clone(&self) -> Box<dyn NormalMappable + Send + Sync> {
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/scene.rs:87:44
[INFO] [stdout]    |
[INFO] [stdout] 87 |     pub fn add_light(&mut self, light: Box<Lightable + Send + Sync>) {
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 87 |     pub fn add_light(&mut self, light: Box<dyn Lightable + Send + Sync>) {
[INFO] [stdout]    |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:163:52
[INFO] [stdout]     |
[INFO] [stdout] 163 |     pub fn set_primitive(&mut self, primitive: Box<Intersectable + Send + Sync>) {
[INFO] [stdout]     |                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 163 |     pub fn set_primitive(&mut self, primitive: Box<dyn Intersectable + Send + Sync>) {
[INFO] [stdout]     |                                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/scene.rs:167:50
[INFO] [stdout]     |
[INFO] [stdout] 167 |     pub fn set_material(&mut self, material: Box<Shadable + Send + Sync>) {
[INFO] [stdout]     |                                                  ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 167 |     pub fn set_material(&mut self, material: Box<dyn Shadable + Send + Sync>) {
[INFO] [stdout]     |                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/shader/texture.rs:9:29
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub fn new(texture: Box<TextureMappable + Send + Sync>) -> Box<TextureShader> {
[INFO] [stdout]   |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub fn new(texture: Box<dyn TextureMappable + Send + Sync>) -> Box<TextureShader> {
[INFO] [stdout]   |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:57:42
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn from_shaders(shaders: Vec<Box<Shadable + Send + Sync>>) -> Box<MixShader> {
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn from_shaders(shaders: Vec<Box<dyn Shadable + Send + Sync>>) -> Box<MixShader> {
[INFO] [stdout]    |                                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:61:46
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub fn add_shader(&mut self, shader: Box<Shadable + Send + Sync>) {
[INFO] [stdout]    |                                              ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 61 |     pub fn add_shader(&mut self, shader: Box<dyn Shadable + Send + Sync>) {
[INFO] [stdout]    |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:86:59
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub fn add_shader(&mut self, weight: f64, shader: Box<Shadable + Send + Sync>) {
[INFO] [stdout]    |                                                           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub fn add_shader(&mut self, weight: f64, shader: Box<dyn Shadable + Send + Sync>) {
[INFO] [stdout]    |                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shader.rs:90:48
[INFO] [stdout]    |
[INFO] [stdout] 90 |     pub fn from_shaders(shaders: Vec<(f64, Box<Shadable + Send + Sync>)>) -> Box<CompositeShader> {
[INFO] [stdout]    |                                                ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 90 |     pub fn from_shaders(shaders: Vec<(f64, Box<dyn Shadable + Send + Sync>)>) -> Box<CompositeShader> {
[INFO] [stdout]    |                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/shader.rs:125:42
[INFO] [stdout]     |
[INFO] [stdout] 125 |     pub fn from_shaders(shaders: Vec<Box<Shadable + Send + Sync>>) -> Box<ChainShader> {
[INFO] [stdout]     |                                          ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 125 |     pub fn from_shaders(shaders: Vec<Box<dyn Shadable + Send + Sync>>) -> Box<ChainShader> {
[INFO] [stdout]     |                                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/shader.rs:129:47
[INFO] [stdout]     |
[INFO] [stdout] 129 |     pub fn push_shader(&mut self, shader: Box<Shadable + Send + Sync>) {
[INFO] [stdout]     |                                               ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 129 |     pub fn push_shader(&mut self, shader: Box<dyn Shadable + Send + Sync>) {
[INFO] [stdout]     |                                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/shader.rs:161:32
[INFO] [stdout]     |
[INFO] [stdout] 161 |     pub fn new(normal_map: Box<NormalMappable + Send + Sync>) -> Box<NormalMapShader> {
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 161 |     pub fn new(normal_map: Box<dyn NormalMappable + Send + Sync>) -> Box<NormalMapShader> {
[INFO] [stdout]     |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/primitive.rs:25:31
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn new(primitive: Box<Intersectable + Send + Sync>) -> OneWay {
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn new(primitive: Box<dyn Intersectable + Send + Sync>) -> OneWay {
[INFO] [stdout]    |                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/primitive.rs:54:31
[INFO] [stdout]    |
[INFO] [stdout] 54 |     pub fn new(primitive: Box<Intersectable + Send + Sync>) -> Inverted {
[INFO] [stdout]    |                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 54 |     pub fn new(primitive: Box<dyn Intersectable + Send + Sync>) -> Inverted {
[INFO] [stdout]    |                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/base_shape.rs:10:46
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub fn new(matrix: DMat4, primitive: Box<Intersectable + Send + Sync>) -> BaseShape {
[INFO] [stdout]    |                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub fn new(matrix: DMat4, primitive: Box<dyn Intersectable + Send + Sync>) -> BaseShape {
[INFO] [stdout]    |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/subtract_shape.rs:11:30
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(positive: Box<Compositable + Send + Sync>, negative: Box<Compositable + Send + Sync>) -> SubtractShape {
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(positive: Box<dyn Compositable + Send + Sync>, negative: Box<Compositable + Send + Sync>) -> SubtractShape {
[INFO] [stdout]    |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/subtract_shape.rs:11:73
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(positive: Box<Compositable + Send + Sync>, negative: Box<Compositable + Send + Sync>) -> SubtractShape {
[INFO] [stdout]    |                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(positive: Box<Compositable + Send + Sync>, negative: Box<dyn Compositable + Send + Sync>) -> SubtractShape {
[INFO] [stdout]    |                                                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/or_shape.rs:11:29
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> OrShape {
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<dyn Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> OrShape {
[INFO] [stdout]    |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/or_shape.rs:11:73
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> OrShape {
[INFO] [stdout]    |                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<dyn Compositable + Send + Sync>) -> OrShape {
[INFO] [stdout]    |                                                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/xor_shape.rs:11:29
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> XorShape {
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<dyn Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> XorShape {
[INFO] [stdout]    |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/xor_shape.rs:11:73
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> XorShape {
[INFO] [stdout]    |                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<dyn Compositable + Send + Sync>) -> XorShape {
[INFO] [stdout]    |                                                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/and_shape.rs:11:29
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> AndShape {
[INFO] [stdout]    |                             ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<dyn Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> AndShape {
[INFO] [stdout]    |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/and_shape.rs:11:73
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<Compositable + Send + Sync>) -> AndShape {
[INFO] [stdout]    |                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(primary: Box<Compositable + Send + Sync>, secondary: Box<dyn Compositable + Send + Sync>) -> AndShape {
[INFO] [stdout]    |                                                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/composite_shape/and_shape.rs:74:37
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub fn from_vec(shapes: Vec<Box<Compositable + Send + Sync>>) -> MultiAndShape {
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub fn from_vec(shapes: Vec<Box<dyn Compositable + Send + Sync>>) -> MultiAndShape {
[INFO] [stdout]    |                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:325:26
[INFO] [stdout]     |
[INFO] [stdout] 325 |     let spheres: Vec<Box<Compositable + Send + Sync>> = vec!(
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 325 |     let spheres: Vec<Box<dyn Compositable + Send + Sync>> = vec!(
[INFO] [stdout]     |                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/scene.rs:241:25
[INFO] [stdout]     |
[INFO] [stdout] 241 |             if let Some(mut child_node_intersect) = child.partial_trace_until_distance(ray, max_distance) {
[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: `scene`
[INFO] [stdout]    --> src/shader.rs:170:25
[INFO] [stdout]     |
[INFO] [stdout] 170 |     fn get_color(&self, scene: &Scene, intersect: Intersect) -> Color {
[INFO] [stdout]     |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_scene`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scene`
[INFO] [stdout]    --> src/shader.rs:175:32
[INFO] [stdout]     |
[INFO] [stdout] 175 |     fn modify_intersect(&self, scene: &Scene, intersect: Intersect) -> Intersect {
[INFO] [stdout]     |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_scene`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `acc`
[INFO] [stdout]    --> src/primitive/plane.rs:219:47
[INFO] [stdout]     |
[INFO] [stdout] 219 | ...                   .try_fold(true, |acc, x| 
[INFO] [stdout]     |                                        ^^^ help: if this is intentional, prefix it with an underscore: `_acc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `depth`
[INFO] [stdout]    --> src/light.rs:189:56
[INFO] [stdout]     |
[INFO] [stdout] 189 |     fn subdivide_points(&self, min: DVec2, max: DVec2, depth: usize) -> Vec<DVec3> {
[INFO] [stdout]     |                                                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_depth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/util.rs:325:26
[INFO] [stdout]     |
[INFO] [stdout] 325 |     let spheres: Vec<Box<Compositable + Send + Sync>> = vec!(
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 325 |     let spheres: Vec<Box<dyn Compositable + Send + Sync>> = vec!(
[INFO] [stdout]     |                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/light.rs:306:13
[INFO] [stdout]     |
[INFO] [stdout] 306 |         for i in 0..num_rays {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `surface_dot`
[INFO] [stdout]    --> src/light.rs:346:31
[INFO] [stdout]     |
[INFO] [stdout] 346 |             if let Illum::Lit{surface_dot, light_direction, ref mut intensity} = x {
[INFO] [stdout]     |                               ^^^^^^^^^^^ help: try ignoring the field: `surface_dot: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `light_direction`
[INFO] [stdout]    --> src/light.rs:346:44
[INFO] [stdout]     |
[INFO] [stdout] 346 |             if let Illum::Lit{surface_dot, light_direction, ref mut intensity} = x {
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^^^ help: try ignoring the field: `light_direction: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `depth`
[INFO] [stdout]    --> src/light.rs:335:13
[INFO] [stdout]     |
[INFO] [stdout] 335 |         for depth in 0..SquareLight::PROG_DEPTH {
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_depth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/light.rs:359:13
[INFO] [stdout]     |
[INFO] [stdout] 359 |         for i in 0..SquareLight::SAMPLE_RATE {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `x` is never read
[INFO] [stdout]    --> src/render.rs:316:17
[INFO] [stdout]     |
[INFO] [stdout] 316 |     let mut x = 0;
[INFO] [stdout]     |                 ^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 326 |                         x = num;
[INFO] [stdout]     |                         ------- `x` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `y` is never read
[INFO] [stdout]    --> src/render.rs:317:17
[INFO] [stdout]     |
[INFO] [stdout] 317 |     let mut y = 0;
[INFO] [stdout]     |                 ^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 342 |                         y = num;
[INFO] [stdout]     |                         ------- `y` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/scene.rs:241:25
[INFO] [stdout]     |
[INFO] [stdout] 241 |             if let Some(mut child_node_intersect) = child.partial_trace_until_distance(ray, max_distance) {
[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: variable does not need to be mutable
[INFO] [stdout]   --> src/composite_shape.rs:92:13
[INFO] [stdout]    |
[INFO] [stdout] 92 |         let mut intersects: Vec<(usize, Hit, Intersect)> = shape_sects.into_iter().map(|x| (i, hit_direction(x), x)).collect();
[INFO] [stdout]    |             ----^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max_err`
[INFO] [stdout]   --> src/mesh.rs:41:13
[INFO] [stdout]    |
[INFO] [stdout] 41 |         let max_err = max - err;
[INFO] [stdout]    |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scene`
[INFO] [stdout]    --> src/shader.rs:170:25
[INFO] [stdout]     |
[INFO] [stdout] 170 |     fn get_color(&self, scene: &Scene, intersect: Intersect) -> Color {
[INFO] [stdout]     |                         ^^^^^ help: if this is intentional, prefix it with an underscore: `_scene`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `min_err`
[INFO] [stdout]   --> src/mesh.rs:42:13
[INFO] [stdout]    |
[INFO] [stdout] 42 |         let min_err = min + err;
[INFO] [stdout]    |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_min_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scene`
[INFO] [stdout]    --> src/shader.rs:175:32
[INFO] [stdout]     |
[INFO] [stdout] 175 |     fn modify_intersect(&self, scene: &Scene, intersect: Intersect) -> Intersect {
[INFO] [stdout]     |                                ^^^^^ help: if this is intentional, prefix it with an underscore: `_scene`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `prim_overlap` is assigned to, but never used
[INFO] [stdout]    --> src/mesh.rs:306:17
[INFO] [stdout]     |
[INFO] [stdout] 306 |             let mut prim_overlap = 0;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_prim_overlap` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `prim_overlap` is never read
[INFO] [stdout]    --> src/mesh.rs:311:21
[INFO] [stdout]     |
[INFO] [stdout] 311 |                     prim_overlap+=1;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `materials`
[INFO] [stdout]    --> src/mesh.rs:384:22
[INFO] [stdout]     |
[INFO] [stdout] 384 |         let (models, materials) = tobj::load_obj(path).unwrap();
[INFO] [stdout]     |                      ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_materials`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `acc`
[INFO] [stdout]    --> src/primitive/plane.rs:219:47
[INFO] [stdout]     |
[INFO] [stdout] 219 | ...                   .try_fold(true, |acc, x| 
[INFO] [stdout]     |                                        ^^^ help: if this is intentional, prefix it with an underscore: `_acc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/mesh.rs:436:17
[INFO] [stdout]     |
[INFO] [stdout] 436 |             let mut v = e1.cross(hit_v1);
[INFO] [stdout]     |                 ----^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/mesh.rs:439:17
[INFO] [stdout]     |
[INFO] [stdout] 439 |             let mut w = e2.cross(hit_v2);
[INFO] [stdout]     |                 ----^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/mesh.rs:442:17
[INFO] [stdout]     |
[INFO] [stdout] 442 |             let mut u = e3.cross(hit_v3);
[INFO] [stdout]     |                 ----^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Hit` is never used
[INFO] [stdout]   --> src/shader/phong.rs:18:6
[INFO] [stdout]    |
[INFO] [stdout] 18 | enum Hit {
[INFO] [stdout]    |      ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `total_light_blocked` is never used
[INFO] [stdout]   --> src/shader/phong.rs:23:4
[INFO] [stdout]    |
[INFO] [stdout] 23 | fn total_light_blocked(opacity: Color, enter: f64, exit: f64) -> Color {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `AMBIENT_PORTION` is never used
[INFO] [stdout]   --> src/light.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const AMBIENT_PORTION : f64 = 0.01;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `trace_sample_rays`, `START_SAMPLE`, `PROG_DEPTH`, `PROG_THRESH`, and `progressive_random_illumination` are never used
[INFO] [stdout]    --> src/light.rs:300:8
[INFO] [stdout]     |
[INFO] [stdout] 172 | impl SquareLight {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 300 |     fn trace_sample_rays(&self, scene: &Scene, intersect: &Intersect, num_rays: usize) -> (usize, Vec<Illum>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 327 |     const START_SAMPLE: usize = 32;
[INFO] [stdout]     |           ^^^^^^^^^^^^
[INFO] [stdout] 328 |     const PROG_DEPTH: usize = 4;
[INFO] [stdout]     |           ^^^^^^^^^^
[INFO] [stdout] 329 |     const PROG_THRESH: f64 = 0.05;
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 330 |
[INFO] [stdout] 331 |     fn progressive_random_illumination(&self, scene: &Scene, intersect: &Intersect) -> Vec<Illum> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `id` is never read
[INFO] [stdout]   --> src/multithread.rs:71:5
[INFO] [stdout]    |
[INFO] [stdout] 70 | struct Worker {
[INFO] [stdout]    |        ------ field in this struct
[INFO] [stdout] 71 |     id: usize,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `image_dimension` is never read
[INFO] [stdout]  --> src/progress_tracker.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct ProgressTracker {
[INFO] [stdout]   |            --------------- field in this struct
[INFO] [stdout] 7 |     image_dimension: ImageDimension,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `bound_nothing`, `expand`, and `from_positions` are never used
[INFO] [stdout]   --> src/mesh.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl BoundingBox {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 21 |     pub fn bound_nothing() -> BoundingBox {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn expand(&mut self, vertices: &Vec<DVec3>) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn from_positions(positions: Vec<f32>) -> BoundingBox {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Face` is never constructed
[INFO] [stdout]    --> src/mesh.rs:336:8
[INFO] [stdout]     |
[INFO] [stdout] 336 | struct Face {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/scene.rs:117:14
[INFO] [stdout]     |
[INFO] [stdout] 117 |     fn trace(&self, ray: Ray) -> Option<NodeIntersect>;
[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] 117 |     fn trace(&self, ray: Ray) -> Option<NodeIntersect<'_>>;
[INFO] [stdout]     |                                                      ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/scene.rs:118:37
[INFO] [stdout]     |
[INFO] [stdout] 118 |     fn partial_trace_until_distance(&self, ray: Ray, max_distance: f64) -> Option<NodeIntersect>;
[INFO] [stdout]     |                                     ^^^^^ the lifetime is elided here             ^^^^^^^^^^^^^ the same lifetime is hidden 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] 118 |     fn partial_trace_until_distance(&self, ray: Ray, max_distance: f64) -> Option<NodeIntersect<'_>>;
[INFO] [stdout]     |                                                                                                ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/scene.rs:119:35
[INFO] [stdout]     |
[INFO] [stdout] 119 |     fn total_trace_until_distance(&self, ray: Ray, max_distance: f64) -> Vec<NodeIntersect>;
[INFO] [stdout]     |                                   ^^^^^ the lifetime is elided here          ^^^^^^^^^^^^^ the same lifetime is hidden 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] 119 |     fn total_trace_until_distance(&self, ray: Ray, max_distance: f64) -> Vec<NodeIntersect<'_>>;
[INFO] [stdout]     |                                                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `depth`
[INFO] [stdout]    --> src/light.rs:189:56
[INFO] [stdout]     |
[INFO] [stdout] 189 |     fn subdivide_points(&self, min: DVec2, max: DVec2, depth: usize) -> Vec<DVec3> {
[INFO] [stdout]     |                                                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_depth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/scene.rs:196:14
[INFO] [stdout]     |
[INFO] [stdout] 196 |     fn trace(&self, ray: Ray) -> Option<NodeIntersect> {
[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] 196 |     fn trace(&self, ray: Ray) -> Option<NodeIntersect<'_>> {
[INFO] [stdout]     |                                                      ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/scene.rs:227:37
[INFO] [stdout]     |
[INFO] [stdout] 227 |     fn partial_trace_until_distance(&self, ray: Ray, max_distance: f64) -> Option<NodeIntersect> {
[INFO] [stdout]     |                                     ^^^^^ the lifetime is elided here             ^^^^^^^^^^^^^ the same lifetime is hidden 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] 227 |     fn partial_trace_until_distance(&self, ray: Ray, max_distance: f64) -> Option<NodeIntersect<'_>> {
[INFO] [stdout]     |                                                                                                ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/scene.rs:250:35
[INFO] [stdout]     |
[INFO] [stdout] 250 |     fn total_trace_until_distance(&self, ray: Ray, max_distance: f64) -> Vec<NodeIntersect> {
[INFO] [stdout]     |                                   ^^^^^ the lifetime is elided here          ^^^^^^^^^^^^^ the same lifetime is hidden 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] 250 |     fn total_trace_until_distance(&self, ray: Ray, max_distance: f64) -> Vec<NodeIntersect<'_>> {
[INFO] [stdout]     |                                                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant `texture_offsets` should have an upper case name
[INFO] [stdout]   --> src/primitive/cube.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 |     const texture_offsets: [(f64, f64); 6] = [(2.0, 1.0), (0.0, 1.0), (1.0, 1.0), (3.0, 1.0), (1.0, 2.0), (1.0, 0.0)];
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `TEXTURE_OFFSETS`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_upper_case_globals)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/light.rs:306:13
[INFO] [stdout]     |
[INFO] [stdout] 306 |         for i in 0..num_rays {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `A` should have a snake case name
[INFO] [stdout]   --> src/composite_shape.rs:33:10
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn merge(A: Vec<(usize, Hit, Intersect)>, B: Vec<(usize, Hit, Intersect)>) -> Vec<(usize, Hit, Intersect)> {
[INFO] [stdout]    |          ^ help: convert the identifier to snake case: `a`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `B` should have a snake case name
[INFO] [stdout]   --> src/composite_shape.rs:33:43
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn merge(A: Vec<(usize, Hit, Intersect)>, B: Vec<(usize, Hit, Intersect)>) -> Vec<(usize, Hit, Intersect)> {
[INFO] [stdout]    |                                           ^ help: convert the identifier to snake case: `b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `surface_dot`
[INFO] [stdout]    --> src/light.rs:346:31
[INFO] [stdout]     |
[INFO] [stdout] 346 |             if let Illum::Lit{surface_dot, light_direction, ref mut intensity} = x {
[INFO] [stdout]     |                               ^^^^^^^^^^^ help: try ignoring the field: `surface_dot: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `light_direction`
[INFO] [stdout]    --> src/light.rs:346:44
[INFO] [stdout]     |
[INFO] [stdout] 346 |             if let Illum::Lit{surface_dot, light_direction, ref mut intensity} = x {
[INFO] [stdout]     |                                            ^^^^^^^^^^^^^^^ help: try ignoring the field: `light_direction: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `depth`
[INFO] [stdout]    --> src/light.rs:335:13
[INFO] [stdout]     |
[INFO] [stdout] 335 |         for depth in 0..SquareLight::PROG_DEPTH {
[INFO] [stdout]     |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_depth`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/light.rs:359:13
[INFO] [stdout]     |
[INFO] [stdout] 359 |         for i in 0..SquareLight::SAMPLE_RATE {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `x` is never read
[INFO] [stdout]    --> src/render.rs:316:17
[INFO] [stdout]     |
[INFO] [stdout] 316 |     let mut x = 0;
[INFO] [stdout]     |                 ^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 326 |                         x = num;
[INFO] [stdout]     |                         ------- `x` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `y` is never read
[INFO] [stdout]    --> src/render.rs:317:17
[INFO] [stdout]     |
[INFO] [stdout] 317 |     let mut y = 0;
[INFO] [stdout]     |                 ^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 342 |                         y = num;
[INFO] [stdout]     |                         ------- `y` is overwritten here before the previous value is read
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/composite_shape.rs:92:13
[INFO] [stdout]    |
[INFO] [stdout] 92 |         let mut intersects: Vec<(usize, Hit, Intersect)> = shape_sects.into_iter().map(|x| (i, hit_direction(x), x)).collect();
[INFO] [stdout]    |             ----^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `max_err`
[INFO] [stdout]   --> src/mesh.rs:41:13
[INFO] [stdout]    |
[INFO] [stdout] 41 |         let max_err = max - err;
[INFO] [stdout]    |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_max_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `min_err`
[INFO] [stdout]   --> src/mesh.rs:42:13
[INFO] [stdout]    |
[INFO] [stdout] 42 |         let min_err = min + err;
[INFO] [stdout]    |             ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_min_err`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `prim_overlap` is assigned to, but never used
[INFO] [stdout]    --> src/mesh.rs:306:17
[INFO] [stdout]     |
[INFO] [stdout] 306 |             let mut prim_overlap = 0;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: consider using `_prim_overlap` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `prim_overlap` is never read
[INFO] [stdout]    --> src/mesh.rs:311:21
[INFO] [stdout]     |
[INFO] [stdout] 311 |                     prim_overlap+=1;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `materials`
[INFO] [stdout]    --> src/mesh.rs:384:22
[INFO] [stdout]     |
[INFO] [stdout] 384 |         let (models, materials) = tobj::load_obj(path).unwrap();
[INFO] [stdout]     |                      ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_materials`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/mesh.rs:436:17
[INFO] [stdout]     |
[INFO] [stdout] 436 |             let mut v = e1.cross(hit_v1);
[INFO] [stdout]     |                 ----^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/mesh.rs:439:17
[INFO] [stdout]     |
[INFO] [stdout] 439 |             let mut w = e2.cross(hit_v2);
[INFO] [stdout]     |                 ----^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/mesh.rs:442:17
[INFO] [stdout]     |
[INFO] [stdout] 442 |             let mut u = e3.cross(hit_v3);
[INFO] [stdout]     |                 ----^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Hit` is never used
[INFO] [stdout]   --> src/shader/phong.rs:18:6
[INFO] [stdout]    |
[INFO] [stdout] 18 | enum Hit {
[INFO] [stdout]    |      ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `total_light_blocked` is never used
[INFO] [stdout]   --> src/shader/phong.rs:23:4
[INFO] [stdout]    |
[INFO] [stdout] 23 | fn total_light_blocked(opacity: Color, enter: f64, exit: f64) -> Color {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `AMBIENT_PORTION` is never used
[INFO] [stdout]   --> src/light.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const AMBIENT_PORTION : f64 = 0.01;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `trace_sample_rays`, `START_SAMPLE`, `PROG_DEPTH`, `PROG_THRESH`, and `progressive_random_illumination` are never used
[INFO] [stdout]    --> src/light.rs:300:8
[INFO] [stdout]     |
[INFO] [stdout] 172 | impl SquareLight {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 300 |     fn trace_sample_rays(&self, scene: &Scene, intersect: &Intersect, num_rays: usize) -> (usize, Vec<Illum>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 327 |     const START_SAMPLE: usize = 32;
[INFO] [stdout]     |           ^^^^^^^^^^^^
[INFO] [stdout] 328 |     const PROG_DEPTH: usize = 4;
[INFO] [stdout]     |           ^^^^^^^^^^
[INFO] [stdout] 329 |     const PROG_THRESH: f64 = 0.05;
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 330 |
[INFO] [stdout] 331 |     fn progressive_random_illumination(&self, scene: &Scene, intersect: &Intersect) -> Vec<Illum> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `id` is never read
[INFO] [stdout]   --> src/multithread.rs:71:5
[INFO] [stdout]    |
[INFO] [stdout] 70 | struct Worker {
[INFO] [stdout]    |        ------ field in this struct
[INFO] [stdout] 71 |     id: usize,
[INFO] [stdout]    |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `image_dimension` is never read
[INFO] [stdout]  --> src/progress_tracker.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct ProgressTracker {
[INFO] [stdout]   |            --------------- field in this struct
[INFO] [stdout] 7 |     image_dimension: ImageDimension,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `bound_nothing`, `expand`, and `from_positions` are never used
[INFO] [stdout]   --> src/mesh.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl BoundingBox {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 21 |     pub fn bound_nothing() -> BoundingBox {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 25 |     pub fn expand(&mut self, vertices: &Vec<DVec3>) {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn from_positions(positions: Vec<f32>) -> BoundingBox {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Face` is never constructed
[INFO] [stdout]    --> src/mesh.rs:336:8
[INFO] [stdout]     |
[INFO] [stdout] 336 | struct Face {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/scene.rs:117:14
[INFO] [stdout]     |
[INFO] [stdout] 117 |     fn trace(&self, ray: Ray) -> Option<NodeIntersect>;
[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] 117 |     fn trace(&self, ray: Ray) -> Option<NodeIntersect<'_>>;
[INFO] [stdout]     |                                                      ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/scene.rs:118:37
[INFO] [stdout]     |
[INFO] [stdout] 118 |     fn partial_trace_until_distance(&self, ray: Ray, max_distance: f64) -> Option<NodeIntersect>;
[INFO] [stdout]     |                                     ^^^^^ the lifetime is elided here             ^^^^^^^^^^^^^ the same lifetime is hidden 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] 118 |     fn partial_trace_until_distance(&self, ray: Ray, max_distance: f64) -> Option<NodeIntersect<'_>>;
[INFO] [stdout]     |                                                                                                ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/scene.rs:119:35
[INFO] [stdout]     |
[INFO] [stdout] 119 |     fn total_trace_until_distance(&self, ray: Ray, max_distance: f64) -> Vec<NodeIntersect>;
[INFO] [stdout]     |                                   ^^^^^ the lifetime is elided here          ^^^^^^^^^^^^^ the same lifetime is hidden 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] 119 |     fn total_trace_until_distance(&self, ray: Ray, max_distance: f64) -> Vec<NodeIntersect<'_>>;
[INFO] [stdout]     |                                                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/scene.rs:196:14
[INFO] [stdout]     |
[INFO] [stdout] 196 |     fn trace(&self, ray: Ray) -> Option<NodeIntersect> {
[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] 196 |     fn trace(&self, ray: Ray) -> Option<NodeIntersect<'_>> {
[INFO] [stdout]     |                                                      ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/scene.rs:227:37
[INFO] [stdout]     |
[INFO] [stdout] 227 |     fn partial_trace_until_distance(&self, ray: Ray, max_distance: f64) -> Option<NodeIntersect> {
[INFO] [stdout]     |                                     ^^^^^ the lifetime is elided here             ^^^^^^^^^^^^^ the same lifetime is hidden 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] 227 |     fn partial_trace_until_distance(&self, ray: Ray, max_distance: f64) -> Option<NodeIntersect<'_>> {
[INFO] [stdout]     |                                                                                                ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/scene.rs:250:35
[INFO] [stdout]     |
[INFO] [stdout] 250 |     fn total_trace_until_distance(&self, ray: Ray, max_distance: f64) -> Vec<NodeIntersect> {
[INFO] [stdout]     |                                   ^^^^^ the lifetime is elided here          ^^^^^^^^^^^^^ the same lifetime is hidden 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] 250 |     fn total_trace_until_distance(&self, ray: Ray, max_distance: f64) -> Vec<NodeIntersect<'_>> {
[INFO] [stdout]     |                                                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated constant `texture_offsets` should have an upper case name
[INFO] [stdout]   --> src/primitive/cube.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout] 12 |     const texture_offsets: [(f64, f64); 6] = [(2.0, 1.0), (0.0, 1.0), (1.0, 1.0), (3.0, 1.0), (1.0, 2.0), (1.0, 0.0)];
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^ help: convert the identifier to upper case: `TEXTURE_OFFSETS`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_upper_case_globals)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `A` should have a snake case name
[INFO] [stdout]   --> src/composite_shape.rs:33:10
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn merge(A: Vec<(usize, Hit, Intersect)>, B: Vec<(usize, Hit, Intersect)>) -> Vec<(usize, Hit, Intersect)> {
[INFO] [stdout]    |          ^ help: convert the identifier to snake case: `a`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `B` should have a snake case name
[INFO] [stdout]   --> src/composite_shape.rs:33:43
[INFO] [stdout]    |
[INFO] [stdout] 33 | fn merge(A: Vec<(usize, Hit, Intersect)>, B: Vec<(usize, Hit, Intersect)>) -> Vec<(usize, Hit, Intersect)> {
[INFO] [stdout]    |                                           ^ help: convert the identifier to snake case: `b`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `raytracer::matrix::*`
[INFO] [stdout]  --> tests/anti_alias_test.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use raytracer::matrix::*;
[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: `raytracer::matrix::*`
[INFO] [stdout]  --> tests/composite_shape_test.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use raytracer::matrix::*;
[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: `raytracer::matrix::*`
[INFO] [stdout]  --> tests/dice_scene.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use raytracer::matrix::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `light3` is never used
[INFO] [stdout]   --> tests/normal_map_test.rs:16:4
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn light3() -> Box<PointLight> {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `light4` is never used
[INFO] [stdout]   --> tests/normal_map_test.rs:20:4
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn light4() -> Box<PointLight> {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `double_subracted_sphere` is never used
[INFO] [stdout]    --> tests/composite_shape_test.rs:128:4
[INFO] [stdout]     |
[INFO] [stdout] 128 | fn double_subracted_sphere(size: f64) -> Box<SubtractShape> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_camera` is never used
[INFO] [stdout]   --> tests/dice_scene.rs:89:4
[INFO] [stdout]    |
[INFO] [stdout] 89 | fn make_camera() -> CameraConfig {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> tests/transparency_test.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> tests/bump_map_test.rs:16:55
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn test_bump_shader(color: Color, normal_map: Box<NormalMappable + Send + Sync>) -> Box<ChainShader> {
[INFO] [stdout]    |                                                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn test_bump_shader(color: Color, normal_map: Box<dyn NormalMappable + Send + Sync>) -> Box<ChainShader> {
[INFO] [stdout]    |                                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> tests/square_light_test.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::path::Path;
[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: `raytracer::matrix::*`
[INFO] [stdout]  --> tests/scene_test.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use raytracer::matrix::*;
[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: `std::path::Path`
[INFO] [stdout]  --> tests/texture_test.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `light1` is never used
[INFO] [stdout]  --> src/main.rs:9:4
[INFO] [stdout]   |
[INFO] [stdout] 9 | fn light1() -> Box<PointLight> {
[INFO] [stdout]   |    ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `light2` is never used
[INFO] [stdout]   --> src/main.rs:13:4
[INFO] [stdout]    |
[INFO] [stdout] 13 | fn light2() -> Box<PointLight> {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `light4` is never used
[INFO] [stdout]   --> src/main.rs:21:4
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn light4() -> Box<PointLight> {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `front_light` is never used
[INFO] [stdout]   --> src/main.rs:25:4
[INFO] [stdout]    |
[INFO] [stdout] 25 | fn front_light() -> Box<PointLight> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `square_light` is never used
[INFO] [stdout]   --> src/main.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn square_light(pos: DVec3, size: f64) -> Box<SquareLight> {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `light1` is never used
[INFO] [stdout]  --> src/main.rs:9:4
[INFO] [stdout]   |
[INFO] [stdout] 9 | fn light1() -> Box<PointLight> {
[INFO] [stdout]   |    ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `light2` is never used
[INFO] [stdout]   --> src/main.rs:13:4
[INFO] [stdout]    |
[INFO] [stdout] 13 | fn light2() -> Box<PointLight> {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `light4` is never used
[INFO] [stdout]   --> src/main.rs:21:4
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn light4() -> Box<PointLight> {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `front_light` is never used
[INFO] [stdout]   --> src/main.rs:25:4
[INFO] [stdout]    |
[INFO] [stdout] 25 | fn front_light() -> Box<PointLight> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `square_light` is never used
[INFO] [stdout]   --> src/main.rs:29:4
[INFO] [stdout]    |
[INFO] [stdout] 29 | fn square_light(pos: DVec3, size: f64) -> Box<SquareLight> {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `raytracer::matrix::*`
[INFO] [stdout]  --> tests/basic_test.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use raytracer::matrix::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `front_light` is never used
[INFO] [stdout]   --> tests/mesh_test.rs:25:4
[INFO] [stdout]    |
[INFO] [stdout] 25 | fn front_light() -> Box<PointLight> {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `light4` is never used
[INFO] [stdout]   --> tests/polyhedra_test.rs:20:4
[INFO] [stdout]    |
[INFO] [stdout] 20 | fn light4() -> Box<PointLight> {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `light1` is never used
[INFO] [stdout]   --> tests/square_light_test.rs:13:4
[INFO] [stdout]    |
[INFO] [stdout] 13 | fn light1() -> Box<PointLight> {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `light3` is never used
[INFO] [stdout]   --> tests/square_light_test.rs:21:4
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn light3() -> Box<PointLight> {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `light4` is never used
[INFO] [stdout]   --> tests/square_light_test.rs:25:4
[INFO] [stdout]    |
[INFO] [stdout] 25 | fn light4() -> Box<PointLight> {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 12.41s
[INFO] running `Command { std: "docker" "inspect" "4add6afd4adb6bb22c9d460106bda952f2b3c1187b6cf26855d0d6b19f6c052e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4add6afd4adb6bb22c9d460106bda952f2b3c1187b6cf26855d0d6b19f6c052e", kill_on_drop: false }`
[INFO] [stdout] 4add6afd4adb6bb22c9d460106bda952f2b3c1187b6cf26855d0d6b19f6c052e
