[INFO] cloning repository https://github.com/dontpanic92/urender
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/dontpanic92/urender" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdontpanic92%2Furender", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdontpanic92%2Furender'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 3fd84ca96b75d322503a56288a111b16c18e562f
[INFO] testing dontpanic92/urender against beta-2023-04-20 for beta-1.70-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fdontpanic92%2Furender" "/workspace/builds/worker-0-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc2/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/dontpanic92/urender on toolchain beta-2023-04-20
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2023-04-20" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/dontpanic92/urender
[INFO] finished tweaking git repo https://github.com/dontpanic92/urender
[INFO] tweaked toml for git repo https://github.com/dontpanic92/urender written to /workspace/builds/worker-0-tc2/source/Cargo.toml
[INFO] crate git repo https://github.com/dontpanic92/urender 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" "+beta-2023-04-20" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded fuchsia-zircon-sys v0.3.2
[INFO] [stderr]   Downloaded bmp v0.1.4
[INFO] [stderr]   Downloaded minidom v0.7.0
[INFO] [stderr]   Downloaded fuchsia-zircon v0.3.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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:5ff2268d62e97bff2cde7d5815dd6ed5b47097566f13b8d0ca110b04b60e07ed" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2023-04-20" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] c96ea129f680eebff6c03591c4dc4423e37c09afe2d303f94c1fbd8c77e5e063
[INFO] running `Command { std: "docker" "start" "-a" "c96ea129f680eebff6c03591c4dc4423e37c09afe2d303f94c1fbd8c77e5e063", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "c96ea129f680eebff6c03591c4dc4423e37c09afe2d303f94c1fbd8c77e5e063", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "c96ea129f680eebff6c03591c4dc4423e37c09afe2d303f94c1fbd8c77e5e063", kill_on_drop: false }`
[INFO] [stdout] c96ea129f680eebff6c03591c4dc4423e37c09afe2d303f94c1fbd8c77e5e063
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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:5ff2268d62e97bff2cde7d5815dd6ed5b47097566f13b8d0ca110b04b60e07ed" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2023-04-20" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 3c589aaaf538bd22ce5faa6bacadd8ff98fbf4ff247f47c7aa995006ade01c05
[INFO] running `Command { std: "docker" "start" "-a" "3c589aaaf538bd22ce5faa6bacadd8ff98fbf4ff247f47c7aa995006ade01c05", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.34
[INFO] [stderr]    Compiling cc v1.0.4
[INFO] [stderr]    Compiling cfg-if v0.1.2
[INFO] [stderr]    Compiling rustc-demangle v0.1.5
[INFO] [stderr]    Compiling byteorder v0.3.13
[INFO] [stderr]    Compiling encoding_rs v0.7.1
[INFO] [stderr]    Compiling bmp v0.1.4
[INFO] [stderr]    Compiling memchr v2.0.1
[INFO] [stderr]    Compiling rand v0.4.1
[INFO] [stderr]    Compiling backtrace-sys v0.1.16
[INFO] [stderr]    Compiling backtrace v0.3.5
[INFO] [stderr]    Compiling error-chain v0.11.0
[INFO] [stderr]    Compiling quick-xml v0.10.1
[INFO] [stderr]    Compiling minidom v0.7.0
[INFO] [stderr]    Compiling urender v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]   --> src/geometry/cylinder.rs:45:42
[INFO] [stdout]    |
[INFO] [stdout] 45 |         let b = (v - v.dot(va) * va).dot((deltap - deltap.dot(va) * va)) * 2.;
[INFO] [stdout]    |                                          ^                            ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 45 -         let b = (v - v.dot(va) * va).dot((deltap - deltap.dot(va) * va)) * 2.;
[INFO] [stdout] 45 +         let b = (v - v.dot(va) * va).dot(deltap - deltap.dot(va) * va) * 2.;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> src/geometry/aabox.rs:61:77
[INFO] [stdout]    |
[INFO] [stdout] 61 |                ($x.$func() - ray.origin().$func()) / ray.direction().$func();
[INFO] [stdout]    |                                                                             ^
[INFO] [stdout] ...
[INFO] [stdout] 75 |         calc_t!(tx_min, tx_max, x);
[INFO] [stdout]    |         -------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: `#[warn(semicolon_in_expressions_from_macros)]` on by default
[INFO] [stdout]    = note: this warning originates in the macro `calc_t` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> src/geometry/aabox.rs:61:77
[INFO] [stdout]    |
[INFO] [stdout] 61 |                ($x.$func() - ray.origin().$func()) / ray.direction().$func();
[INFO] [stdout]    |                                                                             ^
[INFO] [stdout] ...
[INFO] [stdout] 75 |         calc_t!(tx_min, tx_max, x);
[INFO] [stdout]    |         -------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: this warning originates in the macro `calc_t` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> src/geometry/aabox.rs:61:77
[INFO] [stdout]    |
[INFO] [stdout] 61 |                ($x.$func() - ray.origin().$func()) / ray.direction().$func();
[INFO] [stdout]    |                                                                             ^
[INFO] [stdout] ...
[INFO] [stdout] 75 |         calc_t!(tx_min, tx_max, x);
[INFO] [stdout]    |         -------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: this warning originates in the macro `calc_t` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> src/geometry/aabox.rs:61:77
[INFO] [stdout]    |
[INFO] [stdout] 61 |                ($x.$func() - ray.origin().$func()) / ray.direction().$func();
[INFO] [stdout]    |                                                                             ^
[INFO] [stdout] ...
[INFO] [stdout] 75 |         calc_t!(tx_min, tx_max, x);
[INFO] [stdout]    |         -------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: this warning originates in the macro `calc_t` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> src/geometry/aabox.rs:61:77
[INFO] [stdout]    |
[INFO] [stdout] 61 |                ($x.$func() - ray.origin().$func()) / ray.direction().$func();
[INFO] [stdout]    |                                                                             ^
[INFO] [stdout] ...
[INFO] [stdout] 76 |         calc_t!(ty_min, ty_max, y);
[INFO] [stdout]    |         -------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: this warning originates in the macro `calc_t` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> src/geometry/aabox.rs:61:77
[INFO] [stdout]    |
[INFO] [stdout] 61 |                ($x.$func() - ray.origin().$func()) / ray.direction().$func();
[INFO] [stdout]    |                                                                             ^
[INFO] [stdout] ...
[INFO] [stdout] 76 |         calc_t!(ty_min, ty_max, y);
[INFO] [stdout]    |         -------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: this warning originates in the macro `calc_t` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> src/geometry/aabox.rs:61:77
[INFO] [stdout]    |
[INFO] [stdout] 61 |                ($x.$func() - ray.origin().$func()) / ray.direction().$func();
[INFO] [stdout]    |                                                                             ^
[INFO] [stdout] ...
[INFO] [stdout] 76 |         calc_t!(ty_min, ty_max, y);
[INFO] [stdout]    |         -------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: this warning originates in the macro `calc_t` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> src/geometry/aabox.rs:61:77
[INFO] [stdout]    |
[INFO] [stdout] 61 |                ($x.$func() - ray.origin().$func()) / ray.direction().$func();
[INFO] [stdout]    |                                                                             ^
[INFO] [stdout] ...
[INFO] [stdout] 76 |         calc_t!(ty_min, ty_max, y);
[INFO] [stdout]    |         -------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: this warning originates in the macro `calc_t` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> src/geometry/aabox.rs:61:77
[INFO] [stdout]    |
[INFO] [stdout] 61 |                ($x.$func() - ray.origin().$func()) / ray.direction().$func();
[INFO] [stdout]    |                                                                             ^
[INFO] [stdout] ...
[INFO] [stdout] 77 |         calc_t!(tz_min, tz_max, z);
[INFO] [stdout]    |         -------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: this warning originates in the macro `calc_t` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> src/geometry/aabox.rs:61:77
[INFO] [stdout]    |
[INFO] [stdout] 61 |                ($x.$func() - ray.origin().$func()) / ray.direction().$func();
[INFO] [stdout]    |                                                                             ^
[INFO] [stdout] ...
[INFO] [stdout] 77 |         calc_t!(tz_min, tz_max, z);
[INFO] [stdout]    |         -------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: this warning originates in the macro `calc_t` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> src/geometry/aabox.rs:61:77
[INFO] [stdout]    |
[INFO] [stdout] 61 |                ($x.$func() - ray.origin().$func()) / ray.direction().$func();
[INFO] [stdout]    |                                                                             ^
[INFO] [stdout] ...
[INFO] [stdout] 77 |         calc_t!(tz_min, tz_max, z);
[INFO] [stdout]    |         -------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: this warning originates in the macro `calc_t` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> src/geometry/aabox.rs:61:77
[INFO] [stdout]    |
[INFO] [stdout] 61 |                ($x.$func() - ray.origin().$func()) / ray.direction().$func();
[INFO] [stdout]    |                                                                             ^
[INFO] [stdout] ...
[INFO] [stdout] 77 |         calc_t!(tz_min, tz_max, z);
[INFO] [stdout]    |         -------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: this warning originates in the macro `calc_t` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/world/world.rs:17:22
[INFO] [stdout]    |
[INFO] [stdout] 17 |     objects: Vec<Box<GeometricObject>>,
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     objects: Vec<Box<dyn GeometricObject>>,
[INFO] [stdout]    |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/world/world.rs:18:21
[INFO] [stdout]    |
[INFO] [stdout] 18 |     lights: Vec<Box<Light>>,
[INFO] [stdout]    |                     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 18 |     lights: Vec<Box<dyn Light>>,
[INFO] [stdout]    |                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/world/world.rs:19:36
[INFO] [stdout]    |
[INFO] [stdout] 19 |     materials: HashMap<String, Box<Material>>,
[INFO] [stdout]    |                                    ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 19 |     materials: HashMap<String, Box<dyn Material>>,
[INFO] [stdout]    |                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/world/world.rs:20:24
[INFO] [stdout]    |
[INFO] [stdout] 20 |     ambient_light: Box<Light>,
[INFO] [stdout]    |                        ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 20 |     ambient_light: Box<dyn Light>,
[INFO] [stdout]    |                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/world/world.rs:21:17
[INFO] [stdout]    |
[INFO] [stdout] 21 |     tracer: Box<Tracer>,
[INFO] [stdout]    |                 ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 21 |     tracer: Box<dyn Tracer>,
[INFO] [stdout]    |                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/camera/pinhole_camera.rs:15:18
[INFO] [stdout]    |
[INFO] [stdout] 15 |     sampler: Box<Sampler>
[INFO] [stdout]    |                  ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 15 |     sampler: Box<dyn Sampler>
[INFO] [stdout]    |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/light/ambient_occluder.rs:8:18
[INFO] [stdout]   |
[INFO] [stdout] 8 |     sampler: Box<Sampler>,
[INFO] [stdout]   |                  ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 8 |     sampler: Box<dyn Sampler>,
[INFO] [stdout]   |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/world/world.rs:44:46
[INFO] [stdout]    |
[INFO] [stdout] 44 |     pub fn add_object(&mut self, object: Box<GeometricObject>) {
[INFO] [stdout]    |                                              ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 44 |     pub fn add_object(&mut self, object: Box<dyn GeometricObject>) {
[INFO] [stdout]    |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/world/world.rs:48:44
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub fn add_light(&mut self, light: Box<Light>) {
[INFO] [stdout]    |                                            ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub fn add_light(&mut self, light: Box<dyn Light>) {
[INFO] [stdout]    |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/world/world.rs:74:41
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub fn ambient_light(&self) -> &Box<Light> {
[INFO] [stdout]    |                                         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub fn ambient_light(&self) -> &Box<dyn Light> {
[INFO] [stdout]    |                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/world/world.rs:78:38
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub fn lights(&self) -> &Vec<Box<Light>> {
[INFO] [stdout]    |                                      ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub fn lights(&self) -> &Vec<Box<dyn Light>> {
[INFO] [stdout]    |                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/world/world.rs:86:56
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub fn material(&self, material_name: &String) -> &Material {
[INFO] [stdout]    |                                                        ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub fn material(&self, material_name: &String) -> &dyn Material {
[INFO] [stdout]    |                                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/utility/rgb_color.rs:21:56
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn from_hex(hex: &str) -> Result<RGBColor, Box<Error>> {
[INFO] [stdout]    |                                                        ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn from_hex(hex: &str) -> Result<RGBColor, Box<dyn Error>> {
[INFO] [stdout]    |                                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/utility/error.rs:20:32
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn cause(&self) -> Option<&StdError> {
[INFO] [stdout]    |                                ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn cause(&self) -> Option<&dyn StdError> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/mod.rs:22:52
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn create_geometry(geometry_type: &str, dict: &Dictionary) -> Result<Box<GeometricObject>, Box<Error>> {
[INFO] [stdout]    |                                                    ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn create_geometry(geometry_type: &str, dict: &dyn Dictionary) -> Result<Box<GeometricObject>, Box<Error>> {
[INFO] [stdout]    |                                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/mod.rs:22:78
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn create_geometry(geometry_type: &str, dict: &Dictionary) -> Result<Box<GeometricObject>, Box<Error>> {
[INFO] [stdout]    |                                                                              ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn create_geometry(geometry_type: &str, dict: &Dictionary) -> Result<Box<dyn GeometricObject>, Box<Error>> {
[INFO] [stdout]    |                                                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/mod.rs:22:100
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn create_geometry(geometry_type: &str, dict: &Dictionary) -> Result<Box<GeometricObject>, Box<Error>> {
[INFO] [stdout]    |                                                                                                    ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn create_geometry(geometry_type: &str, dict: &Dictionary) -> Result<Box<GeometricObject>, Box<dyn Error>> {
[INFO] [stdout]    |                                                                                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/sphere.rs:19:33
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new_from_dict(dict: &Dictionary) -> Result<Sphere, Box<Error>> {
[INFO] [stdout]    |                                 ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new_from_dict(dict: &dyn Dictionary) -> Result<Sphere, Box<Error>> {
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/sphere.rs:19:67
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new_from_dict(dict: &Dictionary) -> Result<Sphere, Box<Error>> {
[INFO] [stdout]    |                                                                   ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new_from_dict(dict: &Dictionary) -> Result<Sphere, Box<dyn Error>> {
[INFO] [stdout]    |                                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/plane.rs:19:33
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new_from_dict(dict: &Dictionary) -> Result<Plane, Box<Error>> {
[INFO] [stdout]    |                                 ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new_from_dict(dict: &dyn Dictionary) -> Result<Plane, Box<Error>> {
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/plane.rs:19:66
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new_from_dict(dict: &Dictionary) -> Result<Plane, Box<Error>> {
[INFO] [stdout]    |                                                                  ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new_from_dict(dict: &Dictionary) -> Result<Plane, Box<dyn Error>> {
[INFO] [stdout]    |                                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/cylinder.rs:21:33
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn new_from_dict(dict: &Dictionary) -> Result<Cylinder, Box<Error>> {
[INFO] [stdout]    |                                 ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn new_from_dict(dict: &dyn Dictionary) -> Result<Cylinder, Box<Error>> {
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/cylinder.rs:21:69
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn new_from_dict(dict: &Dictionary) -> Result<Cylinder, Box<Error>> {
[INFO] [stdout]    |                                                                     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn new_from_dict(dict: &Dictionary) -> Result<Cylinder, Box<dyn Error>> {
[INFO] [stdout]    |                                                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/disk.rs:21:33
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn new_from_dict(dict: &Dictionary) -> Result<Disk, Box<Error>> {
[INFO] [stdout]    |                                 ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn new_from_dict(dict: &dyn Dictionary) -> Result<Disk, Box<Error>> {
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/disk.rs:21:65
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn new_from_dict(dict: &Dictionary) -> Result<Disk, Box<Error>> {
[INFO] [stdout]    |                                                                 ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn new_from_dict(dict: &Dictionary) -> Result<Disk, Box<dyn Error>> {
[INFO] [stdout]    |                                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/aabox.rs:26:33
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub fn new_from_dict(dict: &Dictionary) -> Result<AABox, Box<Error>> {
[INFO] [stdout]    |                                 ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub fn new_from_dict(dict: &dyn Dictionary) -> Result<AABox, Box<Error>> {
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/aabox.rs:26:66
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub fn new_from_dict(dict: &Dictionary) -> Result<AABox, Box<Error>> {
[INFO] [stdout]    |                                                                  ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub fn new_from_dict(dict: &Dictionary) -> Result<AABox, Box<dyn Error>> {
[INFO] [stdout]    |                                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/camera/mod.rs:15:46
[INFO] [stdout]    |
[INFO] [stdout] 15 |     fn render(&self, world: &World, tracer: &Tracer) -> Image;
[INFO] [stdout]    |                                              ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 15 |     fn render(&self, world: &World, tracer: &dyn Tracer) -> Image;
[INFO] [stdout]    |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/camera/pinhole_camera.rs:23:33
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn new_from_dict(dict: &Dictionary) -> Result<PinholeCamera, Box<Error>> {
[INFO] [stdout]    |                                 ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn new_from_dict(dict: &dyn Dictionary) -> Result<PinholeCamera, Box<Error>> {
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/camera/pinhole_camera.rs:23:74
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn new_from_dict(dict: &Dictionary) -> Result<PinholeCamera, Box<Error>> {
[INFO] [stdout]    |                                                                          ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn new_from_dict(dict: &Dictionary) -> Result<PinholeCamera, Box<dyn Error>> {
[INFO] [stdout]    |                                                                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/camera/pinhole_camera.rs:38:46
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn render(&self, world: &World, tracer: &Tracer) -> Image {
[INFO] [stdout]    |                                              ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn render(&self, world: &World, tracer: &dyn Tracer) -> Image {
[INFO] [stdout]    |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/camera/orthographic_camera.rs:25:46
[INFO] [stdout]    |
[INFO] [stdout] 25 |     fn render(&self, world: &World, tracer: &Tracer) -> Image {
[INFO] [stdout]    |                                              ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 25 |     fn render(&self, world: &World, tracer: &dyn Tracer) -> Image {
[INFO] [stdout]    |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light/mod.rs:22:46
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn create_light(light_type: &str, dict: &Dictionary) -> Result<Box<Light>, Box<Error>> {
[INFO] [stdout]    |                                              ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn create_light(light_type: &str, dict: &dyn Dictionary) -> Result<Box<Light>, Box<Error>> {
[INFO] [stdout]    |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light/mod.rs:22:72
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn create_light(light_type: &str, dict: &Dictionary) -> Result<Box<Light>, Box<Error>> {
[INFO] [stdout]    |                                                                        ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn create_light(light_type: &str, dict: &Dictionary) -> Result<Box<dyn Light>, Box<Error>> {
[INFO] [stdout]    |                                                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light/mod.rs:22:84
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn create_light(light_type: &str, dict: &Dictionary) -> Result<Box<Light>, Box<Error>> {
[INFO] [stdout]    |                                                                                    ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn create_light(light_type: &str, dict: &Dictionary) -> Result<Box<Light>, Box<dyn Error>> {
[INFO] [stdout]    |                                                                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light/directional_light.rs:15:32
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub fn new_from_dict(map: &Dictionary) -> Result<DirectionalLight, Box<Error>> {
[INFO] [stdout]    |                                ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub fn new_from_dict(map: &dyn Dictionary) -> Result<DirectionalLight, Box<Error>> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light/directional_light.rs:15:76
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub fn new_from_dict(map: &Dictionary) -> Result<DirectionalLight, Box<Error>> {
[INFO] [stdout]    |                                                                            ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub fn new_from_dict(map: &Dictionary) -> Result<DirectionalLight, Box<dyn Error>> {
[INFO] [stdout]    |                                                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light/ambient_light.rs:14:32
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn new_from_dict(map: &Dictionary) -> Result<AmbientLight, Box<Error>> {
[INFO] [stdout]    |                                ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn new_from_dict(map: &dyn Dictionary) -> Result<AmbientLight, Box<Error>> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light/ambient_light.rs:14:72
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn new_from_dict(map: &Dictionary) -> Result<AmbientLight, Box<Error>> {
[INFO] [stdout]    |                                                                        ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn new_from_dict(map: &Dictionary) -> Result<AmbientLight, Box<dyn Error>> {
[INFO] [stdout]    |                                                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light/ambient_occluder.rs:17:32
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new_from_dict(map: &Dictionary) -> Result<AmbientOccluder, Box<Error>> {
[INFO] [stdout]    |                                ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new_from_dict(map: &dyn Dictionary) -> Result<AmbientOccluder, Box<Error>> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light/ambient_occluder.rs:17:75
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new_from_dict(map: &Dictionary) -> Result<AmbientOccluder, Box<Error>> {
[INFO] [stdout]    |                                                                           ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new_from_dict(map: &Dictionary) -> Result<AmbientOccluder, Box<dyn Error>> {
[INFO] [stdout]    |                                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light/point_light.rs:19:32
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new_from_dict(map: &Dictionary) -> Result<PointLight, Box<Error>> {
[INFO] [stdout]    |                                ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new_from_dict(map: &dyn Dictionary) -> Result<PointLight, Box<Error>> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light/point_light.rs:19:70
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new_from_dict(map: &Dictionary) -> Result<PointLight, Box<Error>> {
[INFO] [stdout]    |                                                                      ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new_from_dict(map: &Dictionary) -> Result<PointLight, Box<dyn Error>> {
[INFO] [stdout]    |                                                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/material/mod.rs:16:52
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn create_material(material_type: &str, dict: &Dictionary) -> Result<Box<Material>, Box<Error>> {
[INFO] [stdout]    |                                                    ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn create_material(material_type: &str, dict: &dyn Dictionary) -> Result<Box<Material>, Box<Error>> {
[INFO] [stdout]    |                                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/material/mod.rs:16:78
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn create_material(material_type: &str, dict: &Dictionary) -> Result<Box<Material>, Box<Error>> {
[INFO] [stdout]    |                                                                              ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn create_material(material_type: &str, dict: &Dictionary) -> Result<Box<dyn Material>, Box<Error>> {
[INFO] [stdout]    |                                                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/material/mod.rs:16:93
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn create_material(material_type: &str, dict: &Dictionary) -> Result<Box<Material>, Box<Error>> {
[INFO] [stdout]    |                                                                                             ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn create_material(material_type: &str, dict: &Dictionary) -> Result<Box<Material>, Box<dyn Error>> {
[INFO] [stdout]    |                                                                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/material/matte.rs:17:32
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new_from_dict(map: &Dictionary) -> Result<Matte, Box<Error>> {
[INFO] [stdout]    |                                ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new_from_dict(map: &dyn Dictionary) -> Result<Matte, Box<Error>> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/material/matte.rs:17:65
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new_from_dict(map: &Dictionary) -> Result<Matte, Box<Error>> {
[INFO] [stdout]    |                                                                 ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new_from_dict(map: &Dictionary) -> Result<Matte, Box<dyn Error>> {
[INFO] [stdout]    |                                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/material/phong.rs:17:32
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new_from_dict(map: &Dictionary) -> Result<Phong, Box<Error>> {
[INFO] [stdout]    |                                ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new_from_dict(map: &dyn Dictionary) -> Result<Phong, Box<Error>> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/material/phong.rs:17:65
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new_from_dict(map: &Dictionary) -> Result<Phong, Box<Error>> {
[INFO] [stdout]    |                                                                 ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new_from_dict(map: &Dictionary) -> Result<Phong, Box<dyn Error>> {
[INFO] [stdout]    |                                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/utility/error.rs:11:32
[INFO] [stdout]    |
[INFO] [stdout] 11 |         fmt::Display::fmt(self.description(), f)
[INFO] [stdout]    |                                ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/utility/error.rs:36:32
[INFO] [stdout]    |
[INFO] [stdout] 36 |         fmt::Display::fmt(self.description(), f)
[INFO] [stdout]    |                                ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/utility/error.rs:43:57
[INFO] [stdout]    |
[INFO] [stdout] 43 |             &URenderError::GenericError(ref err) => err.description()
[INFO] [stdout]    |                                                         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `tracer` is never read
[INFO] [stdout]   --> src/world/world.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct World {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 21 |     tracer: Box<Tracer>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_object`, and `add_light` are never used
[INFO] [stdout]   --> src/world/world.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 27 | impl World {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 28 |     pub fn new() -> World {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn add_object(&mut self, object: Box<GeometricObject>) {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn add_light(&mut self, light: Box<Light>) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `RED` is never used
[INFO] [stdout]    --> src/utility/rgb_color.rs:117:11
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub const RED: RGBColor = RGBColor { r: 1., g: 0., b: 0. };
[INFO] [stdout]     |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GREEN` is never used
[INFO] [stdout]    --> src/utility/rgb_color.rs:118:11
[INFO] [stdout]     |
[INFO] [stdout] 118 | pub const GREEN: RGBColor = RGBColor { r: 0., g: 1., b: 0. };
[INFO] [stdout]     |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BLUE` is never used
[INFO] [stdout]    --> src/utility/rgb_color.rs:119:11
[INFO] [stdout]     |
[INFO] [stdout] 119 | pub const BLUE: RGBColor = RGBColor { r: 0., g: 0., b: 1. };
[INFO] [stdout]     |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GRAY` is never used
[INFO] [stdout]    --> src/utility/rgb_color.rs:120:11
[INFO] [stdout]     |
[INFO] [stdout] 120 | pub const GRAY: RGBColor = RGBColor { r: 0.5, g: 0.5, b: 0.5 };
[INFO] [stdout]     |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WHITE` is never used
[INFO] [stdout]    --> src/utility/rgb_color.rs:121:11
[INFO] [stdout]     |
[INFO] [stdout] 121 | pub const WHITE: RGBColor = RGBColor { r: 1., g: 1., b: 1. };
[INFO] [stdout]     |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `GenericError` is never constructed
[INFO] [stdout]   --> src/utility/error.rs:31:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub enum URenderError {
[INFO] [stdout]    |          ------------ variant in this enum
[INFO] [stdout] 31 |     GenericError(GenericError),
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `URenderError` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `gamma` and `inv_gamma` are never read
[INFO] [stdout]  --> src/camera/view_plane.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct ViewPlane {
[INFO] [stdout]   |            --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 5 |     gamma: f64,
[INFO] [stdout]   |     ^^^^^
[INFO] [stdout] 6 |     inv_gamma: f64
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]   --> src/camera/view_plane.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 9  | impl ViewPlane {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 10 |     pub fn new() -> ViewPlane {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub fn set_hres(&mut self, hres: u32) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn set_vres(&mut self, vres: u32) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn set_pixel_size(&mut self, pixel_size: f64) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 43 |     pub fn set_gamma(&mut self, gamma: f64) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn gamma(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 52 |     pub fn inv_gamma(&self) -> f64 {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `view_plane` are never used
[INFO] [stdout]   --> src/camera/orthographic_camera.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl OrthographicCamera {
[INFO] [stdout]    | ----------------------- associated items in this implementation
[INFO] [stdout] 14 |     pub fn new() -> OrthographicCamera
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     pub fn view_plane(&self) -> &ViewPlane {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/sampler/random_sampler.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl RandomSampler {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 11 |     pub fn new(sample_num: i32) -> RandomSampler {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/sampler/regular_sampler.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 9  | impl RegularSampler {
[INFO] [stdout]    | ------------------- associated function in this implementation
[INFO] [stdout] 10 |     pub fn new(row: i32, col: i32) -> RegularSampler {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/sampler/jittered_sampler.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl JitteredSampler {
[INFO] [stdout]    | -------------------- associated function in this implementation
[INFO] [stdout] 12 |     pub fn new(row: i32, col: i32) -> JitteredSampler {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/sampler/nrooks_sampler.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl NRooksSampler {
[INFO] [stdout]    | ------------------ associated function in this implementation
[INFO] [stdout] 11 |     pub fn new(sample_num: i32) -> NRooksSampler {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 81 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished dev [unoptimized + debuginfo] target(s) in 5.86s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: urender v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] running `Command { std: "docker" "inspect" "3c589aaaf538bd22ce5faa6bacadd8ff98fbf4ff247f47c7aa995006ade01c05", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3c589aaaf538bd22ce5faa6bacadd8ff98fbf4ff247f47c7aa995006ade01c05", kill_on_drop: false }`
[INFO] [stdout] 3c589aaaf538bd22ce5faa6bacadd8ff98fbf4ff247f47c7aa995006ade01c05
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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:5ff2268d62e97bff2cde7d5815dd6ed5b47097566f13b8d0ca110b04b60e07ed" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2023-04-20" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] b2408caf421e70339b2a86fb2901b791ea7c6fd6a11d307722cc2ca8693cdda8
[INFO] running `Command { std: "docker" "start" "-a" "b2408caf421e70339b2a86fb2901b791ea7c6fd6a11d307722cc2ca8693cdda8", kill_on_drop: false }`
[INFO] [stderr]    Compiling urender v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unnecessary parentheses around method argument
[INFO] [stdout]   --> src/geometry/cylinder.rs:45:42
[INFO] [stdout]    |
[INFO] [stdout] 45 |         let b = (v - v.dot(va) * va).dot((deltap - deltap.dot(va) * va)) * 2.;
[INFO] [stdout]    |                                          ^                            ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 45 -         let b = (v - v.dot(va) * va).dot((deltap - deltap.dot(va) * va)) * 2.;
[INFO] [stdout] 45 +         let b = (v - v.dot(va) * va).dot(deltap - deltap.dot(va) * va) * 2.;
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> src/geometry/aabox.rs:61:77
[INFO] [stdout]    |
[INFO] [stdout] 61 |                ($x.$func() - ray.origin().$func()) / ray.direction().$func();
[INFO] [stdout]    |                                                                             ^
[INFO] [stdout] ...
[INFO] [stdout] 75 |         calc_t!(tx_min, tx_max, x);
[INFO] [stdout]    |         -------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: `#[warn(semicolon_in_expressions_from_macros)]` on by default
[INFO] [stdout]    = note: this warning originates in the macro `calc_t` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> src/geometry/aabox.rs:61:77
[INFO] [stdout]    |
[INFO] [stdout] 61 |                ($x.$func() - ray.origin().$func()) / ray.direction().$func();
[INFO] [stdout]    |                                                                             ^
[INFO] [stdout] ...
[INFO] [stdout] 75 |         calc_t!(tx_min, tx_max, x);
[INFO] [stdout]    |         -------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: this warning originates in the macro `calc_t` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> src/geometry/aabox.rs:61:77
[INFO] [stdout]    |
[INFO] [stdout] 61 |                ($x.$func() - ray.origin().$func()) / ray.direction().$func();
[INFO] [stdout]    |                                                                             ^
[INFO] [stdout] ...
[INFO] [stdout] 75 |         calc_t!(tx_min, tx_max, x);
[INFO] [stdout]    |         -------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: this warning originates in the macro `calc_t` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> src/geometry/aabox.rs:61:77
[INFO] [stdout]    |
[INFO] [stdout] 61 |                ($x.$func() - ray.origin().$func()) / ray.direction().$func();
[INFO] [stdout]    |                                                                             ^
[INFO] [stdout] ...
[INFO] [stdout] 75 |         calc_t!(tx_min, tx_max, x);
[INFO] [stdout]    |         -------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: this warning originates in the macro `calc_t` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> src/geometry/aabox.rs:61:77
[INFO] [stdout]    |
[INFO] [stdout] 61 |                ($x.$func() - ray.origin().$func()) / ray.direction().$func();
[INFO] [stdout]    |                                                                             ^
[INFO] [stdout] ...
[INFO] [stdout] 76 |         calc_t!(ty_min, ty_max, y);
[INFO] [stdout]    |         -------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: this warning originates in the macro `calc_t` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> src/geometry/aabox.rs:61:77
[INFO] [stdout]    |
[INFO] [stdout] 61 |                ($x.$func() - ray.origin().$func()) / ray.direction().$func();
[INFO] [stdout]    |                                                                             ^
[INFO] [stdout] ...
[INFO] [stdout] 76 |         calc_t!(ty_min, ty_max, y);
[INFO] [stdout]    |         -------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: this warning originates in the macro `calc_t` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> src/geometry/aabox.rs:61:77
[INFO] [stdout]    |
[INFO] [stdout] 61 |                ($x.$func() - ray.origin().$func()) / ray.direction().$func();
[INFO] [stdout]    |                                                                             ^
[INFO] [stdout] ...
[INFO] [stdout] 76 |         calc_t!(ty_min, ty_max, y);
[INFO] [stdout]    |         -------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: this warning originates in the macro `calc_t` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> src/geometry/aabox.rs:61:77
[INFO] [stdout]    |
[INFO] [stdout] 61 |                ($x.$func() - ray.origin().$func()) / ray.direction().$func();
[INFO] [stdout]    |                                                                             ^
[INFO] [stdout] ...
[INFO] [stdout] 76 |         calc_t!(ty_min, ty_max, y);
[INFO] [stdout]    |         -------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: this warning originates in the macro `calc_t` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> src/geometry/aabox.rs:61:77
[INFO] [stdout]    |
[INFO] [stdout] 61 |                ($x.$func() - ray.origin().$func()) / ray.direction().$func();
[INFO] [stdout]    |                                                                             ^
[INFO] [stdout] ...
[INFO] [stdout] 77 |         calc_t!(tz_min, tz_max, z);
[INFO] [stdout]    |         -------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: this warning originates in the macro `calc_t` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> src/geometry/aabox.rs:61:77
[INFO] [stdout]    |
[INFO] [stdout] 61 |                ($x.$func() - ray.origin().$func()) / ray.direction().$func();
[INFO] [stdout]    |                                                                             ^
[INFO] [stdout] ...
[INFO] [stdout] 77 |         calc_t!(tz_min, tz_max, z);
[INFO] [stdout]    |         -------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: this warning originates in the macro `calc_t` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> src/geometry/aabox.rs:61:77
[INFO] [stdout]    |
[INFO] [stdout] 61 |                ($x.$func() - ray.origin().$func()) / ray.direction().$func();
[INFO] [stdout]    |                                                                             ^
[INFO] [stdout] ...
[INFO] [stdout] 77 |         calc_t!(tz_min, tz_max, z);
[INFO] [stdout]    |         -------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: this warning originates in the macro `calc_t` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trailing semicolon in macro used in expression position
[INFO] [stdout]   --> src/geometry/aabox.rs:61:77
[INFO] [stdout]    |
[INFO] [stdout] 61 |                ($x.$func() - ray.origin().$func()) / ray.direction().$func();
[INFO] [stdout]    |                                                                             ^
[INFO] [stdout] ...
[INFO] [stdout] 77 |         calc_t!(tz_min, tz_max, z);
[INFO] [stdout]    |         -------------------------- in this macro invocation
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #79813 <https://github.com/rust-lang/rust/issues/79813>
[INFO] [stdout]    = note: this warning originates in the macro `calc_t` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/world/world.rs:17:22
[INFO] [stdout]    |
[INFO] [stdout] 17 |     objects: Vec<Box<GeometricObject>>,
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     objects: Vec<Box<dyn GeometricObject>>,
[INFO] [stdout]    |                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/world/world.rs:18:21
[INFO] [stdout]    |
[INFO] [stdout] 18 |     lights: Vec<Box<Light>>,
[INFO] [stdout]    |                     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 18 |     lights: Vec<Box<dyn Light>>,
[INFO] [stdout]    |                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/world/world.rs:19:36
[INFO] [stdout]    |
[INFO] [stdout] 19 |     materials: HashMap<String, Box<Material>>,
[INFO] [stdout]    |                                    ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 19 |     materials: HashMap<String, Box<dyn Material>>,
[INFO] [stdout]    |                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/world/world.rs:20:24
[INFO] [stdout]    |
[INFO] [stdout] 20 |     ambient_light: Box<Light>,
[INFO] [stdout]    |                        ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 20 |     ambient_light: Box<dyn Light>,
[INFO] [stdout]    |                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/world/world.rs:21:17
[INFO] [stdout]    |
[INFO] [stdout] 21 |     tracer: Box<Tracer>,
[INFO] [stdout]    |                 ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 21 |     tracer: Box<dyn Tracer>,
[INFO] [stdout]    |                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/camera/pinhole_camera.rs:15:18
[INFO] [stdout]    |
[INFO] [stdout] 15 |     sampler: Box<Sampler>
[INFO] [stdout]    |                  ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 15 |     sampler: Box<dyn Sampler>
[INFO] [stdout]    |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/light/ambient_occluder.rs:8:18
[INFO] [stdout]   |
[INFO] [stdout] 8 |     sampler: Box<Sampler>,
[INFO] [stdout]   |                  ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 8 |     sampler: Box<dyn Sampler>,
[INFO] [stdout]   |                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/world/world.rs:44:46
[INFO] [stdout]    |
[INFO] [stdout] 44 |     pub fn add_object(&mut self, object: Box<GeometricObject>) {
[INFO] [stdout]    |                                              ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 44 |     pub fn add_object(&mut self, object: Box<dyn GeometricObject>) {
[INFO] [stdout]    |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/world/world.rs:48:44
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub fn add_light(&mut self, light: Box<Light>) {
[INFO] [stdout]    |                                            ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub fn add_light(&mut self, light: Box<dyn Light>) {
[INFO] [stdout]    |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/world/world.rs:74:41
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub fn ambient_light(&self) -> &Box<Light> {
[INFO] [stdout]    |                                         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub fn ambient_light(&self) -> &Box<dyn Light> {
[INFO] [stdout]    |                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/world/world.rs:78:38
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub fn lights(&self) -> &Vec<Box<Light>> {
[INFO] [stdout]    |                                      ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 78 |     pub fn lights(&self) -> &Vec<Box<dyn Light>> {
[INFO] [stdout]    |                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/world/world.rs:86:56
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub fn material(&self, material_name: &String) -> &Material {
[INFO] [stdout]    |                                                        ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 86 |     pub fn material(&self, material_name: &String) -> &dyn Material {
[INFO] [stdout]    |                                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/utility/rgb_color.rs:21:56
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn from_hex(hex: &str) -> Result<RGBColor, Box<Error>> {
[INFO] [stdout]    |                                                        ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn from_hex(hex: &str) -> Result<RGBColor, Box<dyn Error>> {
[INFO] [stdout]    |                                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/utility/error.rs:20:32
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn cause(&self) -> Option<&StdError> {
[INFO] [stdout]    |                                ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn cause(&self) -> Option<&dyn StdError> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/mod.rs:22:52
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn create_geometry(geometry_type: &str, dict: &Dictionary) -> Result<Box<GeometricObject>, Box<Error>> {
[INFO] [stdout]    |                                                    ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn create_geometry(geometry_type: &str, dict: &dyn Dictionary) -> Result<Box<GeometricObject>, Box<Error>> {
[INFO] [stdout]    |                                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/mod.rs:22:78
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn create_geometry(geometry_type: &str, dict: &Dictionary) -> Result<Box<GeometricObject>, Box<Error>> {
[INFO] [stdout]    |                                                                              ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn create_geometry(geometry_type: &str, dict: &Dictionary) -> Result<Box<dyn GeometricObject>, Box<Error>> {
[INFO] [stdout]    |                                                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/mod.rs:22:100
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn create_geometry(geometry_type: &str, dict: &Dictionary) -> Result<Box<GeometricObject>, Box<Error>> {
[INFO] [stdout]    |                                                                                                    ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn create_geometry(geometry_type: &str, dict: &Dictionary) -> Result<Box<GeometricObject>, Box<dyn Error>> {
[INFO] [stdout]    |                                                                                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/sphere.rs:19:33
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new_from_dict(dict: &Dictionary) -> Result<Sphere, Box<Error>> {
[INFO] [stdout]    |                                 ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new_from_dict(dict: &dyn Dictionary) -> Result<Sphere, Box<Error>> {
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/sphere.rs:19:67
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new_from_dict(dict: &Dictionary) -> Result<Sphere, Box<Error>> {
[INFO] [stdout]    |                                                                   ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new_from_dict(dict: &Dictionary) -> Result<Sphere, Box<dyn Error>> {
[INFO] [stdout]    |                                                                   +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/plane.rs:19:33
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new_from_dict(dict: &Dictionary) -> Result<Plane, Box<Error>> {
[INFO] [stdout]    |                                 ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new_from_dict(dict: &dyn Dictionary) -> Result<Plane, Box<Error>> {
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/plane.rs:19:66
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new_from_dict(dict: &Dictionary) -> Result<Plane, Box<Error>> {
[INFO] [stdout]    |                                                                  ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new_from_dict(dict: &Dictionary) -> Result<Plane, Box<dyn Error>> {
[INFO] [stdout]    |                                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/cylinder.rs:21:33
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn new_from_dict(dict: &Dictionary) -> Result<Cylinder, Box<Error>> {
[INFO] [stdout]    |                                 ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn new_from_dict(dict: &dyn Dictionary) -> Result<Cylinder, Box<Error>> {
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/cylinder.rs:21:69
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn new_from_dict(dict: &Dictionary) -> Result<Cylinder, Box<Error>> {
[INFO] [stdout]    |                                                                     ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn new_from_dict(dict: &Dictionary) -> Result<Cylinder, Box<dyn Error>> {
[INFO] [stdout]    |                                                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/disk.rs:21:33
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn new_from_dict(dict: &Dictionary) -> Result<Disk, Box<Error>> {
[INFO] [stdout]    |                                 ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn new_from_dict(dict: &dyn Dictionary) -> Result<Disk, Box<Error>> {
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/disk.rs:21:65
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn new_from_dict(dict: &Dictionary) -> Result<Disk, Box<Error>> {
[INFO] [stdout]    |                                                                 ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn new_from_dict(dict: &Dictionary) -> Result<Disk, Box<dyn Error>> {
[INFO] [stdout]    |                                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/aabox.rs:26:33
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub fn new_from_dict(dict: &Dictionary) -> Result<AABox, Box<Error>> {
[INFO] [stdout]    |                                 ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub fn new_from_dict(dict: &dyn Dictionary) -> Result<AABox, Box<Error>> {
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/geometry/aabox.rs:26:66
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub fn new_from_dict(dict: &Dictionary) -> Result<AABox, Box<Error>> {
[INFO] [stdout]    |                                                                  ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub fn new_from_dict(dict: &Dictionary) -> Result<AABox, Box<dyn Error>> {
[INFO] [stdout]    |                                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/camera/mod.rs:15:46
[INFO] [stdout]    |
[INFO] [stdout] 15 |     fn render(&self, world: &World, tracer: &Tracer) -> Image;
[INFO] [stdout]    |                                              ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 15 |     fn render(&self, world: &World, tracer: &dyn Tracer) -> Image;
[INFO] [stdout]    |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/camera/pinhole_camera.rs:23:33
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn new_from_dict(dict: &Dictionary) -> Result<PinholeCamera, Box<Error>> {
[INFO] [stdout]    |                                 ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn new_from_dict(dict: &dyn Dictionary) -> Result<PinholeCamera, Box<Error>> {
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/camera/pinhole_camera.rs:23:74
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn new_from_dict(dict: &Dictionary) -> Result<PinholeCamera, Box<Error>> {
[INFO] [stdout]    |                                                                          ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn new_from_dict(dict: &Dictionary) -> Result<PinholeCamera, Box<dyn Error>> {
[INFO] [stdout]    |                                                                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/camera/pinhole_camera.rs:38:46
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn render(&self, world: &World, tracer: &Tracer) -> Image {
[INFO] [stdout]    |                                              ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn render(&self, world: &World, tracer: &dyn Tracer) -> Image {
[INFO] [stdout]    |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/camera/orthographic_camera.rs:25:46
[INFO] [stdout]    |
[INFO] [stdout] 25 |     fn render(&self, world: &World, tracer: &Tracer) -> Image {
[INFO] [stdout]    |                                              ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 25 |     fn render(&self, world: &World, tracer: &dyn Tracer) -> Image {
[INFO] [stdout]    |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light/mod.rs:22:46
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn create_light(light_type: &str, dict: &Dictionary) -> Result<Box<Light>, Box<Error>> {
[INFO] [stdout]    |                                              ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn create_light(light_type: &str, dict: &dyn Dictionary) -> Result<Box<Light>, Box<Error>> {
[INFO] [stdout]    |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light/mod.rs:22:72
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn create_light(light_type: &str, dict: &Dictionary) -> Result<Box<Light>, Box<Error>> {
[INFO] [stdout]    |                                                                        ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn create_light(light_type: &str, dict: &Dictionary) -> Result<Box<dyn Light>, Box<Error>> {
[INFO] [stdout]    |                                                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light/mod.rs:22:84
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn create_light(light_type: &str, dict: &Dictionary) -> Result<Box<Light>, Box<Error>> {
[INFO] [stdout]    |                                                                                    ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn create_light(light_type: &str, dict: &Dictionary) -> Result<Box<Light>, Box<dyn Error>> {
[INFO] [stdout]    |                                                                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light/directional_light.rs:15:32
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub fn new_from_dict(map: &Dictionary) -> Result<DirectionalLight, Box<Error>> {
[INFO] [stdout]    |                                ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub fn new_from_dict(map: &dyn Dictionary) -> Result<DirectionalLight, Box<Error>> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light/directional_light.rs:15:76
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub fn new_from_dict(map: &Dictionary) -> Result<DirectionalLight, Box<Error>> {
[INFO] [stdout]    |                                                                            ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 15 |     pub fn new_from_dict(map: &Dictionary) -> Result<DirectionalLight, Box<dyn Error>> {
[INFO] [stdout]    |                                                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light/ambient_light.rs:14:32
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn new_from_dict(map: &Dictionary) -> Result<AmbientLight, Box<Error>> {
[INFO] [stdout]    |                                ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn new_from_dict(map: &dyn Dictionary) -> Result<AmbientLight, Box<Error>> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light/ambient_light.rs:14:72
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn new_from_dict(map: &Dictionary) -> Result<AmbientLight, Box<Error>> {
[INFO] [stdout]    |                                                                        ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn new_from_dict(map: &Dictionary) -> Result<AmbientLight, Box<dyn Error>> {
[INFO] [stdout]    |                                                                        +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light/ambient_occluder.rs:17:32
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new_from_dict(map: &Dictionary) -> Result<AmbientOccluder, Box<Error>> {
[INFO] [stdout]    |                                ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new_from_dict(map: &dyn Dictionary) -> Result<AmbientOccluder, Box<Error>> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light/ambient_occluder.rs:17:75
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new_from_dict(map: &Dictionary) -> Result<AmbientOccluder, Box<Error>> {
[INFO] [stdout]    |                                                                           ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new_from_dict(map: &Dictionary) -> Result<AmbientOccluder, Box<dyn Error>> {
[INFO] [stdout]    |                                                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light/point_light.rs:19:32
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new_from_dict(map: &Dictionary) -> Result<PointLight, Box<Error>> {
[INFO] [stdout]    |                                ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new_from_dict(map: &dyn Dictionary) -> Result<PointLight, Box<Error>> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/light/point_light.rs:19:70
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new_from_dict(map: &Dictionary) -> Result<PointLight, Box<Error>> {
[INFO] [stdout]    |                                                                      ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn new_from_dict(map: &Dictionary) -> Result<PointLight, Box<dyn Error>> {
[INFO] [stdout]    |                                                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/material/mod.rs:16:52
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn create_material(material_type: &str, dict: &Dictionary) -> Result<Box<Material>, Box<Error>> {
[INFO] [stdout]    |                                                    ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn create_material(material_type: &str, dict: &dyn Dictionary) -> Result<Box<Material>, Box<Error>> {
[INFO] [stdout]    |                                                    +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/material/mod.rs:16:78
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn create_material(material_type: &str, dict: &Dictionary) -> Result<Box<Material>, Box<Error>> {
[INFO] [stdout]    |                                                                              ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn create_material(material_type: &str, dict: &Dictionary) -> Result<Box<dyn Material>, Box<Error>> {
[INFO] [stdout]    |                                                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/material/mod.rs:16:93
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn create_material(material_type: &str, dict: &Dictionary) -> Result<Box<Material>, Box<Error>> {
[INFO] [stdout]    |                                                                                             ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn create_material(material_type: &str, dict: &Dictionary) -> Result<Box<Material>, Box<dyn Error>> {
[INFO] [stdout]    |                                                                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/material/matte.rs:17:32
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new_from_dict(map: &Dictionary) -> Result<Matte, Box<Error>> {
[INFO] [stdout]    |                                ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new_from_dict(map: &dyn Dictionary) -> Result<Matte, Box<Error>> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/material/matte.rs:17:65
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new_from_dict(map: &Dictionary) -> Result<Matte, Box<Error>> {
[INFO] [stdout]    |                                                                 ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new_from_dict(map: &Dictionary) -> Result<Matte, Box<dyn Error>> {
[INFO] [stdout]    |                                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/material/phong.rs:17:32
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new_from_dict(map: &Dictionary) -> Result<Phong, Box<Error>> {
[INFO] [stdout]    |                                ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new_from_dict(map: &dyn Dictionary) -> Result<Phong, Box<Error>> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/material/phong.rs:17:65
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new_from_dict(map: &Dictionary) -> Result<Phong, Box<Error>> {
[INFO] [stdout]    |                                                                 ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |     pub fn new_from_dict(map: &Dictionary) -> Result<Phong, Box<dyn Error>> {
[INFO] [stdout]    |                                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/utility/error.rs:11:32
[INFO] [stdout]    |
[INFO] [stdout] 11 |         fmt::Display::fmt(self.description(), f)
[INFO] [stdout]    |                                ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/utility/error.rs:36:32
[INFO] [stdout]    |
[INFO] [stdout] 36 |         fmt::Display::fmt(self.description(), f)
[INFO] [stdout]    |                                ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `std::error::Error::description`: use the Display impl or to_string()
[INFO] [stdout]   --> src/utility/error.rs:43:57
[INFO] [stdout]    |
[INFO] [stdout] 43 |             &URenderError::GenericError(ref err) => err.description()
[INFO] [stdout]    |                                                         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0423]: expected function, tuple struct or tuple variant, found struct `Vector3D`
[INFO] [stdout]  --> src/utility/test.rs:5:13
[INFO] [stdout]   |
[INFO] [stdout] 5 |       let v = Vector3D(1, 2, 3);
[INFO] [stdout]   |               ^^^^^^^^^^^^^^^^^ help: use struct literal syntax instead: `Vector3D { x: val, y: val, z: val }`
[INFO] [stdout]   |
[INFO] [stdout]  ::: src/utility/vector3d.rs:5:1
[INFO] [stdout]   |
[INFO] [stdout] 5 | / pub struct Vector3D {
[INFO] [stdout] 6 | |     x: f64,
[INFO] [stdout] 7 | |     y: f64,
[INFO] [stdout] 8 | |     z: f64
[INFO] [stdout] 9 | | }
[INFO] [stdout]   | |_- `Vector3D` defined here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0423]: expected function, tuple struct or tuple variant, found struct `Vector3D`
[INFO] [stdout]  --> src/utility/test.rs:6:14
[INFO] [stdout]   |
[INFO] [stdout] 6 |       let v2 = Vector3D(0, 0, 0);
[INFO] [stdout]   |                ^^^^^^^^^^^^^^^^^ help: use struct literal syntax instead: `Vector3D { x: val, y: val, z: val }`
[INFO] [stdout]   |
[INFO] [stdout]  ::: src/utility/vector3d.rs:5:1
[INFO] [stdout]   |
[INFO] [stdout] 5 | / pub struct Vector3D {
[INFO] [stdout] 6 | |     x: f64,
[INFO] [stdout] 7 | |     y: f64,
[INFO] [stdout] 8 | |     z: f64
[INFO] [stdout] 9 | | }
[INFO] [stdout]   | |_- `Vector3D` defined here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0423]: expected function, tuple struct or tuple variant, found struct `Vector3D`
[INFO] [stdout]  --> src/utility/test.rs:7:23
[INFO] [stdout]   |
[INFO] [stdout] 7 |       assert_eq!(v * 3, Vector3D(3, 6, 9));
[INFO] [stdout]   |                         ^^^^^^^^^^^^^^^^^ help: use struct literal syntax instead: `Vector3D { x: val, y: val, z: val }`
[INFO] [stdout]   |
[INFO] [stdout]  ::: src/utility/vector3d.rs:5:1
[INFO] [stdout]   |
[INFO] [stdout] 5 | / pub struct Vector3D {
[INFO] [stdout] 6 | |     x: f64,
[INFO] [stdout] 7 | |     y: f64,
[INFO] [stdout] 8 | |     z: f64
[INFO] [stdout] 9 | | }
[INFO] [stdout]   | |_- `Vector3D` defined here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0423]: expected function, tuple struct or tuple variant, found struct `Vector3D`
[INFO] [stdout]  --> src/utility/test.rs:8:23
[INFO] [stdout]   |
[INFO] [stdout] 8 |       assert_eq!(v * 0, Vector3D(0, 0, 0));
[INFO] [stdout]   |                         ^^^^^^^^^^^^^^^^^ help: use struct literal syntax instead: `Vector3D { x: val, y: val, z: val }`
[INFO] [stdout]   |
[INFO] [stdout]  ::: src/utility/vector3d.rs:5:1
[INFO] [stdout]   |
[INFO] [stdout] 5 | / pub struct Vector3D {
[INFO] [stdout] 6 | |     x: f64,
[INFO] [stdout] 7 | |     y: f64,
[INFO] [stdout] 8 | |     z: f64
[INFO] [stdout] 9 | | }
[INFO] [stdout]   | |_- `Vector3D` defined here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0423]: expected function, tuple struct or tuple variant, found struct `Vector3D`
[INFO] [stdout]  --> src/utility/test.rs:9:24
[INFO] [stdout]   |
[INFO] [stdout] 9 |       assert_eq!(3 * v2, Vector3D(0, 0, 0));
[INFO] [stdout]   |                          ^^^^^^^^^^^^^^^^^ help: use struct literal syntax instead: `Vector3D { x: val, y: val, z: val }`
[INFO] [stdout]   |
[INFO] [stdout]  ::: src/utility/vector3d.rs:5:1
[INFO] [stdout]   |
[INFO] [stdout] 5 | / pub struct Vector3D {
[INFO] [stdout] 6 | |     x: f64,
[INFO] [stdout] 7 | |     y: f64,
[INFO] [stdout] 8 | |     z: f64
[INFO] [stdout] 9 | | }
[INFO] [stdout]   | |_- `Vector3D` defined here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0423]: expected function, tuple struct or tuple variant, found struct `Vector3D`
[INFO] [stdout]   --> src/utility/test.rs:14:16
[INFO] [stdout]    |
[INFO] [stdout] 14 |       assert_eq!(Vector3D(1, 2, 3).dot(Vector3D(4, 5, 6)), 32.);
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^ help: use struct literal syntax instead: `Vector3D { x: val, y: val, z: val }`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/utility/vector3d.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout] 5  | / pub struct Vector3D {
[INFO] [stdout] 6  | |     x: f64,
[INFO] [stdout] 7  | |     y: f64,
[INFO] [stdout] 8  | |     z: f64
[INFO] [stdout] 9  | | }
[INFO] [stdout]    | |_- `Vector3D` defined here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0423]: expected function, tuple struct or tuple variant, found struct `Vector3D`
[INFO] [stdout]   --> src/utility/test.rs:14:38
[INFO] [stdout]    |
[INFO] [stdout] 14 |       assert_eq!(Vector3D(1, 2, 3).dot(Vector3D(4, 5, 6)), 32.);
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^^^ help: use struct literal syntax instead: `Vector3D { x: val, y: val, z: val }`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/utility/vector3d.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout] 5  | / pub struct Vector3D {
[INFO] [stdout] 6  | |     x: f64,
[INFO] [stdout] 7  | |     y: f64,
[INFO] [stdout] 8  | |     z: f64
[INFO] [stdout] 9  | | }
[INFO] [stdout]    | |_- `Vector3D` defined here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0423]: expected function, tuple struct or tuple variant, found struct `Vector3D`
[INFO] [stdout]   --> src/utility/test.rs:15:16
[INFO] [stdout]    |
[INFO] [stdout] 15 |       assert_eq!(Vector3D(0, 0, 0).dot(Vector3D(4, 5, 6)), 0.);  
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^ help: use struct literal syntax instead: `Vector3D { x: val, y: val, z: val }`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/utility/vector3d.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout] 5  | / pub struct Vector3D {
[INFO] [stdout] 6  | |     x: f64,
[INFO] [stdout] 7  | |     y: f64,
[INFO] [stdout] 8  | |     z: f64
[INFO] [stdout] 9  | | }
[INFO] [stdout]    | |_- `Vector3D` defined here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0423]: expected function, tuple struct or tuple variant, found struct `Vector3D`
[INFO] [stdout]   --> src/utility/test.rs:15:38
[INFO] [stdout]    |
[INFO] [stdout] 15 |       assert_eq!(Vector3D(0, 0, 0).dot(Vector3D(4, 5, 6)), 0.);  
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^^^ help: use struct literal syntax instead: `Vector3D { x: val, y: val, z: val }`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/utility/vector3d.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout] 5  | / pub struct Vector3D {
[INFO] [stdout] 6  | |     x: f64,
[INFO] [stdout] 7  | |     y: f64,
[INFO] [stdout] 8  | |     z: f64
[INFO] [stdout] 9  | | }
[INFO] [stdout]    | |_- `Vector3D` defined here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0423]: expected function, tuple struct or tuple variant, found struct `Vector3D`
[INFO] [stdout]   --> src/utility/test.rs:20:16
[INFO] [stdout]    |
[INFO] [stdout] 20 |       assert_eq!(Vector3D(1, 2, 3).cross(Vector3D(4, 5, 6)), Vector3D(-3, 6, -3));
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^ help: use struct literal syntax instead: `Vector3D { x: val, y: val, z: val }`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/utility/vector3d.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout] 5  | / pub struct Vector3D {
[INFO] [stdout] 6  | |     x: f64,
[INFO] [stdout] 7  | |     y: f64,
[INFO] [stdout] 8  | |     z: f64
[INFO] [stdout] 9  | | }
[INFO] [stdout]    | |_- `Vector3D` defined here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0423]: expected function, tuple struct or tuple variant, found struct `Vector3D`
[INFO] [stdout]   --> src/utility/test.rs:20:40
[INFO] [stdout]    |
[INFO] [stdout] 20 |       assert_eq!(Vector3D(1, 2, 3).cross(Vector3D(4, 5, 6)), Vector3D(-3, 6, -3));
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^ help: use struct literal syntax instead: `Vector3D { x: val, y: val, z: val }`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/utility/vector3d.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout] 5  | / pub struct Vector3D {
[INFO] [stdout] 6  | |     x: f64,
[INFO] [stdout] 7  | |     y: f64,
[INFO] [stdout] 8  | |     z: f64
[INFO] [stdout] 9  | | }
[INFO] [stdout]    | |_- `Vector3D` defined here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0423]: expected function, tuple struct or tuple variant, found struct `Vector3D`
[INFO] [stdout]   --> src/utility/test.rs:20:60
[INFO] [stdout]    |
[INFO] [stdout] 20 |       assert_eq!(Vector3D(1, 2, 3).cross(Vector3D(4, 5, 6)), Vector3D(-3, 6, -3));
[INFO] [stdout]    |                                                              ^^^^^^^^^^^^^^^^^^^ help: use struct literal syntax instead: `Vector3D { x: val, y: val, z: val }`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/utility/vector3d.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout] 5  | / pub struct Vector3D {
[INFO] [stdout] 6  | |     x: f64,
[INFO] [stdout] 7  | |     y: f64,
[INFO] [stdout] 8  | |     z: f64
[INFO] [stdout] 9  | | }
[INFO] [stdout]    | |_- `Vector3D` defined here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0423]: expected function, tuple struct or tuple variant, found struct `Vector3D`
[INFO] [stdout]   --> src/utility/test.rs:21:16
[INFO] [stdout]    |
[INFO] [stdout] 21 |       assert_eq!(Vector3D(0, 0, 0).cross(Vector3D(4, 5, 6)), Vector3D(0, 0, 0));  
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^^^^ help: use struct literal syntax instead: `Vector3D { x: val, y: val, z: val }`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/utility/vector3d.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout] 5  | / pub struct Vector3D {
[INFO] [stdout] 6  | |     x: f64,
[INFO] [stdout] 7  | |     y: f64,
[INFO] [stdout] 8  | |     z: f64
[INFO] [stdout] 9  | | }
[INFO] [stdout]    | |_- `Vector3D` defined here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0423]: expected function, tuple struct or tuple variant, found struct `Vector3D`
[INFO] [stdout]   --> src/utility/test.rs:21:40
[INFO] [stdout]    |
[INFO] [stdout] 21 |       assert_eq!(Vector3D(0, 0, 0).cross(Vector3D(4, 5, 6)), Vector3D(0, 0, 0));  
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^ help: use struct literal syntax instead: `Vector3D { x: val, y: val, z: val }`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/utility/vector3d.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout] 5  | / pub struct Vector3D {
[INFO] [stdout] 6  | |     x: f64,
[INFO] [stdout] 7  | |     y: f64,
[INFO] [stdout] 8  | |     z: f64
[INFO] [stdout] 9  | | }
[INFO] [stdout]    | |_- `Vector3D` defined here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0423]: expected function, tuple struct or tuple variant, found struct `Vector3D`
[INFO] [stdout]   --> src/utility/test.rs:21:60
[INFO] [stdout]    |
[INFO] [stdout] 21 |       assert_eq!(Vector3D(0, 0, 0).cross(Vector3D(4, 5, 6)), Vector3D(0, 0, 0));  
[INFO] [stdout]    |                                                              ^^^^^^^^^^^^^^^^^ help: use struct literal syntax instead: `Vector3D { x: val, y: val, z: val }`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/utility/vector3d.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout] 5  | / pub struct Vector3D {
[INFO] [stdout] 6  | |     x: f64,
[INFO] [stdout] 7  | |     y: f64,
[INFO] [stdout] 8  | |     z: f64
[INFO] [stdout] 9  | | }
[INFO] [stdout]    | |_- `Vector3D` defined here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function, tuple struct or tuple variant `Point3D` in this scope
[INFO] [stdout]   --> src/utility/test.rs:26:16
[INFO] [stdout]    |
[INFO] [stdout] 26 |     assert_eq!(Point3D(1, 2, 3) + Vector3D(4, 5, 6), Point3D(5, 7, 9));
[INFO] [stdout]    |                ^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0423]: expected function, tuple struct or tuple variant, found struct `Vector3D`
[INFO] [stdout]   --> src/utility/test.rs:26:35
[INFO] [stdout]    |
[INFO] [stdout] 26 |       assert_eq!(Point3D(1, 2, 3) + Vector3D(4, 5, 6), Point3D(5, 7, 9));
[INFO] [stdout]    |                                     ^^^^^^^^^^^^^^^^^ help: use struct literal syntax instead: `Vector3D { x: val, y: val, z: val }`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/utility/vector3d.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout] 5  | / pub struct Vector3D {
[INFO] [stdout] 6  | |     x: f64,
[INFO] [stdout] 7  | |     y: f64,
[INFO] [stdout] 8  | |     z: f64
[INFO] [stdout] 9  | | }
[INFO] [stdout]    | |_- `Vector3D` defined here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function, tuple struct or tuple variant `Point3D` in this scope
[INFO] [stdout]   --> src/utility/test.rs:26:54
[INFO] [stdout]    |
[INFO] [stdout] 26 |     assert_eq!(Point3D(1, 2, 3) + Vector3D(4, 5, 6), Point3D(5, 7, 9));
[INFO] [stdout]    |                                                      ^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function, tuple struct or tuple variant `Point3D` in this scope
[INFO] [stdout]   --> src/utility/test.rs:31:16
[INFO] [stdout]    |
[INFO] [stdout] 31 |     assert_eq!(Point3D(1, 2, 3) - Point3D(4, 5, 6), Vector3D(-3, -3, -3));
[INFO] [stdout]    |                ^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find function, tuple struct or tuple variant `Point3D` in this scope
[INFO] [stdout]   --> src/utility/test.rs:31:35
[INFO] [stdout]    |
[INFO] [stdout] 31 |     assert_eq!(Point3D(1, 2, 3) - Point3D(4, 5, 6), Vector3D(-3, -3, -3));
[INFO] [stdout]    |                                   ^^^^^^^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0423]: expected function, tuple struct or tuple variant, found struct `Vector3D`
[INFO] [stdout]   --> src/utility/test.rs:31:53
[INFO] [stdout]    |
[INFO] [stdout] 31 |       assert_eq!(Point3D(1, 2, 3) - Point3D(4, 5, 6), Vector3D(-3, -3, -3));
[INFO] [stdout]    |                                                       ^^^^^^^^^^^^^^^^^^^^ help: use struct literal syntax instead: `Vector3D { x: val, y: val, z: val }`
[INFO] [stdout]    |
[INFO] [stdout]   ::: src/utility/vector3d.rs:5:1
[INFO] [stdout]    |
[INFO] [stdout] 5  | / pub struct Vector3D {
[INFO] [stdout] 6  | |     x: f64,
[INFO] [stdout] 7  | |     y: f64,
[INFO] [stdout] 8  | |     z: f64
[INFO] [stdout] 9  | | }
[INFO] [stdout]    | |_- `Vector3D` defined here
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 21 previous errors; 66 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0423, E0425.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0423`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `urender` (bin "urender" test) due to 22 previous errors; 78 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "b2408caf421e70339b2a86fb2901b791ea7c6fd6a11d307722cc2ca8693cdda8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b2408caf421e70339b2a86fb2901b791ea7c6fd6a11d307722cc2ca8693cdda8", kill_on_drop: false }`
[INFO] [stdout] b2408caf421e70339b2a86fb2901b791ea7c6fd6a11d307722cc2ca8693cdda8
