[INFO] cloning repository https://github.com/rumbogs/rust-raytracer-one-weekend
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/rumbogs/rust-raytracer-one-weekend" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frumbogs%2Frust-raytracer-one-weekend", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frumbogs%2Frust-raytracer-one-weekend'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] aec68f58611feb2e96a72596d7a1ccdc553940ae
[INFO] checking rumbogs/rust-raytracer-one-weekend against try#b1f2594eac607c1f051534800237eeedb5590a49 for pr-139493-3
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frumbogs%2Frust-raytracer-one-weekend" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/rumbogs/rust-raytracer-one-weekend
[INFO] finished tweaking git repo https://github.com/rumbogs/rust-raytracer-one-weekend
[INFO] tweaked toml for git repo https://github.com/rumbogs/rust-raytracer-one-weekend written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/rumbogs/rust-raytracer-one-weekend on toolchain b1f2594eac607c1f051534800237eeedb5590a49
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b1f2594eac607c1f051534800237eeedb5590a49" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/rumbogs/rust-raytracer-one-weekend 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" "+b1f2594eac607c1f051534800237eeedb5590a49" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+b1f2594eac607c1f051534800237eeedb5590a49" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 6a318dcf5c97e9f9f24c5188bdd75b9ec085ecd21725baf1ba5028a26d9fd2d7
[INFO] running `Command { std: "docker" "start" "-a" "6a318dcf5c97e9f9f24c5188bdd75b9ec085ecd21725baf1ba5028a26d9fd2d7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "6a318dcf5c97e9f9f24c5188bdd75b9ec085ecd21725baf1ba5028a26d9fd2d7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6a318dcf5c97e9f9f24c5188bdd75b9ec085ecd21725baf1ba5028a26d9fd2d7", kill_on_drop: false }`
[INFO] [stdout] 6a318dcf5c97e9f9f24c5188bdd75b9ec085ecd21725baf1ba5028a26d9fd2d7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:aa71247004a7fa38d13ec170f48f06cdedf5bc50b2a8645e56ed7e992e6fa513" "/opt/rustwide/cargo-home/bin/cargo" "+b1f2594eac607c1f051534800237eeedb5590a49" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 390b51a42c9f77b0d7a11bd2556d3557a8a06f573e1bd8daa589b8b457994933
[INFO] running `Command { std: "docker" "start" "-a" "390b51a42c9f77b0d7a11bd2556d3557a8a06f573e1bd8daa589b8b457994933", kill_on_drop: false }`
[INFO] [stderr]     Checking cfg-if v0.1.9
[INFO] [stderr]     Checking lazy_static v1.3.0
[INFO] [stderr]    Compiling autocfg v0.1.5
[INFO] [stderr]    Compiling semver-parser v0.7.0
[INFO] [stderr]    Compiling libc v0.2.60
[INFO] [stderr]    Compiling arrayvec v0.4.11
[INFO] [stderr]     Checking nodrop v0.1.13
[INFO] [stderr]     Checking scopeguard v1.0.0
[INFO] [stderr]    Compiling byteorder v1.3.2
[INFO] [stderr]    Compiling proc-macro2 v0.4.30
[INFO] [stderr]    Compiling unicode-xid v0.1.0
[INFO] [stderr]    Compiling rayon-core v1.5.0
[INFO] [stderr]    Compiling syn v0.15.42
[INFO] [stderr]    Compiling num-derive v0.2.5
[INFO] [stderr]    Compiling bitflags v1.1.0
[INFO] [stderr]    Compiling crc32fast v1.2.0
[INFO] [stderr]     Checking adler32 v1.0.3
[INFO] [stderr]     Checking lzw v0.10.0
[INFO] [stderr]     Checking ppv-lite86 v0.2.5
[INFO] [stderr]     Checking crossbeam-utils v0.6.6
[INFO] [stderr]     Checking either v1.5.2
[INFO] [stderr]     Checking inflate v0.4.5
[INFO] [stderr]     Checking color_quant v1.0.1
[INFO] [stderr]     Checking scoped_threadpool v0.1.9
[INFO] [stderr]     Checking c2-chacha v0.2.2
[INFO] [stderr]    Compiling semver v0.9.0
[INFO] [stderr]     Checking gif v0.10.2
[INFO] [stderr]    Compiling num-traits v0.2.8
[INFO] [stderr]    Compiling num-integer v0.1.41
[INFO] [stderr]    Compiling num-rational v0.2.2
[INFO] [stderr]    Compiling num-iter v0.1.39
[INFO] [stderr]     Checking crossbeam-queue v0.1.2
[INFO] [stderr]     Checking crossbeam-channel v0.3.9
[INFO] [stderr]     Checking deflate v0.7.20
[INFO] [stderr]    Compiling rustc_version v0.2.3
[INFO] [stderr]     Checking num_cpus v1.10.1
[INFO] [stderr]     Checking getrandom v0.1.7
[INFO] [stderr]    Compiling memoffset v0.5.1
[INFO] [stderr]    Compiling quote v0.6.13
[INFO] [stderr]     Checking rand_core v0.5.0
[INFO] [stderr]     Checking crossbeam-epoch v0.7.2
[INFO] [stderr]     Checking png v0.15.0
[INFO] [stderr]     Checking rand_chacha v0.2.1
[INFO] [stderr]     Checking rand v0.7.0
[INFO] [stderr]     Checking crossbeam-deque v0.6.3
[INFO] [stderr]     Checking crossbeam-deque v0.7.1
[INFO] [stderr]     Checking crossbeam v0.7.2
[INFO] [stderr]     Checking rayon v1.1.0
[INFO] [stderr]     Checking jpeg-decoder v0.1.15
[INFO] [stderr]     Checking tiff v0.3.1
[INFO] [stderr]     Checking image v0.22.0
[INFO] [stderr]     Checking raytracing-one-weekend v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/material.rs:38:25
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub pdf: Option<Box<PDF>>,
[INFO] [stdout]    |                         ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 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] 38 |     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/modifiers/flip_normals.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 |     object: Box<Hittable>
[INFO] [stdout]   |                 ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-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 |     object: Box<dyn Hittable>
[INFO] [stdout]   |                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/modifiers/rotate.rs:10:21
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub object: Box<Hittable>,
[INFO] [stdout]    |                     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub object: Box<dyn Hittable>,
[INFO] [stdout]    |                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/modifiers/translate.rs:8:21
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub object: Box<Hittable>,
[INFO] [stdout]   |                     ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-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 object: Box<dyn Hittable>,
[INFO] [stdout]   |                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/bvh_tree.rs:10:14
[INFO] [stdout]    |
[INFO] [stdout] 10 |     Leaf(Box<Hittable>),
[INFO] [stdout]    |              ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 10 |     Leaf(Box<dyn Hittable>),
[INFO] [stdout]    |              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/constant_medium.rs:11:19
[INFO] [stdout]    |
[INFO] [stdout] 11 |     boundary: Box<Hittable>,
[INFO] [stdout]    |                   ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     boundary: Box<dyn Hittable>,
[INFO] [stdout]    |                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/object_list.rs:10:23
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub list: Vec<Box<Hittable>>,
[INFO] [stdout]    |                       ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub list: Vec<Box<dyn Hittable>>,
[INFO] [stdout]    |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/pdf.rs:40:23
[INFO] [stdout]    |
[INFO] [stdout] 40 |     pub hittable: Box<Hittable>,
[INFO] [stdout]    |                       ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 40 |     pub hittable: Box<dyn Hittable>,
[INFO] [stdout]    |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/pdf.rs:53:15
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pdf: [Box<PDF>; 2],
[INFO] [stdout]    |               ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pdf: [Box<dyn PDF>; 2],
[INFO] [stdout]    |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/bvh_tree.rs:19:26
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn box_x_compare(a: &Box<Hittable>, b: &Box<Hittable>) -> Ordering {
[INFO] [stdout]    |                          ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn box_x_compare(a: &Box<dyn Hittable>, b: &Box<Hittable>) -> Ordering {
[INFO] [stdout]    |                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/bvh_tree.rs:19:45
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn box_x_compare(a: &Box<Hittable>, b: &Box<Hittable>) -> Ordering {
[INFO] [stdout]    |                                             ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn box_x_compare(a: &Box<Hittable>, b: &Box<dyn Hittable>) -> Ordering {
[INFO] [stdout]    |                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/bvh_tree.rs:37:26
[INFO] [stdout]    |
[INFO] [stdout] 37 | fn box_y_compare(a: &Box<Hittable>, b: &Box<Hittable>) -> Ordering {
[INFO] [stdout]    |                          ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 37 | fn box_y_compare(a: &Box<dyn Hittable>, b: &Box<Hittable>) -> Ordering {
[INFO] [stdout]    |                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/bvh_tree.rs:37:45
[INFO] [stdout]    |
[INFO] [stdout] 37 | fn box_y_compare(a: &Box<Hittable>, b: &Box<Hittable>) -> Ordering {
[INFO] [stdout]    |                                             ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 37 | fn box_y_compare(a: &Box<Hittable>, b: &Box<dyn Hittable>) -> Ordering {
[INFO] [stdout]    |                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/bvh_tree.rs:55:26
[INFO] [stdout]    |
[INFO] [stdout] 55 | fn box_z_compare(a: &Box<Hittable>, b: &Box<Hittable>) -> Ordering {
[INFO] [stdout]    |                          ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 55 | fn box_z_compare(a: &Box<dyn Hittable>, b: &Box<Hittable>) -> Ordering {
[INFO] [stdout]    |                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/bvh_tree.rs:55:45
[INFO] [stdout]    |
[INFO] [stdout] 55 | fn box_z_compare(a: &Box<Hittable>, b: &Box<Hittable>) -> Ordering {
[INFO] [stdout]    |                                             ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 55 | fn box_z_compare(a: &Box<Hittable>, b: &Box<dyn Hittable>) -> Ordering {
[INFO] [stdout]    |                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/main.rs:44:30
[INFO] [stdout]    |
[INFO] [stdout] 44 | fn random_scene() -> Vec<Box<Hittable>> {
[INFO] [stdout]    |                              ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 44 | fn random_scene() -> Vec<Box<dyn Hittable>> {
[INFO] [stdout]    |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:107:41
[INFO] [stdout]     |
[INFO] [stdout] 107 | fn cornell_box(aspect: f32) -> (Vec<Box<Hittable>>, Camera) {
[INFO] [stdout]     |                                         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 107 | fn cornell_box(aspect: f32) -> (Vec<Box<dyn Hittable>>, Camera) {
[INFO] [stdout]     |                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:228:31
[INFO] [stdout]     |
[INFO] [stdout] 228 | fn cornell_smoke() -> Vec<Box<Hittable>> {
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 228 | fn cornell_smoke() -> Vec<Box<dyn Hittable>> {
[INFO] [stdout]     |                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:339:31
[INFO] [stdout]     |
[INFO] [stdout] 339 | fn random_scene2() -> Vec<Box<Hittable>> {
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 339 | fn random_scene2() -> Vec<Box<dyn Hittable>> {
[INFO] [stdout]     |                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:398:29
[INFO] [stdout]     |
[INFO] [stdout] 398 | fn final_scene() -> Vec<Box<Hittable>> {
[INFO] [stdout]     |                             ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 398 | fn final_scene() -> Vec<Box<dyn Hittable>> {
[INFO] [stdout]     |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/modifiers/flip_normals.rs:11:28
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(object: Box<Hittable>) -> Self {
[INFO] [stdout]    |                            ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(object: Box<dyn Hittable>) -> Self {
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/modifiers/rotate.rs:17:28
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new(object: Box<Hittable>, angle: f32) -> Self {
[INFO] [stdout]    |                            ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new(object: Box<dyn Hittable>, angle: f32) -> Self {
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/bvh_tree.rs:74:34
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub fn new(mut list: Vec<Box<Hittable>>, t0: f32, t1: f32) -> Self {
[INFO] [stdout]    |                                  ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub fn new(mut list: Vec<Box<dyn Hittable>>, t0: f32, t1: f32) -> Self {
[INFO] [stdout]    |                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/constant_medium.rs:17:30
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new(boundary: Box<Hittable>, density: f32, texture: Texture) -> Self {
[INFO] [stdout]    |                              ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new(boundary: Box<dyn Hittable>, density: f32, texture: Texture) -> Self {
[INFO] [stdout]    |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/object_list.rs:14:30
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn new(list: Vec<Box<Hittable>>) -> Self {
[INFO] [stdout]    |                              ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-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 |     pub fn new(list: Vec<Box<dyn Hittable>>) -> Self {
[INFO] [stdout]    |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/pdf.rs:57:24
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn new(p0: Box<PDF>, p1: Box<PDF>) -> Self {
[INFO] [stdout]    |                        ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn new(p0: Box<dyn PDF>, p1: Box<PDF>) -> Self {
[INFO] [stdout]    |                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/pdf.rs:57:38
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn new(p0: Box<PDF>, p1: Box<PDF>) -> Self {
[INFO] [stdout]    |                                      ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn new(p0: Box<PDF>, p1: Box<dyn PDF>) -> Self {
[INFO] [stdout]    |                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/bvh_tree.rs:98:39
[INFO] [stdout]    |
[INFO] [stdout] 98 |                 let mut vec1: Vec<Box<Hittable>> = Vec::with_capacity(list_length / 2 + 1);
[INFO] [stdout]    |                                       ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-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 |                 let mut vec1: Vec<Box<dyn Hittable>> = Vec::with_capacity(list_length / 2 + 1);
[INFO] [stdout]    |                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/bvh_tree.rs:99:39
[INFO] [stdout]    |
[INFO] [stdout] 99 |                 let mut vec2: Vec<Box<Hittable>> = Vec::with_capacity(list_length / 2);
[INFO] [stdout]    |                                       ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-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 |                 let mut vec2: Vec<Box<dyn Hittable>> = Vec::with_capacity(list_length / 2);
[INFO] [stdout]    |                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/cube.rs:19:31
[INFO] [stdout]    |
[INFO] [stdout] 19 |         let mut list: Vec<Box<Hittable>> = Vec::with_capacity(6);
[INFO] [stdout]    |                               ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-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 |         let mut list: Vec<Box<dyn Hittable>> = Vec::with_capacity(6);
[INFO] [stdout]    |                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/main.rs:46:34
[INFO] [stdout]    |
[INFO] [stdout] 46 |     let mut object_list: Vec<Box<Hittable>> = Vec::with_capacity(n + 1);
[INFO] [stdout]    |                                  ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 46 |     let mut object_list: Vec<Box<dyn Hittable>> = Vec::with_capacity(n + 1);
[INFO] [stdout]    |                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:109:34
[INFO] [stdout]     |
[INFO] [stdout] 109 |     let mut object_list: Vec<Box<Hittable>> = Vec::with_capacity(n + 1);
[INFO] [stdout]     |                                  ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 109 |     let mut object_list: Vec<Box<dyn Hittable>> = Vec::with_capacity(n + 1);
[INFO] [stdout]     |                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:230:34
[INFO] [stdout]     |
[INFO] [stdout] 230 |     let mut object_list: Vec<Box<Hittable>> = Vec::with_capacity(n + 1);
[INFO] [stdout]     |                                  ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 230 |     let mut object_list: Vec<Box<dyn Hittable>> = Vec::with_capacity(n + 1);
[INFO] [stdout]     |                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:341:34
[INFO] [stdout]     |
[INFO] [stdout] 341 |     let mut object_list: Vec<Box<Hittable>> = Vec::with_capacity(n + 1);
[INFO] [stdout]     |                                  ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 341 |     let mut object_list: Vec<Box<dyn Hittable>> = Vec::with_capacity(n + 1);
[INFO] [stdout]     |                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:399:27
[INFO] [stdout]     |
[INFO] [stdout] 399 |     let mut list: Vec<Box<Hittable>> = Vec::with_capacity(30);
[INFO] [stdout]     |                           ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 399 |     let mut list: Vec<Box<dyn Hittable>> = Vec::with_capacity(30);
[INFO] [stdout]     |                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:400:30
[INFO] [stdout]     |
[INFO] [stdout] 400 |     let mut boxlist: Vec<Box<Hittable>> = Vec::with_capacity(10000);
[INFO] [stdout]     |                              ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 400 |     let mut boxlist: Vec<Box<dyn Hittable>> = Vec::with_capacity(10000);
[INFO] [stdout]     |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:401:31
[INFO] [stdout]     |
[INFO] [stdout] 401 |     let mut boxlist2: Vec<Box<Hittable>> = Vec::with_capacity(10000);
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 401 |     let mut boxlist2: Vec<Box<dyn Hittable>> = Vec::with_capacity(10000);
[INFO] [stdout]     |                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `o`
[INFO] [stdout]   --> src/hittable.rs:23:25
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn pdf_value(&self, o: Vector3, v: Vector3) -> f32 {
[INFO] [stdout]    |                         ^ help: if this is intentional, prefix it with an underscore: `_o`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]   --> src/hittable.rs:23:37
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn pdf_value(&self, o: Vector3, v: Vector3) -> f32 {
[INFO] [stdout]    |                                     ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `o`
[INFO] [stdout]   --> src/hittable.rs:26:22
[INFO] [stdout]    |
[INFO] [stdout] 26 |     fn random(&self, o: Vector3) -> Vector3 {
[INFO] [stdout]    |                      ^ help: if this is intentional, prefix it with an underscore: `_o`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scattered_direction`
[INFO] [stdout]   --> src/material.rs:57:21
[INFO] [stdout]    |
[INFO] [stdout] 57 |                 let scattered_direction = scattered.direction();
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_scattered_direction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `target`
[INFO] [stdout]    --> src/material.rs:129:21
[INFO] [stdout]     |
[INFO] [stdout] 129 |                 let target: Vector3 = rec.p + rec.normal + random_on_unit_sphere();
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `r_in`
[INFO] [stdout]    --> src/material.rs:141:34
[INFO] [stdout]     |
[INFO] [stdout] 141 |     pub fn scattering_pdf(&self, r_in: &Ray, rec: &HitRecord, scattered: &Ray) -> f32 {
[INFO] [stdout]     |                                  ^^^^ help: if this is intentional, prefix it with an underscore: `_r_in`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `albedo`
[INFO] [stdout]    --> src/material.rs:143:36
[INFO] [stdout]     |
[INFO] [stdout] 143 |             Material::Lambertian { albedo } => {
[INFO] [stdout]     |                                    ^^^^^^ help: try ignoring the field: `albedo: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]   --> src/objects/cube.rs:81:28
[INFO] [stdout]    |
[INFO] [stdout] 81 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]   --> src/objects/cube.rs:81:37
[INFO] [stdout]    |
[INFO] [stdout] 81 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]   --> src/objects/moving_sphere.rs:58:28
[INFO] [stdout]    |
[INFO] [stdout] 58 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]   --> src/objects/moving_sphere.rs:58:37
[INFO] [stdout]    |
[INFO] [stdout] 58 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]   --> src/objects/plane.rs:53:28
[INFO] [stdout]    |
[INFO] [stdout] 53 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]   --> src/objects/plane.rs:53:37
[INFO] [stdout]    |
[INFO] [stdout] 53 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]   --> src/objects/plane.rs:80:28
[INFO] [stdout]    |
[INFO] [stdout] 80 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]   --> src/objects/plane.rs:80:37
[INFO] [stdout]    |
[INFO] [stdout] 80 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]    --> src/objects/plane.rs:128:28
[INFO] [stdout]     |
[INFO] [stdout] 128 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/objects/plane.rs:128:37
[INFO] [stdout]     |
[INFO] [stdout] 128 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]   --> src/objects/sphere.rs:52:28
[INFO] [stdout]    |
[INFO] [stdout] 52 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]   --> src/objects/sphere.rs:52:37
[INFO] [stdout]    |
[INFO] [stdout] 52 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rec`
[INFO] [stdout]   --> src/objects/sphere.rs:60:19
[INFO] [stdout]    |
[INFO] [stdout] 60 |             Some((rec, material)) => {
[INFO] [stdout]    |                   ^^^ help: if this is intentional, prefix it with an underscore: `_rec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `material`
[INFO] [stdout]   --> src/objects/sphere.rs:60:24
[INFO] [stdout]    |
[INFO] [stdout] 60 |             Some((rec, material)) => {
[INFO] [stdout]    |                        ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_material`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `light_material`
[INFO] [stdout]   --> src/main.rs:47:9
[INFO] [stdout]    |
[INFO] [stdout] 47 |     let light_material = Material::DiffuseLight {
[INFO] [stdout]    |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_light_material`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nx`
[INFO] [stdout]   --> src/main.rs:79:10
[INFO] [stdout]    |
[INFO] [stdout] 79 |     let (nx, ny) = img.dimensions();
[INFO] [stdout]    |          ^^ help: if this is intentional, prefix it with an underscore: `_nx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ny`
[INFO] [stdout]   --> src/main.rs:79:14
[INFO] [stdout]    |
[INFO] [stdout] 79 |     let (nx, ny) = img.dimensions();
[INFO] [stdout]    |              ^^ help: if this is intentional, prefix it with an underscore: `_ny`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `aluminium`
[INFO] [stdout]    --> src/main.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 130 |     let aluminium: Material = Material::Metal {
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_aluminium`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `camera`
[INFO] [stdout]    --> src/main.rs:627:9
[INFO] [stdout]     |
[INFO] [stdout] 627 |     let camera: &Camera = &Camera::new(
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_camera`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `final_camera`
[INFO] [stdout]    --> src/main.rs:638:9
[INFO] [stdout]     |
[INFO] [stdout] 638 |     let final_camera: &Camera = &Camera::new(
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_final_camera`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_scene` is never used
[INFO] [stdout]   --> src/main.rs:44:4
[INFO] [stdout]    |
[INFO] [stdout] 44 | fn random_scene() -> Vec<Box<Hittable>> {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cornell_smoke` is never used
[INFO] [stdout]    --> src/main.rs:228:4
[INFO] [stdout]     |
[INFO] [stdout] 228 | fn cornell_smoke() -> Vec<Box<Hittable>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_scene2` is never used
[INFO] [stdout]    --> src/main.rs:339:4
[INFO] [stdout]     |
[INFO] [stdout] 339 | fn random_scene2() -> Vec<Box<Hittable>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `final_scene` is never used
[INFO] [stdout]    --> src/main.rs:398:4
[INFO] [stdout]     |
[INFO] [stdout] 398 | fn final_scene() -> Vec<Box<Hittable>> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `hit` is never used
[INFO] [stdout]   --> src/aabb.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl Aabb {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> bool {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `w` is never read
[INFO] [stdout]   --> src/camera.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct Camera {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 25 |     w: Vector3,
[INFO] [stdout]    |     ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Isotropic` is never constructed
[INFO] [stdout]   --> src/material.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub enum Material {
[INFO] [stdout]    |          -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 47 |     Isotropic { texture: Texture },
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Material` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BinaryTree` is never used
[INFO] [stdout]  --> src/objects/bvh_tree.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub enum BinaryTree {
[INFO] [stdout]   |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BvhTree` is never constructed
[INFO] [stdout]   --> src/objects/bvh_tree.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct BvhTree {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `box_x_compare` is never used
[INFO] [stdout]   --> src/objects/bvh_tree.rs:19:4
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn box_x_compare(a: &Box<Hittable>, b: &Box<Hittable>) -> Ordering {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `box_y_compare` is never used
[INFO] [stdout]   --> src/objects/bvh_tree.rs:37:4
[INFO] [stdout]    |
[INFO] [stdout] 37 | fn box_y_compare(a: &Box<Hittable>, b: &Box<Hittable>) -> Ordering {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `box_z_compare` is never used
[INFO] [stdout]   --> src/objects/bvh_tree.rs:55:4
[INFO] [stdout]    |
[INFO] [stdout] 55 | fn box_z_compare(a: &Box<Hittable>, b: &Box<Hittable>) -> Ordering {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/objects/bvh_tree.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | impl BvhTree {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 74 |     pub fn new(mut list: Vec<Box<Hittable>>, t0: f32, t1: f32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConstantMedium` is never constructed
[INFO] [stdout]   --> src/objects/constant_medium.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct ConstantMedium {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/objects/constant_medium.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl ConstantMedium {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 17 |     pub fn new(boundary: Box<Hittable>, density: f32, texture: Texture) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `material` is never read
[INFO] [stdout]   --> src/objects/cube.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Cube {
[INFO] [stdout]    |            ---- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub material: Material,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MovingSphere` is never constructed
[INFO] [stdout]  --> src/objects/moving_sphere.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct MovingSphere {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `center_at_time` and `get_sphere_uv` are never used
[INFO] [stdout]   --> src/objects/moving_sphere.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl MovingSphere {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] 19 |     pub fn center_at_time(&self, time: f32) -> Vector3 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn get_sphere_uv(&self, p: &Vector3) -> (f32, f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `local` is never used
[INFO] [stdout]   --> src/onb.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl ONB {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn local(&self, a: f32, b: f32, c: f32) -> Vector3 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `perlin_generate` is never used
[INFO] [stdout]   --> src/perlin.rs:26:4
[INFO] [stdout]    |
[INFO] [stdout] 26 | fn perlin_generate() -> [Vector3; 256] {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `permute` is never used
[INFO] [stdout]   --> src/perlin.rs:39:4
[INFO] [stdout]    |
[INFO] [stdout] 39 | fn permute(p: &mut [usize; 256]) {
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `perlin_generate_perm` is never used
[INFO] [stdout]   --> src/perlin.rs:49:4
[INFO] [stdout]    |
[INFO] [stdout] 49 | fn perlin_generate_perm() -> [usize; 256] {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/perlin.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 66 | impl Perlin {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 67 |     pub fn new() -> Perlin {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `CheckerTexture`, `NoiseTexture`, and `ImageTexture` are never constructed
[INFO] [stdout]   --> src/texture.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub enum Texture {
[INFO] [stdout]    |          ------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 10 |     CheckerTexture {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |     NoiseTexture {
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     ImageTexture {
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Texture` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/material.rs:38:25
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub pdf: Option<Box<PDF>>,
[INFO] [stdout]    |                         ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 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] 38 |     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/modifiers/flip_normals.rs:7:17
[INFO] [stdout]   |
[INFO] [stdout] 7 |     object: Box<Hittable>
[INFO] [stdout]   |                 ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-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 |     object: Box<dyn Hittable>
[INFO] [stdout]   |                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/modifiers/rotate.rs:10:21
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub object: Box<Hittable>,
[INFO] [stdout]    |                     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub object: Box<dyn Hittable>,
[INFO] [stdout]    |                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/modifiers/translate.rs:8:21
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub object: Box<Hittable>,
[INFO] [stdout]   |                     ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-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 object: Box<dyn Hittable>,
[INFO] [stdout]   |                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/bvh_tree.rs:10:14
[INFO] [stdout]    |
[INFO] [stdout] 10 |     Leaf(Box<Hittable>),
[INFO] [stdout]    |              ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 10 |     Leaf(Box<dyn Hittable>),
[INFO] [stdout]    |              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/constant_medium.rs:11:19
[INFO] [stdout]    |
[INFO] [stdout] 11 |     boundary: Box<Hittable>,
[INFO] [stdout]    |                   ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     boundary: Box<dyn Hittable>,
[INFO] [stdout]    |                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/object_list.rs:10:23
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub list: Vec<Box<Hittable>>,
[INFO] [stdout]    |                       ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 10 |     pub list: Vec<Box<dyn Hittable>>,
[INFO] [stdout]    |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/pdf.rs:40:23
[INFO] [stdout]    |
[INFO] [stdout] 40 |     pub hittable: Box<Hittable>,
[INFO] [stdout]    |                       ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 40 |     pub hittable: Box<dyn Hittable>,
[INFO] [stdout]    |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/pdf.rs:53:15
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pdf: [Box<PDF>; 2],
[INFO] [stdout]    |               ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 53 |     pdf: [Box<dyn PDF>; 2],
[INFO] [stdout]    |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/bvh_tree.rs:19:26
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn box_x_compare(a: &Box<Hittable>, b: &Box<Hittable>) -> Ordering {
[INFO] [stdout]    |                          ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn box_x_compare(a: &Box<dyn Hittable>, b: &Box<Hittable>) -> Ordering {
[INFO] [stdout]    |                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/bvh_tree.rs:19:45
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn box_x_compare(a: &Box<Hittable>, b: &Box<Hittable>) -> Ordering {
[INFO] [stdout]    |                                             ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn box_x_compare(a: &Box<Hittable>, b: &Box<dyn Hittable>) -> Ordering {
[INFO] [stdout]    |                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/bvh_tree.rs:37:26
[INFO] [stdout]    |
[INFO] [stdout] 37 | fn box_y_compare(a: &Box<Hittable>, b: &Box<Hittable>) -> Ordering {
[INFO] [stdout]    |                          ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 37 | fn box_y_compare(a: &Box<dyn Hittable>, b: &Box<Hittable>) -> Ordering {
[INFO] [stdout]    |                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/bvh_tree.rs:37:45
[INFO] [stdout]    |
[INFO] [stdout] 37 | fn box_y_compare(a: &Box<Hittable>, b: &Box<Hittable>) -> Ordering {
[INFO] [stdout]    |                                             ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 37 | fn box_y_compare(a: &Box<Hittable>, b: &Box<dyn Hittable>) -> Ordering {
[INFO] [stdout]    |                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/bvh_tree.rs:55:26
[INFO] [stdout]    |
[INFO] [stdout] 55 | fn box_z_compare(a: &Box<Hittable>, b: &Box<Hittable>) -> Ordering {
[INFO] [stdout]    |                          ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 55 | fn box_z_compare(a: &Box<dyn Hittable>, b: &Box<Hittable>) -> Ordering {
[INFO] [stdout]    |                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/bvh_tree.rs:55:45
[INFO] [stdout]    |
[INFO] [stdout] 55 | fn box_z_compare(a: &Box<Hittable>, b: &Box<Hittable>) -> Ordering {
[INFO] [stdout]    |                                             ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 55 | fn box_z_compare(a: &Box<Hittable>, b: &Box<dyn Hittable>) -> Ordering {
[INFO] [stdout]    |                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/main.rs:44:30
[INFO] [stdout]    |
[INFO] [stdout] 44 | fn random_scene() -> Vec<Box<Hittable>> {
[INFO] [stdout]    |                              ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 44 | fn random_scene() -> Vec<Box<dyn Hittable>> {
[INFO] [stdout]    |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:107:41
[INFO] [stdout]     |
[INFO] [stdout] 107 | fn cornell_box(aspect: f32) -> (Vec<Box<Hittable>>, Camera) {
[INFO] [stdout]     |                                         ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 107 | fn cornell_box(aspect: f32) -> (Vec<Box<dyn Hittable>>, Camera) {
[INFO] [stdout]     |                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:228:31
[INFO] [stdout]     |
[INFO] [stdout] 228 | fn cornell_smoke() -> Vec<Box<Hittable>> {
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 228 | fn cornell_smoke() -> Vec<Box<dyn Hittable>> {
[INFO] [stdout]     |                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:339:31
[INFO] [stdout]     |
[INFO] [stdout] 339 | fn random_scene2() -> Vec<Box<Hittable>> {
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 339 | fn random_scene2() -> Vec<Box<dyn Hittable>> {
[INFO] [stdout]     |                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:398:29
[INFO] [stdout]     |
[INFO] [stdout] 398 | fn final_scene() -> Vec<Box<Hittable>> {
[INFO] [stdout]     |                             ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 398 | fn final_scene() -> Vec<Box<dyn Hittable>> {
[INFO] [stdout]     |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/modifiers/flip_normals.rs:11:28
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(object: Box<Hittable>) -> Self {
[INFO] [stdout]    |                            ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 11 |     pub fn new(object: Box<dyn Hittable>) -> Self {
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/modifiers/rotate.rs:17:28
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new(object: Box<Hittable>, angle: f32) -> Self {
[INFO] [stdout]    |                            ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new(object: Box<dyn Hittable>, angle: f32) -> Self {
[INFO] [stdout]    |                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/bvh_tree.rs:74:34
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub fn new(mut list: Vec<Box<Hittable>>, t0: f32, t1: f32) -> Self {
[INFO] [stdout]    |                                  ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub fn new(mut list: Vec<Box<dyn Hittable>>, t0: f32, t1: f32) -> Self {
[INFO] [stdout]    |                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/constant_medium.rs:17:30
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new(boundary: Box<Hittable>, density: f32, texture: Texture) -> Self {
[INFO] [stdout]    |                              ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new(boundary: Box<dyn Hittable>, density: f32, texture: Texture) -> Self {
[INFO] [stdout]    |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/object_list.rs:14:30
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn new(list: Vec<Box<Hittable>>) -> Self {
[INFO] [stdout]    |                              ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-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 |     pub fn new(list: Vec<Box<dyn Hittable>>) -> Self {
[INFO] [stdout]    |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/pdf.rs:57:24
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn new(p0: Box<PDF>, p1: Box<PDF>) -> Self {
[INFO] [stdout]    |                        ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn new(p0: Box<dyn PDF>, p1: Box<PDF>) -> Self {
[INFO] [stdout]    |                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/pdf.rs:57:38
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn new(p0: Box<PDF>, p1: Box<PDF>) -> Self {
[INFO] [stdout]    |                                      ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 57 |     pub fn new(p0: Box<PDF>, p1: Box<dyn PDF>) -> Self {
[INFO] [stdout]    |                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/bvh_tree.rs:98:39
[INFO] [stdout]    |
[INFO] [stdout] 98 |                 let mut vec1: Vec<Box<Hittable>> = Vec::with_capacity(list_length / 2 + 1);
[INFO] [stdout]    |                                       ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-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 |                 let mut vec1: Vec<Box<dyn Hittable>> = Vec::with_capacity(list_length / 2 + 1);
[INFO] [stdout]    |                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/bvh_tree.rs:99:39
[INFO] [stdout]    |
[INFO] [stdout] 99 |                 let mut vec2: Vec<Box<Hittable>> = Vec::with_capacity(list_length / 2);
[INFO] [stdout]    |                                       ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-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 |                 let mut vec2: Vec<Box<dyn Hittable>> = Vec::with_capacity(list_length / 2);
[INFO] [stdout]    |                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/objects/cube.rs:19:31
[INFO] [stdout]    |
[INFO] [stdout] 19 |         let mut list: Vec<Box<Hittable>> = Vec::with_capacity(6);
[INFO] [stdout]    |                               ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-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 |         let mut list: Vec<Box<dyn Hittable>> = Vec::with_capacity(6);
[INFO] [stdout]    |                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/main.rs:46:34
[INFO] [stdout]    |
[INFO] [stdout] 46 |     let mut object_list: Vec<Box<Hittable>> = Vec::with_capacity(n + 1);
[INFO] [stdout]    |                                  ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 46 |     let mut object_list: Vec<Box<dyn Hittable>> = Vec::with_capacity(n + 1);
[INFO] [stdout]    |                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:109:34
[INFO] [stdout]     |
[INFO] [stdout] 109 |     let mut object_list: Vec<Box<Hittable>> = Vec::with_capacity(n + 1);
[INFO] [stdout]     |                                  ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 109 |     let mut object_list: Vec<Box<dyn Hittable>> = Vec::with_capacity(n + 1);
[INFO] [stdout]     |                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:230:34
[INFO] [stdout]     |
[INFO] [stdout] 230 |     let mut object_list: Vec<Box<Hittable>> = Vec::with_capacity(n + 1);
[INFO] [stdout]     |                                  ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 230 |     let mut object_list: Vec<Box<dyn Hittable>> = Vec::with_capacity(n + 1);
[INFO] [stdout]     |                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:341:34
[INFO] [stdout]     |
[INFO] [stdout] 341 |     let mut object_list: Vec<Box<Hittable>> = Vec::with_capacity(n + 1);
[INFO] [stdout]     |                                  ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 341 |     let mut object_list: Vec<Box<dyn Hittable>> = Vec::with_capacity(n + 1);
[INFO] [stdout]     |                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:399:27
[INFO] [stdout]     |
[INFO] [stdout] 399 |     let mut list: Vec<Box<Hittable>> = Vec::with_capacity(30);
[INFO] [stdout]     |                           ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 399 |     let mut list: Vec<Box<dyn Hittable>> = Vec::with_capacity(30);
[INFO] [stdout]     |                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:400:30
[INFO] [stdout]     |
[INFO] [stdout] 400 |     let mut boxlist: Vec<Box<Hittable>> = Vec::with_capacity(10000);
[INFO] [stdout]     |                              ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 400 |     let mut boxlist: Vec<Box<dyn Hittable>> = Vec::with_capacity(10000);
[INFO] [stdout]     |                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/main.rs:401:31
[INFO] [stdout]     |
[INFO] [stdout] 401 |     let mut boxlist2: Vec<Box<Hittable>> = Vec::with_capacity(10000);
[INFO] [stdout]     |                               ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 401 |     let mut boxlist2: Vec<Box<dyn Hittable>> = Vec::with_capacity(10000);
[INFO] [stdout]     |                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `o`
[INFO] [stdout]   --> src/hittable.rs:23:25
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn pdf_value(&self, o: Vector3, v: Vector3) -> f32 {
[INFO] [stdout]    |                         ^ help: if this is intentional, prefix it with an underscore: `_o`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]   --> src/hittable.rs:23:37
[INFO] [stdout]    |
[INFO] [stdout] 23 |     fn pdf_value(&self, o: Vector3, v: Vector3) -> f32 {
[INFO] [stdout]    |                                     ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `o`
[INFO] [stdout]   --> src/hittable.rs:26:22
[INFO] [stdout]    |
[INFO] [stdout] 26 |     fn random(&self, o: Vector3) -> Vector3 {
[INFO] [stdout]    |                      ^ help: if this is intentional, prefix it with an underscore: `_o`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `scattered_direction`
[INFO] [stdout]   --> src/material.rs:57:21
[INFO] [stdout]    |
[INFO] [stdout] 57 |                 let scattered_direction = scattered.direction();
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_scattered_direction`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `target`
[INFO] [stdout]    --> src/material.rs:129:21
[INFO] [stdout]     |
[INFO] [stdout] 129 |                 let target: Vector3 = rec.p + rec.normal + random_on_unit_sphere();
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_target`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `r_in`
[INFO] [stdout]    --> src/material.rs:141:34
[INFO] [stdout]     |
[INFO] [stdout] 141 |     pub fn scattering_pdf(&self, r_in: &Ray, rec: &HitRecord, scattered: &Ray) -> f32 {
[INFO] [stdout]     |                                  ^^^^ help: if this is intentional, prefix it with an underscore: `_r_in`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `albedo`
[INFO] [stdout]    --> src/material.rs:143:36
[INFO] [stdout]     |
[INFO] [stdout] 143 |             Material::Lambertian { albedo } => {
[INFO] [stdout]     |                                    ^^^^^^ help: try ignoring the field: `albedo: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]   --> src/objects/cube.rs:81:28
[INFO] [stdout]    |
[INFO] [stdout] 81 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]   --> src/objects/cube.rs:81:37
[INFO] [stdout]    |
[INFO] [stdout] 81 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]   --> src/objects/moving_sphere.rs:58:28
[INFO] [stdout]    |
[INFO] [stdout] 58 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]   --> src/objects/moving_sphere.rs:58:37
[INFO] [stdout]    |
[INFO] [stdout] 58 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]   --> src/objects/plane.rs:53:28
[INFO] [stdout]    |
[INFO] [stdout] 53 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]   --> src/objects/plane.rs:53:37
[INFO] [stdout]    |
[INFO] [stdout] 53 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]   --> src/objects/plane.rs:80:28
[INFO] [stdout]    |
[INFO] [stdout] 80 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]   --> src/objects/plane.rs:80:37
[INFO] [stdout]    |
[INFO] [stdout] 80 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]    --> src/objects/plane.rs:128:28
[INFO] [stdout]     |
[INFO] [stdout] 128 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/objects/plane.rs:128:37
[INFO] [stdout]     |
[INFO] [stdout] 128 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]     |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]   --> src/objects/sphere.rs:52:28
[INFO] [stdout]    |
[INFO] [stdout] 52 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]   --> src/objects/sphere.rs:52:37
[INFO] [stdout]    |
[INFO] [stdout] 52 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<Aabb> {
[INFO] [stdout]    |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rec`
[INFO] [stdout]   --> src/objects/sphere.rs:60:19
[INFO] [stdout]    |
[INFO] [stdout] 60 |             Some((rec, material)) => {
[INFO] [stdout]    |                   ^^^ help: if this is intentional, prefix it with an underscore: `_rec`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `material`
[INFO] [stdout]   --> src/objects/sphere.rs:60:24
[INFO] [stdout]    |
[INFO] [stdout] 60 |             Some((rec, material)) => {
[INFO] [stdout]    |                        ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_material`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `light_material`
[INFO] [stdout]   --> src/main.rs:47:9
[INFO] [stdout]    |
[INFO] [stdout] 47 |     let light_material = Material::DiffuseLight {
[INFO] [stdout]    |         ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_light_material`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `nx`
[INFO] [stdout]   --> src/main.rs:79:10
[INFO] [stdout]    |
[INFO] [stdout] 79 |     let (nx, ny) = img.dimensions();
[INFO] [stdout]    |          ^^ help: if this is intentional, prefix it with an underscore: `_nx`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ny`
[INFO] [stdout]   --> src/main.rs:79:14
[INFO] [stdout]    |
[INFO] [stdout] 79 |     let (nx, ny) = img.dimensions();
[INFO] [stdout]    |              ^^ help: if this is intentional, prefix it with an underscore: `_ny`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `aluminium`
[INFO] [stdout]    --> src/main.rs:130:9
[INFO] [stdout]     |
[INFO] [stdout] 130 |     let aluminium: Material = Material::Metal {
[INFO] [stdout]     |         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_aluminium`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `camera`
[INFO] [stdout]    --> src/main.rs:627:9
[INFO] [stdout]     |
[INFO] [stdout] 627 |     let camera: &Camera = &Camera::new(
[INFO] [stdout]     |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_camera`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `final_camera`
[INFO] [stdout]    --> src/main.rs:638:9
[INFO] [stdout]     |
[INFO] [stdout] 638 |     let final_camera: &Camera = &Camera::new(
[INFO] [stdout]     |         ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_final_camera`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_scene` is never used
[INFO] [stdout]   --> src/main.rs:44:4
[INFO] [stdout]    |
[INFO] [stdout] 44 | fn random_scene() -> Vec<Box<Hittable>> {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cornell_smoke` is never used
[INFO] [stdout]    --> src/main.rs:228:4
[INFO] [stdout]     |
[INFO] [stdout] 228 | fn cornell_smoke() -> Vec<Box<Hittable>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_scene2` is never used
[INFO] [stdout]    --> src/main.rs:339:4
[INFO] [stdout]     |
[INFO] [stdout] 339 | fn random_scene2() -> Vec<Box<Hittable>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `final_scene` is never used
[INFO] [stdout]    --> src/main.rs:398:4
[INFO] [stdout]     |
[INFO] [stdout] 398 | fn final_scene() -> Vec<Box<Hittable>> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `hit` is never used
[INFO] [stdout]   --> src/aabb.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl Aabb {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> bool {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `w` is never read
[INFO] [stdout]   --> src/camera.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub struct Camera {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 25 |     w: Vector3,
[INFO] [stdout]    |     ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Isotropic` is never constructed
[INFO] [stdout]   --> src/material.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub enum Material {
[INFO] [stdout]    |          -------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 47 |     Isotropic { texture: Texture },
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Material` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `BinaryTree` is never used
[INFO] [stdout]  --> src/objects/bvh_tree.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub enum BinaryTree {
[INFO] [stdout]   |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BvhTree` is never constructed
[INFO] [stdout]   --> src/objects/bvh_tree.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct BvhTree {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `box_x_compare` is never used
[INFO] [stdout]   --> src/objects/bvh_tree.rs:19:4
[INFO] [stdout]    |
[INFO] [stdout] 19 | fn box_x_compare(a: &Box<Hittable>, b: &Box<Hittable>) -> Ordering {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `box_y_compare` is never used
[INFO] [stdout]   --> src/objects/bvh_tree.rs:37:4
[INFO] [stdout]    |
[INFO] [stdout] 37 | fn box_y_compare(a: &Box<Hittable>, b: &Box<Hittable>) -> Ordering {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `box_z_compare` is never used
[INFO] [stdout]   --> src/objects/bvh_tree.rs:55:4
[INFO] [stdout]    |
[INFO] [stdout] 55 | fn box_z_compare(a: &Box<Hittable>, b: &Box<Hittable>) -> Ordering {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/objects/bvh_tree.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | impl BvhTree {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 74 |     pub fn new(mut list: Vec<Box<Hittable>>, t0: f32, t1: f32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ConstantMedium` is never constructed
[INFO] [stdout]   --> src/objects/constant_medium.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct ConstantMedium {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/objects/constant_medium.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl ConstantMedium {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 17 |     pub fn new(boundary: Box<Hittable>, density: f32, texture: Texture) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `material` is never read
[INFO] [stdout]   --> src/objects/cube.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Cube {
[INFO] [stdout]    |            ---- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub material: Material,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MovingSphere` is never constructed
[INFO] [stdout]  --> src/objects/moving_sphere.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct MovingSphere {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `center_at_time` and `get_sphere_uv` are never used
[INFO] [stdout]   --> src/objects/moving_sphere.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl MovingSphere {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] 19 |     pub fn center_at_time(&self, time: f32) -> Vector3 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn get_sphere_uv(&self, p: &Vector3) -> (f32, f32) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `local` is never used
[INFO] [stdout]   --> src/onb.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl ONB {
[INFO] [stdout]    | -------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn local(&self, a: f32, b: f32, c: f32) -> Vector3 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `perlin_generate` is never used
[INFO] [stdout]   --> src/perlin.rs:26:4
[INFO] [stdout]    |
[INFO] [stdout] 26 | fn perlin_generate() -> [Vector3; 256] {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `permute` is never used
[INFO] [stdout]   --> src/perlin.rs:39:4
[INFO] [stdout]    |
[INFO] [stdout] 39 | fn permute(p: &mut [usize; 256]) {
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `perlin_generate_perm` is never used
[INFO] [stdout]   --> src/perlin.rs:49:4
[INFO] [stdout]    |
[INFO] [stdout] 49 | fn perlin_generate_perm() -> [usize; 256] {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/perlin.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 66 | impl Perlin {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 67 |     pub fn new() -> Perlin {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `CheckerTexture`, `NoiseTexture`, and `ImageTexture` are never constructed
[INFO] [stdout]   --> src/texture.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub enum Texture {
[INFO] [stdout]    |          ------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 10 |     CheckerTexture {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |     NoiseTexture {
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     ImageTexture {
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Texture` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 8.70s
[INFO] running `Command { std: "docker" "inspect" "390b51a42c9f77b0d7a11bd2556d3557a8a06f573e1bd8daa589b8b457994933", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "390b51a42c9f77b0d7a11bd2556d3557a8a06f573e1bd8daa589b8b457994933", kill_on_drop: false }`
[INFO] [stdout] 390b51a42c9f77b0d7a11bd2556d3557a8a06f573e1bd8daa589b8b457994933
