[INFO] cloning repository https://github.com/ehuss/raytracer
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ehuss/raytracer" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fehuss%2Fraytracer", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fehuss%2Fraytracer'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 9a88a081dab342da88ba7829283f2a28e14c6274
[INFO] checking ehuss/raytracer/9a88a081dab342da88ba7829283f2a28e14c6274 against master#4068bafedd8ba724e332a5221c06a6fa531a30d2 for pr-146978
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fehuss%2Fraytracer" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/ehuss/raytracer
[INFO] finished tweaking git repo https://github.com/ehuss/raytracer
[INFO] tweaked toml for git repo https://github.com/ehuss/raytracer written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/ehuss/raytracer on toolchain 4068bafedd8ba724e332a5221c06a6fa531a30d2
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+4068bafedd8ba724e332a5221c06a6fa531a30d2" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/ehuss/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" "+4068bafedd8ba724e332a5221c06a6fa531a30d2" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded time v0.1.36
[INFO] [stderr]   Downloaded num-traits v0.1.36
[INFO] [stderr]   Downloaded quote v0.2.3
[INFO] [stderr]   Downloaded redox_syscall v0.1.16
[INFO] [stderr]   Downloaded adler32 v0.3.0
[INFO] [stderr]   Downloaded user32-sys v0.1.2
[INFO] [stderr]   Downloaded ansi_term v0.9.0
[INFO] [stderr]   Downloaded vec_map v0.6.0
[INFO] [stderr]   Downloaded term_size v0.2.2
[INFO] [stderr]   Downloaded num-iter v0.1.32
[INFO] [stderr]   Downloaded derive-new v0.4.0
[INFO] [stderr]   Downloaded num_cpus v1.2.1
[INFO] [stderr]   Downloaded syn v0.8.7
[INFO] [stderr]   Downloaded color_quant v1.0.0
[INFO] [stderr]   Downloaded x11-dl v2.2.1
[INFO] [stderr]   Downloaded gif v0.9.0
[INFO] [stderr]   Downloaded rayon v0.6.0
[INFO] [stderr]   Downloaded jpeg-decoder v0.1.11
[INFO] [stderr]   Downloaded unicode-segmentation v1.1.0
[INFO] [stderr]   Downloaded deflate v0.7.4
[INFO] [stderr]   Downloaded image v0.12.3
[INFO] [stderr]   Downloaded clap v2.20.5
[INFO] [stderr]   Downloaded libc v0.2.20
[INFO] [stderr]   Downloaded png v0.6.2
[INFO] [stderr]   Downloaded kernel32-sys v0.1.4
[INFO] [stderr]   Downloaded minifb v0.9.0
[INFO] [stderr]   Downloaded gcc v0.3.43
[INFO] [stderr]   Downloaded num-rational v0.1.35
[INFO] [stderr]   Downloaded gdi32-sys v0.1.1
[INFO] [stderr]   Downloaded deque v0.3.1
[INFO] [stderr]   Downloaded num-integer v0.1.32
[INFO] [stderr]   Downloaded dylib v0.0.1
[INFO] [stderr]   Downloaded libc v0.1.12
[INFO] [stderr]   Downloaded scoped_threadpool v0.1.7
[INFO] [stderr]   Downloaded inflate v0.1.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+4068bafedd8ba724e332a5221c06a6fa531a30d2" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 829467f099946f24403185c41b09b073b674ed5142be7dd1ce14a2c96633dad6
[INFO] running `Command { std: "docker" "start" "-a" "829467f099946f24403185c41b09b073b674ed5142be7dd1ce14a2c96633dad6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "829467f099946f24403185c41b09b073b674ed5142be7dd1ce14a2c96633dad6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "829467f099946f24403185c41b09b073b674ed5142be7dd1ce14a2c96633dad6", kill_on_drop: false }`
[INFO] [stdout] 829467f099946f24403185c41b09b073b674ed5142be7dd1ce14a2c96633dad6
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+4068bafedd8ba724e332a5221c06a6fa531a30d2" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 3b68376b61f077a65beddc1c973945815d2c0d12d642ad1eb272e93298b5fa89
[INFO] running `Command { std: "docker" "start" "-a" "3b68376b61f077a65beddc1c973945815d2c0d12d642ad1eb272e93298b5fa89", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]     Checking libc v0.2.20
[INFO] [stderr]     Checking num-traits v0.1.36
[INFO] [stderr]     Checking byteorder v1.0.0
[INFO] [stderr]    Compiling gcc v0.3.43
[INFO] [stderr]     Checking bitflags v0.7.0
[INFO] [stderr]     Checking adler32 v0.3.0
[INFO] [stderr]    Compiling quote v0.2.3
[INFO] [stderr]    Compiling unicode-xid v0.0.3
[INFO] [stderr]     Checking libc v0.1.12
[INFO] [stderr]     Checking color_quant v1.0.0
[INFO] [stderr]     Checking inflate v0.1.1
[INFO] [stderr]     Checking lzw v0.10.0
[INFO] [stderr]    Compiling syn v0.8.7
[INFO] [stderr]     Checking rand v0.3.15
[INFO] [stderr]     Checking num_cpus v1.2.1
[INFO] [stderr]     Checking deflate v0.7.4
[INFO] [stderr]     Checking dylib v0.0.1
[INFO] [stderr]     Checking gif v0.9.0
[INFO] [stderr]     Checking x11-dl v2.2.1
[INFO] [stderr]     Checking time v0.1.36
[INFO] [stderr]     Checking num-integer v0.1.32
[INFO] [stderr]     Checking enum_primitive v0.1.1
[INFO] [stderr]     Checking term_size v0.2.2
[INFO] [stderr]     Checking scoped_threadpool v0.1.7
[INFO] [stderr]    Compiling minifb v0.9.0
[INFO] [stderr]     Checking num-iter v0.1.32
[INFO] [stderr]     Checking num-rational v0.1.35
[INFO] [stderr]     Checking strsim v0.6.0
[INFO] [stderr]     Checking unicode-width v0.1.4
[INFO] [stderr]     Checking deque v0.3.1
[INFO] [stderr]     Checking png v0.6.2
[INFO] [stderr]     Checking unicode-segmentation v1.1.0
[INFO] [stderr]     Checking ansi_term v0.9.0
[INFO] [stderr]     Checking vec_map v0.6.0
[INFO] [stderr]     Checking rayon v0.6.0
[INFO] [stderr]     Checking clap v2.20.5
[INFO] [stderr]    Compiling derive-new v0.4.0
[INFO] [stderr]     Checking jpeg-decoder v0.1.11
[INFO] [stderr]     Checking image v0.12.3
[INFO] [stderr]     Checking raytracer v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/vec3.rs:260:15
[INFO] [stdout]     |
[INFO] [stdout] 260 |     Vec3::new((v1.y * v2.z - v1.z * v2.y),
[INFO] [stdout]     |               ^                         ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 260 -     Vec3::new((v1.y * v2.z - v1.z * v2.y),
[INFO] [stdout] 260 +     Vec3::new(v1.y * v2.z - v1.z * v2.y ,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/vec3.rs:261:15
[INFO] [stdout]     |
[INFO] [stdout] 261 |               (-(v1.x * v2.z - v1.z * v2.x)),
[INFO] [stdout]     |               ^                            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 261 -               (-(v1.x * v2.z - v1.z * v2.x)),
[INFO] [stdout] 261 +               -(v1.x * v2.z - v1.z * v2.x) ,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/vec3.rs:262:15
[INFO] [stdout]     |
[INFO] [stdout] 262 |               (v1.x * v2.y - v1.y * v2.x))
[INFO] [stdout]     |               ^                         ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 262 -               (v1.x * v2.y - v1.y * v2.x))
[INFO] [stdout] 262 +               v1.x * v2.y - v1.y * v2.x )
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]   --> src/material.rs:88:26
[INFO] [stdout]    |
[INFO] [stdout] 88 |                -> Option<(ScatterRecord)> {
[INFO] [stdout]    |                          ^             ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 88 -                -> Option<(ScatterRecord)> {
[INFO] [stdout] 88 +                -> Option<ScatterRecord > {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]    --> src/material.rs:142:26
[INFO] [stdout]     |
[INFO] [stdout] 142 |                -> Option<(ScatterRecord)> {
[INFO] [stdout]     |                          ^             ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 142 -                -> Option<(ScatterRecord)> {
[INFO] [stdout] 142 +                -> Option<ScatterRecord > {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]    --> src/material.rs:170:26
[INFO] [stdout]     |
[INFO] [stdout] 170 |                -> Option<(ScatterRecord)> {
[INFO] [stdout]     |                          ^             ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 170 -                -> Option<(ScatterRecord)> {
[INFO] [stdout] 170 +                -> Option<ScatterRecord > {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused macro definition: `perrln`
[INFO] [stdout]   --> src/lib.rs:56:14
[INFO] [stdout]    |
[INFO] [stdout] 56 | macro_rules! perrln {
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_macros)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred
[INFO] [stdout]   --> src/perlin.rs:23:45
[INFO] [stdout]    |
[INFO] [stdout] 23 |         static mut ONCE: sync::Once = sync::ONCE_INIT;
[INFO] [stdout]    |                                             ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] help: replace the use of the deprecated constant
[INFO] [stdout]    |
[INFO] [stdout] 23 -         static mut ONCE: sync::Once = sync::ONCE_INIT;
[INFO] [stdout] 23 +         static mut ONCE: sync::Once = sync::Once::new();
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/hitable.rs:21:22
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub material: Rc<Material>,
[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] 21 |     pub material: Rc<dyn Material>,
[INFO] [stdout]    |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/hitable.rs:45:18
[INFO] [stdout]    |
[INFO] [stdout] 45 |     hitable: Box<Hitable>
[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 |     hitable: Box<dyn Hitable>
[INFO] [stdout]    |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/hitable.rs:64:18
[INFO] [stdout]    |
[INFO] [stdout] 64 |     hitable: Box<Hitable>,
[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] 64 |     hitable: Box<dyn Hitable>,
[INFO] [stdout]    |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/hitable.rs:91:18
[INFO] [stdout]    |
[INFO] [stdout] 91 |     hitable: Box<Hitable>,
[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] 91 |     hitable: Box<dyn Hitable>,
[INFO] [stdout]    |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/hitable_list.rs:9:19
[INFO] [stdout]   |
[INFO] [stdout] 9 |     list: Vec<Box<Hitable + '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] 9 |     list: Vec<Box<dyn Hitable + 'a>>,
[INFO] [stdout]   |                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/sphere.rs:14:18
[INFO] [stdout]    |
[INFO] [stdout] 14 |     material: Rc<Material>,
[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] 14 |     material: Rc<dyn Material>,
[INFO] [stdout]    |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/moving_sphere.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 19 |     material: Rc<Material>,
[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 |     material: Rc<dyn Material>,
[INFO] [stdout]    |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/material.rs:45:25
[INFO] [stdout]    |
[INFO] [stdout] 45 |     pub pdf: Option<Box<Pdf>>
[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 |     pub pdf: Option<Box<dyn Pdf>>
[INFO] [stdout]    |                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/material.rs:74:17
[INFO] [stdout]    |
[INFO] [stdout] 74 |     albedo: Box<Texture>,
[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 |     albedo: Box<dyn Texture>,
[INFO] [stdout]    |                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/material.rs:211:15
[INFO] [stdout]     |
[INFO] [stdout] 211 |     emit: Box<Texture>
[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] 211 |     emit: Box<dyn Texture>
[INFO] [stdout]     |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/bvh.rs:51:15
[INFO] [stdout]    |
[INFO] [stdout] 51 |     left: Box<Hitable>,
[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 |     left: Box<dyn Hitable>,
[INFO] [stdout]    |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/bvh.rs:52:16
[INFO] [stdout]    |
[INFO] [stdout] 52 |     right: Box<Hitable>,
[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] 52 |     right: Box<dyn Hitable>,
[INFO] [stdout]    |                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:34:14
[INFO] [stdout]    |
[INFO] [stdout] 34 |     odd: Box<Texture>,
[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] 34 |     odd: Box<dyn Texture>,
[INFO] [stdout]    |              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:35:15
[INFO] [stdout]    |
[INFO] [stdout] 35 |     even: Box<Texture>,
[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 |     even: Box<dyn Texture>,
[INFO] [stdout]    |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/aarect.rs:15:18
[INFO] [stdout]    |
[INFO] [stdout] 15 |     material: Rc<Material>
[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] 15 |     material: Rc<dyn Material>
[INFO] [stdout]    |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/aarect.rs:50:18
[INFO] [stdout]    |
[INFO] [stdout] 50 |     material: Rc<Material>
[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 |     material: Rc<dyn Material>
[INFO] [stdout]    |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/aarect.rs:99:18
[INFO] [stdout]    |
[INFO] [stdout] 99 |     material: Rc<Material>
[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] 99 |     material: Rc<dyn Material>
[INFO] [stdout]    |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/pdf.rs:63:18
[INFO] [stdout]    |
[INFO] [stdout] 63 |     hitable: &'a Hitable,
[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] 63 |     hitable: &'a dyn Hitable,
[INFO] [stdout]    |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/pdf.rs:77:15
[INFO] [stdout]    |
[INFO] [stdout] 77 |     pdf0: &'a Pdf,
[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 |     pdf0: &'a dyn Pdf,
[INFO] [stdout]    |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/pdf.rs:78:15
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pdf1: &'b Pdf,
[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 |     pdf1: &'b dyn Pdf,
[INFO] [stdout]    |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/scene.rs:7:20
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub world: Box<Hitable>,
[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 |     pub world: Box<dyn Hitable>,
[INFO] [stdout]   |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/scene.rs:8:27
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub light_shapes: Box<Hitable>,
[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] 8 |     pub light_shapes: Box<dyn Hitable>,
[INFO] [stdout]   |                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/output/error.rs:4:29
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub type GenericError = Box<std::error::Error>;
[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] 4 | pub type GenericError = Box<dyn std::error::Error>;
[INFO] [stdout]   |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/hbox.rs:18:59
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn new(p0: Vec3<f64>, p1: Vec3<f64>, material: Rc<Material>) -> HBox<'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] 18 |     pub fn new(p0: Vec3<f64>, p1: Vec3<f64>, material: Rc<dyn Material>) -> HBox<'a> {
[INFO] [stdout]    |                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/bvh.rs:59:23
[INFO] [stdout]    |
[INFO] [stdout] 59 |         fn $f(a: &Box<Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]    |                       ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 | box_a_compare!(box_x_compare, x);
[INFO] [stdout]    | -------------------------------- in this macro invocation
[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: this warning originates in the macro `box_a_compare` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/bvh.rs:59:41
[INFO] [stdout]    |
[INFO] [stdout] 59 |         fn $f(a: &Box<Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]    |                                         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 | box_a_compare!(box_x_compare, x);
[INFO] [stdout]    | -------------------------------- in this macro invocation
[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: this warning originates in the macro `box_a_compare` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/bvh.rs:59:23
[INFO] [stdout]    |
[INFO] [stdout] 59 |         fn $f(a: &Box<Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]    |                       ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 | box_a_compare!(box_y_compare, y);
[INFO] [stdout]    | -------------------------------- in this macro invocation
[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: this warning originates in the macro `box_a_compare` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/bvh.rs:59:41
[INFO] [stdout]    |
[INFO] [stdout] 59 |         fn $f(a: &Box<Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]    |                                         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 | box_a_compare!(box_y_compare, y);
[INFO] [stdout]    | -------------------------------- in this macro invocation
[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: this warning originates in the macro `box_a_compare` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/bvh.rs:59:23
[INFO] [stdout]    |
[INFO] [stdout] 59 |         fn $f(a: &Box<Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]    |                       ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 | box_a_compare!(box_z_compare, z);
[INFO] [stdout]    | -------------------------------- in this macro invocation
[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: this warning originates in the macro `box_a_compare` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/bvh.rs:59:41
[INFO] [stdout]    |
[INFO] [stdout] 59 |         fn $f(a: &Box<Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]    |                                         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 | box_a_compare!(box_z_compare, z);
[INFO] [stdout]    | -------------------------------- in this macro invocation
[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: this warning originates in the macro `box_a_compare` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/core.rs:54:81
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub fn render(scene: &Scene, output_settings: &OutputSettings, output: &mut Box<Output>) -> output::Result<()> {
[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 render(scene: &Scene, output_settings: &OutputSettings, output: &mut Box<dyn Output>) -> output::Result<()> {
[INFO] [stdout]    |                                                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/core.rs:73:35
[INFO] [stdout]    |
[INFO] [stdout] 73 |                  output: &mut Box<Output>,
[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 |                  output: &mut Box<dyn Output>,
[INFO] [stdout]    |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/output/mod.rs:66:75
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub fn new_output(settings: &OutputSettings, scene: &Scene) -> Result<Box<Output>> {
[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] 66 | pub fn new_output(settings: &OutputSettings, scene: &Scene) -> Result<Box<dyn Output>> {
[INFO] [stdout]    |                                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/hitable.rs:98:29
[INFO] [stdout]    |
[INFO] [stdout] 98 |     pub fn new(hitable: Box<Hitable>, angle: f64) -> RotateY {
[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] 98 |     pub fn new(hitable: Box<dyn Hitable>, angle: f64) -> RotateY {
[INFO] [stdout]    |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/sphere.rs:18:53
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn new(cen: Vec3<f64>, r: f64, material: Rc<Material>) -> Sphere {
[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 |     pub fn new(cen: Vec3<f64>, r: f64, material: Rc<dyn Material>) -> Sphere {
[INFO] [stdout]    |                                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/moving_sphere.rs:28:29
[INFO] [stdout]    |
[INFO] [stdout] 28 |                material: Rc<Material>)
[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 |                material: Rc<dyn Material>)
[INFO] [stdout]    |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/material.rs:78:23
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub fn new(a: Box<Texture>) -> Lambertian {
[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(a: Box<dyn Texture>) -> Lambertian {
[INFO] [stdout]    |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/bvh.rs:79:46
[INFO] [stdout]    |
[INFO] [stdout] 79 |     pub fn new(rng: &mut Rng, mut l: Vec<Box<Hitable>>, time0: f64, time1: f64) -> BVHNode
[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] 79 |     pub fn new(rng: &mut Rng, mut l: Vec<Box<dyn Hitable>>, time0: f64, time1: f64) -> BVHNode
[INFO] [stdout]    |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:39:24
[INFO] [stdout]    |
[INFO] [stdout] 39 |     pub fn new(t0: Box<Texture>, t1: Box<Texture>) -> CheckerTexture {
[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] 39 |     pub fn new(t0: Box<dyn Texture>, t1: Box<Texture>) -> CheckerTexture {
[INFO] [stdout]    |                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:39:42
[INFO] [stdout]    |
[INFO] [stdout] 39 |     pub fn new(t0: Box<Texture>, t1: Box<Texture>) -> CheckerTexture {
[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] 39 |     pub fn new(t0: Box<Texture>, t1: Box<dyn Texture>) -> CheckerTexture {
[INFO] [stdout]    |                                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/vec3.rs:260:15
[INFO] [stdout]     |
[INFO] [stdout] 260 |     Vec3::new((v1.y * v2.z - v1.z * v2.y),
[INFO] [stdout]     |               ^                         ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 260 -     Vec3::new((v1.y * v2.z - v1.z * v2.y),
[INFO] [stdout] 260 +     Vec3::new(v1.y * v2.z - v1.z * v2.y ,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/vec3.rs:261:15
[INFO] [stdout]     |
[INFO] [stdout] 261 |               (-(v1.x * v2.z - v1.z * v2.x)),
[INFO] [stdout]     |               ^                            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 261 -               (-(v1.x * v2.z - v1.z * v2.x)),
[INFO] [stdout] 261 +               -(v1.x * v2.z - v1.z * v2.x) ,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around function argument
[INFO] [stdout]    --> src/vec3.rs:262:15
[INFO] [stdout]     |
[INFO] [stdout] 262 |               (v1.x * v2.y - v1.y * v2.x))
[INFO] [stdout]     |               ^                         ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 262 -               (v1.x * v2.y - v1.y * v2.x))
[INFO] [stdout] 262 +               v1.x * v2.y - v1.y * v2.x )
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]   --> src/material.rs:88:26
[INFO] [stdout]    |
[INFO] [stdout] 88 |                -> Option<(ScatterRecord)> {
[INFO] [stdout]    |                          ^             ^
[INFO] [stdout]    |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 88 -                -> Option<(ScatterRecord)> {
[INFO] [stdout] 88 +                -> Option<ScatterRecord > {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]    --> src/material.rs:142:26
[INFO] [stdout]     |
[INFO] [stdout] 142 |                -> Option<(ScatterRecord)> {
[INFO] [stdout]     |                          ^             ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 142 -                -> Option<(ScatterRecord)> {
[INFO] [stdout] 142 +                -> Option<ScatterRecord > {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around type
[INFO] [stdout]    --> src/material.rs:170:26
[INFO] [stdout]     |
[INFO] [stdout] 170 |                -> Option<(ScatterRecord)> {
[INFO] [stdout]     |                          ^             ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 170 -                -> Option<(ScatterRecord)> {
[INFO] [stdout] 170 +                -> Option<ScatterRecord > {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused macro definition: `perrln`
[INFO] [stdout]   --> src/lib.rs:56:14
[INFO] [stdout]    |
[INFO] [stdout] 56 | macro_rules! perrln {
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_macros)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred
[INFO] [stdout]   --> src/perlin.rs:23:45
[INFO] [stdout]    |
[INFO] [stdout] 23 |         static mut ONCE: sync::Once = sync::ONCE_INIT;
[INFO] [stdout]    |                                             ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] help: replace the use of the deprecated constant
[INFO] [stdout]    |
[INFO] [stdout] 23 -         static mut ONCE: sync::Once = sync::ONCE_INIT;
[INFO] [stdout] 23 +         static mut ONCE: sync::Once = sync::Once::new();
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/hitable.rs:21:22
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub material: Rc<Material>,
[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] 21 |     pub material: Rc<dyn Material>,
[INFO] [stdout]    |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/hitable.rs:45:18
[INFO] [stdout]    |
[INFO] [stdout] 45 |     hitable: Box<Hitable>
[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 |     hitable: Box<dyn Hitable>
[INFO] [stdout]    |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/hitable.rs:64:18
[INFO] [stdout]    |
[INFO] [stdout] 64 |     hitable: Box<Hitable>,
[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] 64 |     hitable: Box<dyn Hitable>,
[INFO] [stdout]    |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/hitable.rs:91:18
[INFO] [stdout]    |
[INFO] [stdout] 91 |     hitable: Box<Hitable>,
[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] 91 |     hitable: Box<dyn Hitable>,
[INFO] [stdout]    |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/hitable_list.rs:9:19
[INFO] [stdout]   |
[INFO] [stdout] 9 |     list: Vec<Box<Hitable + '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] 9 |     list: Vec<Box<dyn Hitable + 'a>>,
[INFO] [stdout]   |                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/sphere.rs:14:18
[INFO] [stdout]    |
[INFO] [stdout] 14 |     material: Rc<Material>,
[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] 14 |     material: Rc<dyn Material>,
[INFO] [stdout]    |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/moving_sphere.rs:19:18
[INFO] [stdout]    |
[INFO] [stdout] 19 |     material: Rc<Material>,
[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 |     material: Rc<dyn Material>,
[INFO] [stdout]    |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/material.rs:45:25
[INFO] [stdout]    |
[INFO] [stdout] 45 |     pub pdf: Option<Box<Pdf>>
[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 |     pub pdf: Option<Box<dyn Pdf>>
[INFO] [stdout]    |                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/material.rs:74:17
[INFO] [stdout]    |
[INFO] [stdout] 74 |     albedo: Box<Texture>,
[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 |     albedo: Box<dyn Texture>,
[INFO] [stdout]    |                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/material.rs:211:15
[INFO] [stdout]     |
[INFO] [stdout] 211 |     emit: Box<Texture>
[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] 211 |     emit: Box<dyn Texture>
[INFO] [stdout]     |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/bvh.rs:51:15
[INFO] [stdout]    |
[INFO] [stdout] 51 |     left: Box<Hitable>,
[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 |     left: Box<dyn Hitable>,
[INFO] [stdout]    |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/bvh.rs:52:16
[INFO] [stdout]    |
[INFO] [stdout] 52 |     right: Box<Hitable>,
[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] 52 |     right: Box<dyn Hitable>,
[INFO] [stdout]    |                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:34:14
[INFO] [stdout]    |
[INFO] [stdout] 34 |     odd: Box<Texture>,
[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] 34 |     odd: Box<dyn Texture>,
[INFO] [stdout]    |              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:35:15
[INFO] [stdout]    |
[INFO] [stdout] 35 |     even: Box<Texture>,
[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 |     even: Box<dyn Texture>,
[INFO] [stdout]    |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/aarect.rs:15:18
[INFO] [stdout]    |
[INFO] [stdout] 15 |     material: Rc<Material>
[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] 15 |     material: Rc<dyn Material>
[INFO] [stdout]    |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/aarect.rs:50:18
[INFO] [stdout]    |
[INFO] [stdout] 50 |     material: Rc<Material>
[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 |     material: Rc<dyn Material>
[INFO] [stdout]    |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/aarect.rs:99:18
[INFO] [stdout]    |
[INFO] [stdout] 99 |     material: Rc<Material>
[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] 99 |     material: Rc<dyn Material>
[INFO] [stdout]    |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/pdf.rs:63:18
[INFO] [stdout]    |
[INFO] [stdout] 63 |     hitable: &'a Hitable,
[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] 63 |     hitable: &'a dyn Hitable,
[INFO] [stdout]    |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/pdf.rs:77:15
[INFO] [stdout]    |
[INFO] [stdout] 77 |     pdf0: &'a Pdf,
[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 |     pdf0: &'a dyn Pdf,
[INFO] [stdout]    |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/pdf.rs:78:15
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pdf1: &'b Pdf,
[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 |     pdf1: &'b dyn Pdf,
[INFO] [stdout]    |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/scene.rs:7:20
[INFO] [stdout]   |
[INFO] [stdout] 7 |     pub world: Box<Hitable>,
[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 |     pub world: Box<dyn Hitable>,
[INFO] [stdout]   |                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/scene.rs:8:27
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub light_shapes: Box<Hitable>,
[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] 8 |     pub light_shapes: Box<dyn Hitable>,
[INFO] [stdout]   |                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/output/error.rs:4:29
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub type GenericError = Box<std::error::Error>;
[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] 4 | pub type GenericError = Box<dyn std::error::Error>;
[INFO] [stdout]   |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/hbox.rs:18:59
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn new(p0: Vec3<f64>, p1: Vec3<f64>, material: Rc<Material>) -> HBox<'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] 18 |     pub fn new(p0: Vec3<f64>, p1: Vec3<f64>, material: Rc<dyn Material>) -> HBox<'a> {
[INFO] [stdout]    |                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/output/error.rs:24:46
[INFO] [stdout]    |
[INFO] [stdout] 24 |         write!(fmt, "Output Error: {}", self.description())
[INFO] [stdout]    |                                              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/bvh.rs:59:23
[INFO] [stdout]    |
[INFO] [stdout] 59 |         fn $f(a: &Box<Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]    |                       ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 | box_a_compare!(box_x_compare, x);
[INFO] [stdout]    | -------------------------------- in this macro invocation
[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: this warning originates in the macro `box_a_compare` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/bvh.rs:59:41
[INFO] [stdout]    |
[INFO] [stdout] 59 |         fn $f(a: &Box<Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]    |                                         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 | box_a_compare!(box_x_compare, x);
[INFO] [stdout]    | -------------------------------- in this macro invocation
[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: this warning originates in the macro `box_a_compare` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/bvh.rs:59:23
[INFO] [stdout]    |
[INFO] [stdout] 59 |         fn $f(a: &Box<Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]    |                       ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 | box_a_compare!(box_y_compare, y);
[INFO] [stdout]    | -------------------------------- in this macro invocation
[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: this warning originates in the macro `box_a_compare` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/bvh.rs:59:41
[INFO] [stdout]    |
[INFO] [stdout] 59 |         fn $f(a: &Box<Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]    |                                         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 73 | box_a_compare!(box_y_compare, y);
[INFO] [stdout]    | -------------------------------- in this macro invocation
[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: this warning originates in the macro `box_a_compare` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/bvh.rs:59:23
[INFO] [stdout]    |
[INFO] [stdout] 59 |         fn $f(a: &Box<Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]    |                       ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 | box_a_compare!(box_z_compare, z);
[INFO] [stdout]    | -------------------------------- in this macro invocation
[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: this warning originates in the macro `box_a_compare` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/bvh.rs:59:41
[INFO] [stdout]    |
[INFO] [stdout] 59 |         fn $f(a: &Box<Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]    |                                         ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 74 | box_a_compare!(box_z_compare, z);
[INFO] [stdout]    | -------------------------------- in this macro invocation
[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: this warning originates in the macro `box_a_compare` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/core.rs:54:81
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub fn render(scene: &Scene, output_settings: &OutputSettings, output: &mut Box<Output>) -> output::Result<()> {
[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 render(scene: &Scene, output_settings: &OutputSettings, output: &mut Box<dyn Output>) -> output::Result<()> {
[INFO] [stdout]    |                                                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/core.rs:73:35
[INFO] [stdout]    |
[INFO] [stdout] 73 |                  output: &mut Box<Output>,
[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 |                  output: &mut Box<dyn Output>,
[INFO] [stdout]    |                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/output/mod.rs:66:75
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub fn new_output(settings: &OutputSettings, scene: &Scene) -> Result<Box<Output>> {
[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] 66 | pub fn new_output(settings: &OutputSettings, scene: &Scene) -> Result<Box<dyn Output>> {
[INFO] [stdout]    |                                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/hitable.rs:98:29
[INFO] [stdout]    |
[INFO] [stdout] 98 |     pub fn new(hitable: Box<Hitable>, angle: f64) -> RotateY {
[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] 98 |     pub fn new(hitable: Box<dyn Hitable>, angle: f64) -> RotateY {
[INFO] [stdout]    |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/sphere.rs:18:53
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub fn new(cen: Vec3<f64>, r: f64, material: Rc<Material>) -> Sphere {
[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 |     pub fn new(cen: Vec3<f64>, r: f64, material: Rc<dyn Material>) -> Sphere {
[INFO] [stdout]    |                                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/moving_sphere.rs:28:29
[INFO] [stdout]    |
[INFO] [stdout] 28 |                material: Rc<Material>)
[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 |                material: Rc<dyn Material>)
[INFO] [stdout]    |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/material.rs:78:23
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub fn new(a: Box<Texture>) -> Lambertian {
[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(a: Box<dyn Texture>) -> Lambertian {
[INFO] [stdout]    |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/bvh.rs:79:46
[INFO] [stdout]    |
[INFO] [stdout] 79 |     pub fn new(rng: &mut Rng, mut l: Vec<Box<Hitable>>, time0: f64, time1: f64) -> BVHNode
[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] 79 |     pub fn new(rng: &mut Rng, mut l: Vec<Box<dyn Hitable>>, time0: f64, time1: f64) -> BVHNode
[INFO] [stdout]    |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:39:24
[INFO] [stdout]    |
[INFO] [stdout] 39 |     pub fn new(t0: Box<Texture>, t1: Box<Texture>) -> CheckerTexture {
[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] 39 |     pub fn new(t0: Box<dyn Texture>, t1: Box<Texture>) -> CheckerTexture {
[INFO] [stdout]    |                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:39:42
[INFO] [stdout]    |
[INFO] [stdout] 39 |     pub fn new(t0: Box<Texture>, t1: Box<Texture>) -> CheckerTexture {
[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] 39 |     pub fn new(t0: Box<Texture>, t1: Box<dyn Texture>) -> CheckerTexture {
[INFO] [stdout]    |                                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/output/error.rs:24:46
[INFO] [stdout]    |
[INFO] [stdout] 24 |         write!(fmt, "Output Error: {}", self.description())
[INFO] [stdout]    |                                              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `w` is never read
[INFO] [stdout]   --> src/camera.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Camera {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 27 |     w: Vec3<f64>,
[INFO] [stdout]    |     ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Camera` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/perlin.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | /         ONCE.call_once(|| {
[INFO] [stdout] 25 | |             PERM_X = perlin_generate_perm();
[INFO] [stdout] 26 | |             PERM_Y = perlin_generate_perm();
[INFO] [stdout] 27 | |             PERM_Z = perlin_generate_perm();
[INFO] [stdout] 28 | |             RANFLOAT = perlin_generate_float();
[INFO] [stdout] 29 | |             RANVEC = perlin_generate();
[INFO] [stdout] 30 | |         });
[INFO] [stdout]    | |__________^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/perlin.rs:35:49
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn get_perm_x() -> &'static [u8; 256] {unsafe { &PERM_X }}
[INFO] [stdout]    |                                                 ^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn get_perm_x() -> &'static [u8; 256] {unsafe { &raw const PERM_X }}
[INFO] [stdout]    |                                                  +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/perlin.rs:36:49
[INFO] [stdout]    |
[INFO] [stdout] 36 | fn get_perm_y() -> &'static [u8; 256] {unsafe { &PERM_Y }}
[INFO] [stdout]    |                                                 ^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 36 | fn get_perm_y() -> &'static [u8; 256] {unsafe { &raw const PERM_Y }}
[INFO] [stdout]    |                                                  +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/perlin.rs:37:49
[INFO] [stdout]    |
[INFO] [stdout] 37 | fn get_perm_z() -> &'static [u8; 256] {unsafe { &PERM_Z }}
[INFO] [stdout]    |                                                 ^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 37 | fn get_perm_z() -> &'static [u8; 256] {unsafe { &raw const PERM_Z }}
[INFO] [stdout]    |                                                  +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/perlin.rs:38:52
[INFO] [stdout]    |
[INFO] [stdout] 38 | fn get_ranfloat() -> &'static [f64; 256] {unsafe { &RANFLOAT }}
[INFO] [stdout]    |                                                    ^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 38 | fn get_ranfloat() -> &'static [f64; 256] {unsafe { &raw const RANFLOAT }}
[INFO] [stdout]    |                                                     +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/perlin.rs:39:56
[INFO] [stdout]    |
[INFO] [stdout] 39 | fn get_ranvec() -> &'static [Vec3<f64>; 256] {unsafe { &RANVEC }}
[INFO] [stdout]    |                                                        ^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 39 | fn get_ranvec() -> &'static [Vec3<f64>; 256] {unsafe { &raw const RANVEC }}
[INFO] [stdout]    |                                                         +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `w` is never read
[INFO] [stdout]   --> src/camera.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct Camera {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 27 |     w: Vec3<f64>,
[INFO] [stdout]    |     ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Camera` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/perlin.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 24 | /         ONCE.call_once(|| {
[INFO] [stdout] 25 | |             PERM_X = perlin_generate_perm();
[INFO] [stdout] 26 | |             PERM_Y = perlin_generate_perm();
[INFO] [stdout] 27 | |             PERM_Z = perlin_generate_perm();
[INFO] [stdout] 28 | |             RANFLOAT = perlin_generate_float();
[INFO] [stdout] 29 | |             RANVEC = perlin_generate();
[INFO] [stdout] 30 | |         });
[INFO] [stdout]    | |__________^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout]    = note: `#[warn(static_mut_refs)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/perlin.rs:35:49
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn get_perm_x() -> &'static [u8; 256] {unsafe { &PERM_X }}
[INFO] [stdout]    |                                                 ^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn get_perm_x() -> &'static [u8; 256] {unsafe { &raw const PERM_X }}
[INFO] [stdout]    |                                                  +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/perlin.rs:36:49
[INFO] [stdout]    |
[INFO] [stdout] 36 | fn get_perm_y() -> &'static [u8; 256] {unsafe { &PERM_Y }}
[INFO] [stdout]    |                                                 ^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 36 | fn get_perm_y() -> &'static [u8; 256] {unsafe { &raw const PERM_Y }}
[INFO] [stdout]    |                                                  +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/perlin.rs:37:49
[INFO] [stdout]    |
[INFO] [stdout] 37 | fn get_perm_z() -> &'static [u8; 256] {unsafe { &PERM_Z }}
[INFO] [stdout]    |                                                 ^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 37 | fn get_perm_z() -> &'static [u8; 256] {unsafe { &raw const PERM_Z }}
[INFO] [stdout]    |                                                  +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/perlin.rs:38:52
[INFO] [stdout]    |
[INFO] [stdout] 38 | fn get_ranfloat() -> &'static [f64; 256] {unsafe { &RANFLOAT }}
[INFO] [stdout]    |                                                    ^^^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 38 | fn get_ranfloat() -> &'static [f64; 256] {unsafe { &raw const RANFLOAT }}
[INFO] [stdout]    |                                                     +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a shared reference to mutable static
[INFO] [stdout]   --> src/perlin.rs:39:56
[INFO] [stdout]    |
[INFO] [stdout] 39 | fn get_ranvec() -> &'static [Vec3<f64>; 256] {unsafe { &RANVEC }}
[INFO] [stdout]    |                                                        ^^^^^^^ shared reference to mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]    = note: shared references to mutable statics are dangerous; it's undefined behavior if the static is mutated or if a mutable reference is created for it while the shared reference lives
[INFO] [stdout] help: use `&raw const` instead to create a raw pointer
[INFO] [stdout]    |
[INFO] [stdout] 39 | fn get_ranvec() -> &'static [Vec3<f64>; 256] {unsafe { &raw const RANVEC }}
[INFO] [stdout]    |                                                         +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]    --> src/main.rs:311:58
[INFO] [stdout]     |
[INFO] [stdout] 311 |             let desc = format!("Invalid filename: {}", e.description());
[INFO] [stdout]     |                                                          ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]    --> src/main.rs:311:58
[INFO] [stdout]     |
[INFO] [stdout] 311 |             let desc = format!("Invalid filename: {}", e.description());
[INFO] [stdout]     |                                                          ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 11.13s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: bitflags v0.7.0, syn v0.8.7
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2`
[INFO] running `Command { std: "docker" "inspect" "3b68376b61f077a65beddc1c973945815d2c0d12d642ad1eb272e93298b5fa89", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3b68376b61f077a65beddc1c973945815d2c0d12d642ad1eb272e93298b5fa89", kill_on_drop: false }`
[INFO] [stdout] 3b68376b61f077a65beddc1c973945815d2c0d12d642ad1eb272e93298b5fa89
