[INFO] cloning repository https://github.com/tstullich/rust-pt
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/tstullich/rust-pt" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftstullich%2Frust-pt", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftstullich%2Frust-pt'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] be3b17aa53874c86afc824e0e932a9464c420b15
[INFO] checking tstullich/rust-pt/be3b17aa53874c86afc824e0e932a9464c420b15 against master#eeb94be79adc9df7a09ad0b2421f16e60e6d932c for pr-152971
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftstullich%2Frust-pt" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/tstullich/rust-pt
[INFO] finished tweaking git repo https://github.com/tstullich/rust-pt
[INFO] tweaked toml for git repo https://github.com/tstullich/rust-pt written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/tstullich/rust-pt on toolchain eeb94be79adc9df7a09ad0b2421f16e60e6d932c
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+eeb94be79adc9df7a09ad0b2421f16e60e6d932c" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/tstullich/rust-pt 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" "+eeb94be79adc9df7a09ad0b2421f16e60e6d932c" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded termios v0.3.1
[INFO] [stderr]   Downloaded png v0.12.0
[INFO] [stderr]   Downloaded cfg-if v0.1.5
[INFO] [stderr]   Downloaded console v0.6.2
[INFO] [stderr]   Downloaded clicolors-control v0.2.0
[INFO] [stderr]   Downloaded inflate v0.4.3
[INFO] [stderr]   Downloaded adler32 v1.0.3
[INFO] [stderr]   Downloaded deflate v0.7.19
[INFO] [stderr]   Downloaded indicatif v0.9.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+eeb94be79adc9df7a09ad0b2421f16e60e6d932c" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] f15e1644ac1d5a5f7e38a563936fbd98b7dbcc029637334569c34beda64323a5
[INFO] running `Command { std: "docker" "start" "-a" "f15e1644ac1d5a5f7e38a563936fbd98b7dbcc029637334569c34beda64323a5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f15e1644ac1d5a5f7e38a563936fbd98b7dbcc029637334569c34beda64323a5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f15e1644ac1d5a5f7e38a563936fbd98b7dbcc029637334569c34beda64323a5", kill_on_drop: false }`
[INFO] [stdout] f15e1644ac1d5a5f7e38a563936fbd98b7dbcc029637334569c34beda64323a5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:61361fe0aef631f17e9d025a70c5a647956f8c671dd02950a60ad3f5cc5526d7" "/opt/rustwide/cargo-home/bin/cargo" "+eeb94be79adc9df7a09ad0b2421f16e60e6d932c" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 6a2d6cc3676c543beb958cf9d66a234830a2068d4e83692066822044635572df
[INFO] running `Command { std: "docker" "start" "-a" "6a2d6cc3676c543beb958cf9d66a234830a2068d4e83692066822044635572df", kill_on_drop: false }`
[INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2024
[INFO] [stderr]    Compiling version_check v0.1.5
[INFO] [stderr]     Checking libc v0.2.43
[INFO] [stderr]     Checking cfg-if v0.1.5
[INFO] [stderr]    Compiling semver-parser v0.7.0
[INFO] [stderr]     Checking scopeguard v0.3.3
[INFO] [stderr]     Checking void v1.0.2
[INFO] [stderr]     Checking rand_core v0.3.0
[INFO] [stderr]     Checking ucd-util v0.1.1
[INFO] [stderr]     Checking unreachable v1.0.0
[INFO] [stderr]     Checking stable_deref_trait v1.1.1
[INFO] [stderr]     Checking nodrop v0.1.12
[INFO] [stderr]    Compiling num-traits v0.2.6
[INFO] [stderr]     Checking smallvec v0.6.5
[INFO] [stderr]     Checking owning_ref v0.3.3
[INFO] [stderr]     Checking arrayvec v0.4.7
[INFO] [stderr]     Checking rand_core v0.2.2
[INFO] [stderr]     Checking crossbeam-utils v0.2.2
[INFO] [stderr]    Compiling lazy_static v1.1.0
[INFO] [stderr]    Compiling memchr v2.1.0
[INFO] [stderr]    Compiling semver v0.9.0
[INFO] [stderr]     Checking rand v0.5.5
[INFO] [stderr]    Compiling num-integer v0.1.39
[INFO] [stderr]     Checking memoffset v0.2.1
[INFO] [stderr]     Checking unicode-width v0.1.5
[INFO] [stderr]    Compiling regex v1.0.5
[INFO] [stderr]     Checking thread_local v0.3.6
[INFO] [stderr]    Compiling rustc_version v0.2.3
[INFO] [stderr]    Compiling rayon-core v1.4.1
[INFO] [stderr]     Checking utf8-ranges v1.0.1
[INFO] [stderr]     Checking crossbeam-epoch v0.3.1
[INFO] [stderr]     Checking aho-corasick v0.6.8
[INFO] [stderr]     Checking atty v0.2.11
[INFO] [stderr]     Checking lock_api v0.1.4
[INFO] [stderr]    Compiling parking_lot_core v0.3.1
[INFO] [stderr]     Checking regex-syntax v0.6.2
[INFO] [stderr]     Checking lazy_static v0.2.11
[INFO] [stderr]    Compiling regex v0.2.11
[INFO] [stderr]     Checking adler32 v1.0.3
[INFO] [stderr]    Compiling num-iter v0.1.37
[INFO] [stderr]     Checking clicolors-control v0.2.0
[INFO] [stderr]     Checking crossbeam-deque v0.2.0
[INFO] [stderr]     Checking termios v0.3.1
[INFO] [stderr]     Checking num_cpus v1.8.0
[INFO] [stderr]     Checking regex-syntax v0.5.6
[INFO] [stderr]    Compiling rayon v1.0.2
[INFO] [stderr]     Checking bitflags v1.0.4
[INFO] [stderr]     Checking byteorder v1.2.6
[INFO] [stderr]     Checking inflate v0.4.3
[INFO] [stderr]     Checking deflate v0.7.19
[INFO] [stderr]     Checking textwrap v0.10.0
[INFO] [stderr]     Checking either v1.5.0
[INFO] [stderr]     Checking ansi_term v0.11.0
[INFO] [stderr]     Checking vec_map v0.8.1
[INFO] [stderr]     Checking strsim v0.7.0
[INFO] [stderr]     Checking clap v2.32.0
[INFO] [stderr]     Checking parking_lot v0.6.4
[INFO] [stderr]     Checking png v0.12.0
[INFO] [stderr]     Checking console v0.6.2
[INFO] [stderr]     Checking indicatif v0.9.0
[INFO] [stderr]     Checking pathtracer v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `material::Material`
[INFO] [stdout]  --> src/hitable_list.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use material::Material;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `MovingSphere` and `Sphere`
[INFO] [stdout]  --> src/hitable_list.rs:5:14
[INFO] [stdout]   |
[INFO] [stdout] 5 | use sphere::{MovingSphere, Sphere};
[INFO] [stdout]   |              ^^^^^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `vector::Vec3`
[INFO] [stdout]  --> src/hitable_list.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use vector::Vec3;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `material::Material`
[INFO] [stdout]   --> src/renderer.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use material::Material;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sphere::Sphere`
[INFO] [stdout]   --> src/renderer.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use sphere::Sphere;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/bvh_node.rs:21:29
[INFO] [stdout]    |
[INFO] [stdout] 21 |     hitable: Option<&'a Box<Hitable>>,
[INFO] [stdout]    |                             ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 21 |     hitable: Option<&'a Box<dyn Hitable>>,
[INFO] [stdout]    |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/hitable_list.rs:9:23
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub objs: Vec<Box<Hitable>>,
[INFO] [stdout]   |                       ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub objs: Vec<Box<dyn Hitable>>,
[INFO] [stdout]   |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/material.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 9 |     Lambertian(Texture),
[INFO] [stdout]   |                ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 9 |     Lambertian(dyn Texture),
[INFO] [stdout]   |                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:26:14
[INFO] [stdout]    |
[INFO] [stdout] 26 |     odd: Box<Texture>,
[INFO] [stdout]    |              ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 26 |     odd: Box<dyn Texture>,
[INFO] [stdout]    |              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:27:15
[INFO] [stdout]    |
[INFO] [stdout] 27 |     even: Box<Texture>,
[INFO] [stdout]    |               ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 27 |     even: Box<dyn Texture>,
[INFO] [stdout]    |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0204]: the trait `Copy` cannot be implemented for this type
[INFO] [stdout]  --> src/material.rs:8:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | #[derive(Copy, Clone)]
[INFO] [stdout]   |          ---- in this derive macro expansion
[INFO] [stdout] 8 | pub enum Material {
[INFO] [stdout]   |          ^^^^^^^^
[INFO] [stdout] 9 |     Lambertian(Texture),
[INFO] [stdout]   |                ------- this field does not implement `Copy`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0204]: the trait `Copy` cannot be implemented for this type
[INFO] [stdout]   --> src/texture.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | #[derive(Copy, Clone)]
[INFO] [stdout]    |          ---- in this derive macro expansion
[INFO] [stdout] 25 | pub struct Checker {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 26 |     odd: Box<Texture>,
[INFO] [stdout]    |     ----------------- this field does not implement `Copy`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/hitable.rs:13:21
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl fmt::Debug for Hitable {
[INFO] [stdout]    |                     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl fmt::Debug for dyn Hitable {
[INFO] [stdout]    |                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/bvh_node.rs:85:32
[INFO] [stdout]    |
[INFO] [stdout] 85 |     pub fn new(l: &'a mut [Box<Hitable>]) -> BvhTree<'a> {
[INFO] [stdout]    |                                ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 85 |     pub fn new(l: &'a mut [Box<dyn Hitable>]) -> BvhTree<'a> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/bvh_node.rs:95:41
[INFO] [stdout]    |
[INFO] [stdout] 95 |     fn build(&mut self, l: &'a mut [Box<Hitable>]) -> NodeId {
[INFO] [stdout]    |                                         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 95 |     fn build(&mut self, l: &'a mut [Box<dyn Hitable>]) -> NodeId {
[INFO] [stdout]    |                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/bvh_node.rs:134:45
[INFO] [stdout]     |
[INFO] [stdout] 134 |     fn new_leaf(&mut self, hitable: &'a Box<Hitable>) -> NodeId {
[INFO] [stdout]     |                                             ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 134 |     fn new_leaf(&mut self, hitable: &'a Box<dyn Hitable>) -> NodeId {
[INFO] [stdout]     |                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/bvh_node.rs:189:26
[INFO] [stdout]     |
[INFO] [stdout] 189 | fn box_x_compare(a: &Box<Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]     |                          ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 189 | fn box_x_compare(a: &Box<dyn Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]     |                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/bvh_node.rs:189:44
[INFO] [stdout]     |
[INFO] [stdout] 189 | fn box_x_compare(a: &Box<Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]     |                                            ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 189 | fn box_x_compare(a: &Box<Hitable>, b: &Box<dyn Hitable>) -> Ordering {
[INFO] [stdout]     |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/bvh_node.rs:203:26
[INFO] [stdout]     |
[INFO] [stdout] 203 | fn box_y_compare(a: &Box<Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]     |                          ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 203 | fn box_y_compare(a: &Box<dyn Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]     |                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/bvh_node.rs:203:44
[INFO] [stdout]     |
[INFO] [stdout] 203 | fn box_y_compare(a: &Box<Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]     |                                            ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 203 | fn box_y_compare(a: &Box<Hitable>, b: &Box<dyn Hitable>) -> Ordering {
[INFO] [stdout]     |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/bvh_node.rs:217:26
[INFO] [stdout]     |
[INFO] [stdout] 217 | fn box_z_compare(a: &Box<Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]     |                          ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 217 | fn box_z_compare(a: &Box<dyn Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]     |                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/bvh_node.rs:217:44
[INFO] [stdout]     |
[INFO] [stdout] 217 | fn box_z_compare(a: &Box<Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]     |                                            ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 217 | fn box_z_compare(a: &Box<Hitable>, b: &Box<dyn Hitable>) -> Ordering {
[INFO] [stdout]     |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `(dyn Texture + 'static)` cannot be known at compilation time
[INFO] [stdout]  --> src/material.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 9 |     Lambertian(Texture),
[INFO] [stdout]   |                ^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]   |
[INFO] [stdout]   = help: the trait `Sized` is not implemented for `(dyn Texture + 'static)`
[INFO] [stdout]   = note: no field of an enum variant may have a dynamically sized type
[INFO] [stdout]   = help: change the field's type to have a statically known size
[INFO] [stdout] help: borrowed types always have a statically known size
[INFO] [stdout]   |
[INFO] [stdout] 9 |     Lambertian(&Texture),
[INFO] [stdout]   |                +
[INFO] [stdout] help: the `Box` type always has a statically known size and allocates its contents in the heap
[INFO] [stdout]   |
[INFO] [stdout] 9 |     Lambertian(Box<Texture>),
[INFO] [stdout]   |                ++++       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `(dyn Texture + 'static)` cannot be shared between threads safely
[INFO] [stdout]   --> src/sphere.rs:17:18
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl Hitable for Sphere {
[INFO] [stdout]    |                  ^^^^^^ `(dyn Texture + 'static)` cannot be shared between threads safely
[INFO] [stdout]    |
[INFO] [stdout]    = help: within `Sphere`, the trait `Sync` is not implemented for `(dyn Texture + 'static)`
[INFO] [stdout] note: required because it appears within the type `Material`
[INFO] [stdout]   --> src/material.rs:8:10
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub enum Material {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `Sphere`
[INFO] [stdout]   --> src/sphere.rs:7:12
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct Sphere {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] note: required by a bound in `Hitable`
[INFO] [stdout]   --> src/hitable.rs:8:20
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub trait Hitable: Sync {
[INFO] [stdout]    |                    ^^^^ required by this bound in `Hitable`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `(dyn Texture + 'static)` cannot be shared between threads safely
[INFO] [stdout]   --> src/sphere.rs:76:18
[INFO] [stdout]    |
[INFO] [stdout] 76 | impl Hitable for MovingSphere {
[INFO] [stdout]    |                  ^^^^^^^^^^^^ `(dyn Texture + 'static)` cannot be shared between threads safely
[INFO] [stdout]    |
[INFO] [stdout]    = help: within `MovingSphere`, the trait `Sync` is not implemented for `(dyn Texture + 'static)`
[INFO] [stdout] note: required because it appears within the type `Material`
[INFO] [stdout]   --> src/material.rs:8:10
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub enum Material {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `MovingSphere`
[INFO] [stdout]   --> src/sphere.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub struct MovingSphere {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `Hitable`
[INFO] [stdout]   --> src/hitable.rs:8:20
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub trait Hitable: Sync {
[INFO] [stdout]    |                    ^^^^ required by this bound in `Hitable`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `(dyn Texture + 'static)` cannot be shared between threads safely
[INFO] [stdout]   --> src/triangle.rs:15:18
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl Hitable for Triangle {
[INFO] [stdout]    |                  ^^^^^^^^ `(dyn Texture + 'static)` cannot be shared between threads safely
[INFO] [stdout]    |
[INFO] [stdout]    = help: within `Triangle`, the trait `Sync` is not implemented for `(dyn Texture + 'static)`
[INFO] [stdout] note: required because it appears within the type `Material`
[INFO] [stdout]   --> src/material.rs:8:10
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub enum Material {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `Triangle`
[INFO] [stdout]   --> src/triangle.rs:7:12
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct Triangle {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] note: required by a bound in `Hitable`
[INFO] [stdout]   --> src/hitable.rs:8:20
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub trait Hitable: Sync {
[INFO] [stdout]    |                    ^^^^ required by this bound in `Hitable`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/hitable_list.rs:21:37
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn push(&mut self, obj: Box<Hitable>) {
[INFO] [stdout]    |                                     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn push(&mut self, obj: Box<dyn Hitable>) {
[INFO] [stdout]    |                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:42:25
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub fn new(t0: &Box<Texture>, t1: &Box<Texture>) -> Checker {
[INFO] [stdout]    |                         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub fn new(t0: &Box<dyn Texture>, t1: &Box<Texture>) -> Checker {
[INFO] [stdout]    |                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:42:44
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub fn new(t0: &Box<Texture>, t1: &Box<Texture>) -> Checker {
[INFO] [stdout]    |                                            ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub fn new(t0: &Box<Texture>, t1: &Box<dyn Texture>) -> Checker {
[INFO] [stdout]    |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/hitable.rs:35:44
[INFO] [stdout]    |
[INFO] [stdout] 35 |             material: Material::Lambertian(Vec3::new(0.0, 0.0, 0.0)),
[INFO] [stdout]    |                       -------------------- ^^^^^^^^^^^^^^^^^^^^^^^^ expected `dyn Texture`, found `Vec3`
[INFO] [stdout]    |                       |
[INFO] [stdout]    |                       arguments to this enum variant are incorrect
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected trait object `(dyn Texture + 'static)`
[INFO] [stdout]                     found struct `Vec3`
[INFO] [stdout] note: tuple variant defined here
[INFO] [stdout]   --> src/material.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  9 |     Lambertian(Texture),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `(dyn Texture + 'static)` cannot be known at compilation time
[INFO] [stdout]   --> src/hitable.rs:35:44
[INFO] [stdout]    |
[INFO] [stdout] 35 |             material: Material::Lambertian(Vec3::new(0.0, 0.0, 0.0)),
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Sized` is not implemented for `(dyn Texture + 'static)`
[INFO] [stdout]    = note: all function arguments must have a statically known size
[INFO] [stdout]    = help: unsized fn params are gated as an unstable feature
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/hitable_list.rs:17:27
[INFO] [stdout]    |
[INFO] [stdout] 17 |         let objs: Vec<Box<Hitable>> = Vec::new();
[INFO] [stdout]    |                           ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |         let objs: Vec<Box<dyn Hitable>> = Vec::new();
[INFO] [stdout]    |                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/bvh_node.rs:21:29
[INFO] [stdout]    |
[INFO] [stdout] 21 |     hitable: Option<&'a Box<Hitable>>,
[INFO] [stdout]    |                             ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 21 |     hitable: Option<&'a Box<dyn Hitable>>,
[INFO] [stdout]    |                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/hitable_list.rs:9:23
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub objs: Vec<Box<Hitable>>,
[INFO] [stdout]   |                       ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 9 |     pub objs: Vec<Box<dyn Hitable>>,
[INFO] [stdout]   |                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `dyn Texture: Clone` is not satisfied
[INFO] [stdout]  --> src/material.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 7 | #[derive(Copy, Clone)]
[INFO] [stdout]   |                ----- in this derive macro expansion
[INFO] [stdout] 8 | pub enum Material {
[INFO] [stdout] 9 |     Lambertian(Texture),
[INFO] [stdout]   |                ^^^^^^^ the trait `Clone` is not implemented for `dyn Texture`
[INFO] [stdout]   |
[INFO] [stdout] note: required by a bound in `std::clone::AssertParamIsClone`
[INFO] [stdout]  --> /rustc/eeb94be79adc9df7a09ad0b2421f16e60e6d932c/library/core/src/clone.rs:357:0
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `(dyn Texture + 'static)` cannot be known at compilation time
[INFO] [stdout]    --> src/material.rs:131:34
[INFO] [stdout]     |
[INFO] [stdout] 131 |             Material::Lambertian(texture) => texture.value(0.0, 0.0, Vec3::new(0.0, 0.0, 0.0)),
[INFO] [stdout]     |                                  ^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `(dyn Texture + 'static)`
[INFO] [stdout]     = note: all local variables must have a statically known size
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/material.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 9 |     Lambertian(Texture),
[INFO] [stdout]   |                ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 9 |     Lambertian(dyn Texture),
[INFO] [stdout]   |                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:26:14
[INFO] [stdout]    |
[INFO] [stdout] 26 |     odd: Box<Texture>,
[INFO] [stdout]    |              ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 26 |     odd: Box<dyn Texture>,
[INFO] [stdout]    |              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:27:15
[INFO] [stdout]    |
[INFO] [stdout] 27 |     even: Box<Texture>,
[INFO] [stdout]    |               ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 27 |     even: Box<dyn Texture>,
[INFO] [stdout]    |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/parser.rs:60:42
[INFO] [stdout]    |
[INFO] [stdout] 60 |                     Material::Lambertian(Vec3::new(1.0, 0.0, 0.0)),
[INFO] [stdout]    |                     -------------------- ^^^^^^^^^^^^^^^^^^^^^^^^ expected `dyn Texture`, found `Vec3`
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     arguments to this enum variant are incorrect
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected trait object `(dyn Texture + 'static)`
[INFO] [stdout]                     found struct `Vec3`
[INFO] [stdout] note: tuple variant defined here
[INFO] [stdout]   --> src/material.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  9 |     Lambertian(Texture),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `(dyn Texture + 'static)` cannot be known at compilation time
[INFO] [stdout]   --> src/parser.rs:60:42
[INFO] [stdout]    |
[INFO] [stdout] 60 |                     Material::Lambertian(Vec3::new(1.0, 0.0, 0.0)),
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Sized` is not implemented for `(dyn Texture + 'static)`
[INFO] [stdout]    = note: all function arguments must have a statically known size
[INFO] [stdout]    = help: unsized fn params are gated as an unstable feature
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `dyn Texture: Clone` is not satisfied
[INFO] [stdout]   --> src/texture.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | #[derive(Copy, Clone)]
[INFO] [stdout]    |                ----- in this derive macro expansion
[INFO] [stdout] 25 | pub struct Checker {
[INFO] [stdout] 26 |     odd: Box<Texture>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^ the trait `Clone` is not implemented for `dyn Texture`
[INFO] [stdout]    |
[INFO] [stdout]    = note: required for `Box<dyn Texture>` to implement `Clone`
[INFO] [stdout] note: required by a bound in `std::clone::AssertParamIsClone`
[INFO] [stdout]   --> /rustc/eeb94be79adc9df7a09ad0b2421f16e60e6d932c/library/core/src/clone.rs:357:0
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `dyn Texture: Clone` is not satisfied
[INFO] [stdout]   --> src/texture.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | #[derive(Copy, Clone)]
[INFO] [stdout]    |                ----- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 27 |     even: Box<Texture>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^ the trait `Clone` is not implemented for `dyn Texture`
[INFO] [stdout]    |
[INFO] [stdout]    = note: required for `Box<dyn Texture>` to implement `Clone`
[INFO] [stdout] note: required by a bound in `std::clone::AssertParamIsClone`
[INFO] [stdout]   --> /rustc/eeb94be79adc9df7a09ad0b2421f16e60e6d932c/library/core/src/clone.rs:357:0
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0204]: the trait `Copy` cannot be implemented for this type
[INFO] [stdout]  --> src/material.rs:8:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | #[derive(Copy, Clone)]
[INFO] [stdout]   |          ---- in this derive macro expansion
[INFO] [stdout] 8 | pub enum Material {
[INFO] [stdout]   |          ^^^^^^^^
[INFO] [stdout] 9 |     Lambertian(Texture),
[INFO] [stdout]   |                ------- this field does not implement `Copy`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0204]: the trait `Copy` cannot be implemented for this type
[INFO] [stdout]   --> src/texture.rs:25:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | #[derive(Copy, Clone)]
[INFO] [stdout]    |          ---- in this derive macro expansion
[INFO] [stdout] 25 | pub struct Checker {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 26 |     odd: Box<Texture>,
[INFO] [stdout]    |     ----------------- this field does not implement `Copy`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: cannot multiply `{integer}` by `f32`
[INFO] [stdout]   --> src/texture.rs:32:42
[INFO] [stdout]    |
[INFO] [stdout] 32 |         let sines = f32::sin(f32::sin(10 * p.x()) * f32::sin(10 * p.y()) * f32::sin(10 * p.z()));
[INFO] [stdout]    |                                          ^ no implementation for `{integer} * f32`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Mul<f32>` is not implemented for `{integer}`
[INFO] [stdout]    = help: the following other types implement trait `Mul<Rhs>`:
[INFO] [stdout]              `&f128` implements `Mul<f128>`
[INFO] [stdout]              `&f128` implements `Mul`
[INFO] [stdout]              `&f16` implements `Mul<f16>`
[INFO] [stdout]              `&f16` implements `Mul`
[INFO] [stdout]              `&f32` implements `Mul<f32>`
[INFO] [stdout]              `&f32` implements `Mul`
[INFO] [stdout]              `&f64` implements `Mul<f64>`
[INFO] [stdout]              `&f64` implements `Mul`
[INFO] [stdout]            and 58 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: cannot multiply `{integer}` by `f32`
[INFO] [stdout]   --> src/texture.rs:32:65
[INFO] [stdout]    |
[INFO] [stdout] 32 |         let sines = f32::sin(f32::sin(10 * p.x()) * f32::sin(10 * p.y()) * f32::sin(10 * p.z()));
[INFO] [stdout]    |                                                                 ^ no implementation for `{integer} * f32`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Mul<f32>` is not implemented for `{integer}`
[INFO] [stdout]    = help: the following other types implement trait `Mul<Rhs>`:
[INFO] [stdout]              `&f128` implements `Mul<f128>`
[INFO] [stdout]              `&f128` implements `Mul`
[INFO] [stdout]              `&f16` implements `Mul<f16>`
[INFO] [stdout]              `&f16` implements `Mul`
[INFO] [stdout]              `&f32` implements `Mul<f32>`
[INFO] [stdout]              `&f32` implements `Mul`
[INFO] [stdout]              `&f64` implements `Mul<f64>`
[INFO] [stdout]              `&f64` implements `Mul`
[INFO] [stdout]            and 58 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/hitable.rs:13:21
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl fmt::Debug for Hitable {
[INFO] [stdout]    |                     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl fmt::Debug for dyn Hitable {
[INFO] [stdout]    |                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: cannot multiply `{integer}` by `f32`
[INFO] [stdout]   --> src/texture.rs:32:88
[INFO] [stdout]    |
[INFO] [stdout] 32 |         let sines = f32::sin(f32::sin(10 * p.x()) * f32::sin(10 * p.y()) * f32::sin(10 * p.z()));
[INFO] [stdout]    |                                                                                        ^ no implementation for `{integer} * f32`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Mul<f32>` is not implemented for `{integer}`
[INFO] [stdout]    = help: the following other types implement trait `Mul<Rhs>`:
[INFO] [stdout]              `&f128` implements `Mul<f128>`
[INFO] [stdout]              `&f128` implements `Mul`
[INFO] [stdout]              `&f16` implements `Mul<f16>`
[INFO] [stdout]              `&f16` implements `Mul`
[INFO] [stdout]              `&f32` implements `Mul<f32>`
[INFO] [stdout]              `&f32` implements `Mul`
[INFO] [stdout]              `&f64` implements `Mul<f64>`
[INFO] [stdout]              `&f64` implements `Mul`
[INFO] [stdout]            and 58 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/texture.rs:33:24
[INFO] [stdout]    |
[INFO] [stdout] 33 |           if sines < 0.0 {
[INFO] [stdout]    |  ________________________^
[INFO] [stdout] 34 | |             self.odd.value(u, v, p);
[INFO] [stdout]    | |                                    - help: remove this semicolon to return this value
[INFO] [stdout] 35 | |         } else {
[INFO] [stdout]    | |_________^ expected `Vec3`, found `()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/texture.rs:35:16
[INFO] [stdout]    |
[INFO] [stdout] 35 |           } else {
[INFO] [stdout]    |  ________________^
[INFO] [stdout] 36 | |             self.even.value(u, v, p);
[INFO] [stdout]    | |                                     - help: remove this semicolon to return this value
[INFO] [stdout] 37 | |         }
[INFO] [stdout]    | |_________^ expected `Vec3`, found `()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/bvh_node.rs:85:32
[INFO] [stdout]    |
[INFO] [stdout] 85 |     pub fn new(l: &'a mut [Box<Hitable>]) -> BvhTree<'a> {
[INFO] [stdout]    |                                ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 85 |     pub fn new(l: &'a mut [Box<dyn Hitable>]) -> BvhTree<'a> {
[INFO] [stdout]    |                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/bvh_node.rs:95:41
[INFO] [stdout]    |
[INFO] [stdout] 95 |     fn build(&mut self, l: &'a mut [Box<Hitable>]) -> NodeId {
[INFO] [stdout]    |                                         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 95 |     fn build(&mut self, l: &'a mut [Box<dyn Hitable>]) -> NodeId {
[INFO] [stdout]    |                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/bvh_node.rs:134:45
[INFO] [stdout]     |
[INFO] [stdout] 134 |     fn new_leaf(&mut self, hitable: &'a Box<Hitable>) -> NodeId {
[INFO] [stdout]     |                                             ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 134 |     fn new_leaf(&mut self, hitable: &'a Box<dyn Hitable>) -> NodeId {
[INFO] [stdout]     |                                             +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/bvh_node.rs:189:26
[INFO] [stdout]     |
[INFO] [stdout] 189 | fn box_x_compare(a: &Box<Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]     |                          ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 189 | fn box_x_compare(a: &Box<dyn Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]     |                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/texture.rs:44:18
[INFO] [stdout]    |
[INFO] [stdout] 44 |             odd: t0,
[INFO] [stdout]    |                  ^^ expected `Box<dyn Texture>`, found `&Box<dyn Texture>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected struct `Box<_>`
[INFO] [stdout]            found reference `&Box<_>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/bvh_node.rs:189:44
[INFO] [stdout]     |
[INFO] [stdout] 189 | fn box_x_compare(a: &Box<Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]     |                                            ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 189 | fn box_x_compare(a: &Box<Hitable>, b: &Box<dyn Hitable>) -> Ordering {
[INFO] [stdout]     |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/bvh_node.rs:203:26
[INFO] [stdout]     |
[INFO] [stdout] 203 | fn box_y_compare(a: &Box<Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]     |                          ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 203 | fn box_y_compare(a: &Box<dyn Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]     |                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/bvh_node.rs:203:44
[INFO] [stdout]     |
[INFO] [stdout] 203 | fn box_y_compare(a: &Box<Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]     |                                            ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 203 | fn box_y_compare(a: &Box<Hitable>, b: &Box<dyn Hitable>) -> Ordering {
[INFO] [stdout]     |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/bvh_node.rs:217:26
[INFO] [stdout]     |
[INFO] [stdout] 217 | fn box_z_compare(a: &Box<Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]     |                          ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 217 | fn box_z_compare(a: &Box<dyn Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]     |                          +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/bvh_node.rs:217:44
[INFO] [stdout]     |
[INFO] [stdout] 217 | fn box_z_compare(a: &Box<Hitable>, b: &Box<Hitable>) -> Ordering {
[INFO] [stdout]     |                                            ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 217 | fn box_z_compare(a: &Box<Hitable>, b: &Box<dyn Hitable>) -> Ordering {
[INFO] [stdout]     |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/texture.rs:45:19
[INFO] [stdout]    |
[INFO] [stdout] 45 |             even: t1,
[INFO] [stdout]    |                   ^^ expected `Box<dyn Texture>`, found `&Box<dyn Texture>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected struct `Box<_>`
[INFO] [stdout]            found reference `&Box<_>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `(dyn Texture + 'static)` cannot be known at compilation time
[INFO] [stdout]  --> src/material.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 9 |     Lambertian(Texture),
[INFO] [stdout]   |                ^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]   |
[INFO] [stdout]   = help: the trait `Sized` is not implemented for `(dyn Texture + 'static)`
[INFO] [stdout]   = note: no field of an enum variant may have a dynamically sized type
[INFO] [stdout]   = help: change the field's type to have a statically known size
[INFO] [stdout] help: borrowed types always have a statically known size
[INFO] [stdout]   |
[INFO] [stdout] 9 |     Lambertian(&Texture),
[INFO] [stdout]   |                +
[INFO] [stdout] help: the `Box` type always has a statically known size and allocates its contents in the heap
[INFO] [stdout]   |
[INFO] [stdout] 9 |     Lambertian(Box<Texture>),
[INFO] [stdout]   |                ++++       +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `(dyn Texture + 'static)` cannot be shared between threads safely
[INFO] [stdout]   --> src/sphere.rs:17:18
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl Hitable for Sphere {
[INFO] [stdout]    |                  ^^^^^^ `(dyn Texture + 'static)` cannot be shared between threads safely
[INFO] [stdout]    |
[INFO] [stdout]    = help: within `Sphere`, the trait `Sync` is not implemented for `(dyn Texture + 'static)`
[INFO] [stdout] note: required because it appears within the type `Material`
[INFO] [stdout]   --> src/material.rs:8:10
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub enum Material {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `Sphere`
[INFO] [stdout]   --> src/sphere.rs:7:12
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct Sphere {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] note: required by a bound in `Hitable`
[INFO] [stdout]   --> src/hitable.rs:8:20
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub trait Hitable: Sync {
[INFO] [stdout]    |                    ^^^^ required by this bound in `Hitable`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `(dyn Texture + 'static)` cannot be shared between threads safely
[INFO] [stdout]   --> src/sphere.rs:76:18
[INFO] [stdout]    |
[INFO] [stdout] 76 | impl Hitable for MovingSphere {
[INFO] [stdout]    |                  ^^^^^^^^^^^^ `(dyn Texture + 'static)` cannot be shared between threads safely
[INFO] [stdout]    |
[INFO] [stdout]    = help: within `MovingSphere`, the trait `Sync` is not implemented for `(dyn Texture + 'static)`
[INFO] [stdout] note: required because it appears within the type `Material`
[INFO] [stdout]   --> src/material.rs:8:10
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub enum Material {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `MovingSphere`
[INFO] [stdout]   --> src/sphere.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 67 | pub struct MovingSphere {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] note: required by a bound in `Hitable`
[INFO] [stdout]   --> src/hitable.rs:8:20
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub trait Hitable: Sync {
[INFO] [stdout]    |                    ^^^^ required by this bound in `Hitable`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/main.rs:126:30
[INFO] [stdout]     |
[INFO] [stdout] 126 |         Material::Lambertian(Vec3::new(0.5, 0.4, 0.5)),
[INFO] [stdout]     |         -------------------- ^^^^^^^^^^^^^^^^^^^^^^^^ expected `dyn Texture`, found `Vec3`
[INFO] [stdout]     |         |
[INFO] [stdout]     |         arguments to this enum variant are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected trait object `(dyn Texture + 'static)`
[INFO] [stdout]                      found struct `Vec3`
[INFO] [stdout] note: tuple variant defined here
[INFO] [stdout]    --> src/material.rs:9:5
[INFO] [stdout]     |
[INFO] [stdout]   9 |     Lambertian(Texture),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `(dyn Texture + 'static)` cannot be shared between threads safely
[INFO] [stdout]   --> src/triangle.rs:15:18
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl Hitable for Triangle {
[INFO] [stdout]    |                  ^^^^^^^^ `(dyn Texture + 'static)` cannot be shared between threads safely
[INFO] [stdout]    |
[INFO] [stdout]    = help: within `Triangle`, the trait `Sync` is not implemented for `(dyn Texture + 'static)`
[INFO] [stdout] note: required because it appears within the type `Material`
[INFO] [stdout]   --> src/material.rs:8:10
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub enum Material {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] note: required because it appears within the type `Triangle`
[INFO] [stdout]   --> src/triangle.rs:7:12
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct Triangle {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] note: required by a bound in `Hitable`
[INFO] [stdout]   --> src/hitable.rs:8:20
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub trait Hitable: Sync {
[INFO] [stdout]    |                    ^^^^ required by this bound in `Hitable`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/main.rs:144:46
[INFO] [stdout]     |
[INFO] [stdout] 144 |                           Material::Lambertian(Vec3::new(
[INFO] [stdout]     |  _________________________--------------------_^
[INFO] [stdout]     | |                         |
[INFO] [stdout]     | |                         arguments to this enum variant are incorrect
[INFO] [stdout] 145 | |                             rng.gen_range(0.0, 1.0) * rng.gen_range(0.0, 1.0),
[INFO] [stdout] 146 | |                             rng.gen_range(0.0, 1.0) * rng.gen_range(0.0, 1.0),
[INFO] [stdout] 147 | |                             rng.gen_range(0.0, 1.0) * rng.gen_range(0.0, 1.0),
[INFO] [stdout] 148 | |                         )),
[INFO] [stdout]     | |_________________________^ expected `dyn Texture`, found `Vec3`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected trait object `(dyn Texture + 'static)`
[INFO] [stdout]                      found struct `Vec3`
[INFO] [stdout] note: tuple variant defined here
[INFO] [stdout]    --> src/material.rs:9:5
[INFO] [stdout]     |
[INFO] [stdout]   9 |     Lambertian(Texture),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/main.rs:177:30
[INFO] [stdout]     |
[INFO] [stdout] 177 |         Material::Lambertian(Vec3::new(0.1, 0.2, 0.5)),
[INFO] [stdout]     |         -------------------- ^^^^^^^^^^^^^^^^^^^^^^^^ expected `dyn Texture`, found `Vec3`
[INFO] [stdout]     |         |
[INFO] [stdout]     |         arguments to this enum variant are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected trait object `(dyn Texture + 'static)`
[INFO] [stdout]                      found struct `Vec3`
[INFO] [stdout] note: tuple variant defined here
[INFO] [stdout]    --> src/material.rs:9:5
[INFO] [stdout]     |
[INFO] [stdout]   9 |     Lambertian(Texture),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `(dyn Texture + 'static)` cannot be known at compilation time
[INFO] [stdout]    --> src/main.rs:126:30
[INFO] [stdout]     |
[INFO] [stdout] 126 |         Material::Lambertian(Vec3::new(0.5, 0.4, 0.5)),
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `(dyn Texture + 'static)`
[INFO] [stdout]     = note: all function arguments must have a statically known size
[INFO] [stdout]     = help: unsized fn params are gated as an unstable feature
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/hitable_list.rs:21:37
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn push(&mut self, obj: Box<Hitable>) {
[INFO] [stdout]    |                                     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 21 |     pub fn push(&mut self, obj: Box<dyn Hitable>) {
[INFO] [stdout]    |                                     +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:42:25
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub fn new(t0: &Box<Texture>, t1: &Box<Texture>) -> Checker {
[INFO] [stdout]    |                         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub fn new(t0: &Box<dyn Texture>, t1: &Box<Texture>) -> Checker {
[INFO] [stdout]    |                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/texture.rs:42:44
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub fn new(t0: &Box<Texture>, t1: &Box<Texture>) -> Checker {
[INFO] [stdout]    |                                            ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 42 |     pub fn new(t0: &Box<Texture>, t1: &Box<dyn Texture>) -> Checker {
[INFO] [stdout]    |                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `pathtracer` (bin "pathtracer") due to 25 previous errors; 30 warnings emitted
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]   --> src/hitable_list.rs:48:32
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                                ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]   --> src/hitable_list.rs:48:41
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                                         ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/hitable_list.rs:65:13
[INFO] [stdout]    |
[INFO] [stdout] 65 |         for i in 1..self.objs.len() {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `u`
[INFO] [stdout]   --> src/texture.rs:13:21
[INFO] [stdout]    |
[INFO] [stdout] 13 |     fn value(&self, u: f32, v: f32, p: Vec3) -> Vec3 {
[INFO] [stdout]    |                     ^ help: if this is intentional, prefix it with an underscore: `_u`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]   --> src/texture.rs:13:29
[INFO] [stdout]    |
[INFO] [stdout] 13 |     fn value(&self, u: f32, v: f32, p: Vec3) -> Vec3 {
[INFO] [stdout]    |                             ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]   --> src/texture.rs:13:37
[INFO] [stdout]    |
[INFO] [stdout] 13 |     fn value(&self, u: f32, v: f32, p: Vec3) -> Vec3 {
[INFO] [stdout]    |                                     ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/hitable.rs:35:44
[INFO] [stdout]    |
[INFO] [stdout] 35 |             material: Material::Lambertian(Vec3::new(0.0, 0.0, 0.0)),
[INFO] [stdout]    |                       -------------------- ^^^^^^^^^^^^^^^^^^^^^^^^ expected `dyn Texture`, found `Vec3`
[INFO] [stdout]    |                       |
[INFO] [stdout]    |                       arguments to this enum variant are incorrect
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected trait object `(dyn Texture + 'static)`
[INFO] [stdout]                     found struct `Vec3`
[INFO] [stdout] note: tuple variant defined here
[INFO] [stdout]   --> src/material.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  9 |     Lambertian(Texture),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `(dyn Texture + 'static)` cannot be known at compilation time
[INFO] [stdout]   --> src/hitable.rs:35:44
[INFO] [stdout]    |
[INFO] [stdout] 35 |             material: Material::Lambertian(Vec3::new(0.0, 0.0, 0.0)),
[INFO] [stdout]    |                                            ^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Sized` is not implemented for `(dyn Texture + 'static)`
[INFO] [stdout]    = note: all function arguments must have a statically known size
[INFO] [stdout]    = help: unsized fn params are gated as an unstable feature
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/hitable_list.rs:17:27
[INFO] [stdout]    |
[INFO] [stdout] 17 |         let objs: Vec<Box<Hitable>> = Vec::new();
[INFO] [stdout]    |                           ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 17 |         let objs: Vec<Box<dyn Hitable>> = Vec::new();
[INFO] [stdout]    |                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/hitable_list.rs:84:30
[INFO] [stdout]    |
[INFO] [stdout] 84 |         Material::Lambertian(Vec3::new(0.0, 0.0, 0.0)),
[INFO] [stdout]    |         -------------------- ^^^^^^^^^^^^^^^^^^^^^^^^ expected `dyn Texture`, found `Vec3`
[INFO] [stdout]    |         |
[INFO] [stdout]    |         arguments to this enum variant are incorrect
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected trait object `(dyn Texture + 'static)`
[INFO] [stdout]                     found struct `Vec3`
[INFO] [stdout] note: tuple variant defined here
[INFO] [stdout]   --> src/material.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  9 |     Lambertian(Texture),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/hitable_list.rs:104:30
[INFO] [stdout]     |
[INFO] [stdout] 104 |         Material::Lambertian(Vec3::new(0.0, 0.0, 0.0)),
[INFO] [stdout]     |         -------------------- ^^^^^^^^^^^^^^^^^^^^^^^^ expected `dyn Texture`, found `Vec3`
[INFO] [stdout]     |         |
[INFO] [stdout]     |         arguments to this enum variant are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected trait object `(dyn Texture + 'static)`
[INFO] [stdout]                      found struct `Vec3`
[INFO] [stdout] note: tuple variant defined here
[INFO] [stdout]    --> src/material.rs:9:5
[INFO] [stdout]     |
[INFO] [stdout]   9 |     Lambertian(Texture),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `(dyn Texture + 'static)` cannot be known at compilation time
[INFO] [stdout]   --> src/hitable_list.rs:84:30
[INFO] [stdout]    |
[INFO] [stdout] 84 |         Material::Lambertian(Vec3::new(0.0, 0.0, 0.0)),
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Sized` is not implemented for `(dyn Texture + 'static)`
[INFO] [stdout]    = note: all function arguments must have a statically known size
[INFO] [stdout]    = help: unsized fn params are gated as an unstable feature
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `dyn Texture: Clone` is not satisfied
[INFO] [stdout]  --> src/material.rs:9:16
[INFO] [stdout]   |
[INFO] [stdout] 7 | #[derive(Copy, Clone)]
[INFO] [stdout]   |                ----- in this derive macro expansion
[INFO] [stdout] 8 | pub enum Material {
[INFO] [stdout] 9 |     Lambertian(Texture),
[INFO] [stdout]   |                ^^^^^^^ the trait `Clone` is not implemented for `dyn Texture`
[INFO] [stdout]   |
[INFO] [stdout] note: required by a bound in `std::clone::AssertParamIsClone`
[INFO] [stdout]  --> /rustc/eeb94be79adc9df7a09ad0b2421f16e60e6d932c/library/core/src/clone.rs:357:0
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `(dyn Texture + 'static)` cannot be known at compilation time
[INFO] [stdout]    --> src/material.rs:131:34
[INFO] [stdout]     |
[INFO] [stdout] 131 |             Material::Lambertian(texture) => texture.value(0.0, 0.0, Vec3::new(0.0, 0.0, 0.0)),
[INFO] [stdout]     |                                  ^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `(dyn Texture + 'static)`
[INFO] [stdout]     = note: all local variables must have a statically known size
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/material.rs:140:36
[INFO] [stdout]     |
[INFO] [stdout] 140 |     let mat = Material::Lambertian(Vec3::new(1.0, 0.0, 0.0));
[INFO] [stdout]     |               -------------------- ^^^^^^^^^^^^^^^^^^^^^^^^ expected `dyn Texture`, found `Vec3`
[INFO] [stdout]     |               |
[INFO] [stdout]     |               arguments to this enum variant are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected trait object `(dyn Texture + 'static)`
[INFO] [stdout]                      found struct `Vec3`
[INFO] [stdout] note: tuple variant defined here
[INFO] [stdout]    --> src/material.rs:9:5
[INFO] [stdout]     |
[INFO] [stdout]   9 |     Lambertian(Texture),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `(dyn Texture + 'static)` cannot be known at compilation time
[INFO] [stdout]    --> src/material.rs:140:36
[INFO] [stdout]     |
[INFO] [stdout] 140 |     let mat = Material::Lambertian(Vec3::new(1.0, 0.0, 0.0));
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `(dyn Texture + 'static)`
[INFO] [stdout]     = note: all function arguments must have a statically known size
[INFO] [stdout]     = help: unsized fn params are gated as an unstable feature
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0204, E0277, E0308.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0204`.
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/parser.rs:60:42
[INFO] [stdout]    |
[INFO] [stdout] 60 |                     Material::Lambertian(Vec3::new(1.0, 0.0, 0.0)),
[INFO] [stdout]    |                     -------------------- ^^^^^^^^^^^^^^^^^^^^^^^^ expected `dyn Texture`, found `Vec3`
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     arguments to this enum variant are incorrect
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected trait object `(dyn Texture + 'static)`
[INFO] [stdout]                     found struct `Vec3`
[INFO] [stdout] note: tuple variant defined here
[INFO] [stdout]   --> src/material.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  9 |     Lambertian(Texture),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `(dyn Texture + 'static)` cannot be known at compilation time
[INFO] [stdout]   --> src/parser.rs:60:42
[INFO] [stdout]    |
[INFO] [stdout] 60 |                     Material::Lambertian(Vec3::new(1.0, 0.0, 0.0)),
[INFO] [stdout]    |                                          ^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Sized` is not implemented for `(dyn Texture + 'static)`
[INFO] [stdout]    = note: all function arguments must have a statically known size
[INFO] [stdout]    = help: unsized fn params are gated as an unstable feature
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/renderer.rs:136:30
[INFO] [stdout]     |
[INFO] [stdout] 136 |         Material::Lambertian(Vec3::new(0.5, 0.4, 0.5)),
[INFO] [stdout]     |         -------------------- ^^^^^^^^^^^^^^^^^^^^^^^^ expected `dyn Texture`, found `Vec3`
[INFO] [stdout]     |         |
[INFO] [stdout]     |         arguments to this enum variant are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected trait object `(dyn Texture + 'static)`
[INFO] [stdout]                      found struct `Vec3`
[INFO] [stdout] note: tuple variant defined here
[INFO] [stdout]    --> src/material.rs:9:5
[INFO] [stdout]     |
[INFO] [stdout]   9 |     Lambertian(Texture),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `(dyn Texture + 'static)` cannot be known at compilation time
[INFO] [stdout]    --> src/renderer.rs:136:30
[INFO] [stdout]     |
[INFO] [stdout] 136 |         Material::Lambertian(Vec3::new(0.5, 0.4, 0.5)),
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `(dyn Texture + 'static)`
[INFO] [stdout]     = note: all function arguments must have a statically known size
[INFO] [stdout]     = help: unsized fn params are gated as an unstable feature
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `dyn Texture: Clone` is not satisfied
[INFO] [stdout]   --> src/texture.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | #[derive(Copy, Clone)]
[INFO] [stdout]    |                ----- in this derive macro expansion
[INFO] [stdout] 25 | pub struct Checker {
[INFO] [stdout] 26 |     odd: Box<Texture>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^ the trait `Clone` is not implemented for `dyn Texture`
[INFO] [stdout]    |
[INFO] [stdout]    = note: required for `Box<dyn Texture>` to implement `Clone`
[INFO] [stdout] note: required by a bound in `std::clone::AssertParamIsClone`
[INFO] [stdout]   --> /rustc/eeb94be79adc9df7a09ad0b2421f16e60e6d932c/library/core/src/clone.rs:357:0
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `dyn Texture: Clone` is not satisfied
[INFO] [stdout]   --> src/texture.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | #[derive(Copy, Clone)]
[INFO] [stdout]    |                ----- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 27 |     even: Box<Texture>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^ the trait `Clone` is not implemented for `dyn Texture`
[INFO] [stdout]    |
[INFO] [stdout]    = note: required for `Box<dyn Texture>` to implement `Clone`
[INFO] [stdout] note: required by a bound in `std::clone::AssertParamIsClone`
[INFO] [stdout]   --> /rustc/eeb94be79adc9df7a09ad0b2421f16e60e6d932c/library/core/src/clone.rs:357:0
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: cannot multiply `{integer}` by `f32`
[INFO] [stdout]   --> src/texture.rs:32:42
[INFO] [stdout]    |
[INFO] [stdout] 32 |         let sines = f32::sin(f32::sin(10 * p.x()) * f32::sin(10 * p.y()) * f32::sin(10 * p.z()));
[INFO] [stdout]    |                                          ^ no implementation for `{integer} * f32`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Mul<f32>` is not implemented for `{integer}`
[INFO] [stdout]    = help: the following other types implement trait `Mul<Rhs>`:
[INFO] [stdout]              `&f128` implements `Mul<f128>`
[INFO] [stdout]              `&f128` implements `Mul`
[INFO] [stdout]              `&f16` implements `Mul<f16>`
[INFO] [stdout]              `&f16` implements `Mul`
[INFO] [stdout]              `&f32` implements `Mul<f32>`
[INFO] [stdout]              `&f32` implements `Mul`
[INFO] [stdout]              `&f64` implements `Mul<f64>`
[INFO] [stdout]              `&f64` implements `Mul`
[INFO] [stdout]            and 58 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: cannot multiply `{integer}` by `f32`
[INFO] [stdout]   --> src/texture.rs:32:65
[INFO] [stdout]    |
[INFO] [stdout] 32 |         let sines = f32::sin(f32::sin(10 * p.x()) * f32::sin(10 * p.y()) * f32::sin(10 * p.z()));
[INFO] [stdout]    |                                                                 ^ no implementation for `{integer} * f32`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Mul<f32>` is not implemented for `{integer}`
[INFO] [stdout]    = help: the following other types implement trait `Mul<Rhs>`:
[INFO] [stdout]              `&f128` implements `Mul<f128>`
[INFO] [stdout]              `&f128` implements `Mul`
[INFO] [stdout]              `&f16` implements `Mul<f16>`
[INFO] [stdout]              `&f16` implements `Mul`
[INFO] [stdout]              `&f32` implements `Mul<f32>`
[INFO] [stdout]              `&f32` implements `Mul`
[INFO] [stdout]              `&f64` implements `Mul<f64>`
[INFO] [stdout]              `&f64` implements `Mul`
[INFO] [stdout]            and 58 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: cannot multiply `{integer}` by `f32`
[INFO] [stdout]   --> src/texture.rs:32:88
[INFO] [stdout]    |
[INFO] [stdout] 32 |         let sines = f32::sin(f32::sin(10 * p.x()) * f32::sin(10 * p.y()) * f32::sin(10 * p.z()));
[INFO] [stdout]    |                                                                                        ^ no implementation for `{integer} * f32`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Mul<f32>` is not implemented for `{integer}`
[INFO] [stdout]    = help: the following other types implement trait `Mul<Rhs>`:
[INFO] [stdout]              `&f128` implements `Mul<f128>`
[INFO] [stdout]              `&f128` implements `Mul`
[INFO] [stdout]              `&f16` implements `Mul<f16>`
[INFO] [stdout]              `&f16` implements `Mul`
[INFO] [stdout]              `&f32` implements `Mul<f32>`
[INFO] [stdout]              `&f32` implements `Mul`
[INFO] [stdout]              `&f64` implements `Mul<f64>`
[INFO] [stdout]              `&f64` implements `Mul`
[INFO] [stdout]            and 58 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/texture.rs:33:24
[INFO] [stdout]    |
[INFO] [stdout] 33 |           if sines < 0.0 {
[INFO] [stdout]    |  ________________________^
[INFO] [stdout] 34 | |             self.odd.value(u, v, p);
[INFO] [stdout]    | |                                    - help: remove this semicolon to return this value
[INFO] [stdout] 35 | |         } else {
[INFO] [stdout]    | |_________^ expected `Vec3`, found `()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/texture.rs:35:16
[INFO] [stdout]    |
[INFO] [stdout] 35 |           } else {
[INFO] [stdout]    |  ________________^
[INFO] [stdout] 36 | |             self.even.value(u, v, p);
[INFO] [stdout]    | |                                     - help: remove this semicolon to return this value
[INFO] [stdout] 37 | |         }
[INFO] [stdout]    | |_________^ expected `Vec3`, found `()`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/texture.rs:44:18
[INFO] [stdout]    |
[INFO] [stdout] 44 |             odd: t0,
[INFO] [stdout]    |                  ^^ expected `Box<dyn Texture>`, found `&Box<dyn Texture>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected struct `Box<_>`
[INFO] [stdout]            found reference `&Box<_>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/texture.rs:45:19
[INFO] [stdout]    |
[INFO] [stdout] 45 |             even: t1,
[INFO] [stdout]    |                   ^^ expected `Box<dyn Texture>`, found `&Box<dyn Texture>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected struct `Box<_>`
[INFO] [stdout]            found reference `&Box<_>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/triangle.rs:90:30
[INFO] [stdout]    |
[INFO] [stdout] 90 |         Material::Lambertian(Vec3::new(1.0, 1.0, 1.0)),
[INFO] [stdout]    |         -------------------- ^^^^^^^^^^^^^^^^^^^^^^^^ expected `dyn Texture`, found `Vec3`
[INFO] [stdout]    |         |
[INFO] [stdout]    |         arguments to this enum variant are incorrect
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected trait object `(dyn Texture + 'static)`
[INFO] [stdout]                     found struct `Vec3`
[INFO] [stdout] note: tuple variant defined here
[INFO] [stdout]   --> src/material.rs:9:5
[INFO] [stdout]    |
[INFO] [stdout]  9 |     Lambertian(Texture),
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `(dyn Texture + 'static)` cannot be known at compilation time
[INFO] [stdout]   --> src/triangle.rs:90:30
[INFO] [stdout]    |
[INFO] [stdout] 90 |         Material::Lambertian(Vec3::new(1.0, 1.0, 1.0)),
[INFO] [stdout]    |                              ^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]    |
[INFO] [stdout]    = help: the trait `Sized` is not implemented for `(dyn Texture + 'static)`
[INFO] [stdout]    = note: all function arguments must have a statically known size
[INFO] [stdout]    = help: unsized fn params are gated as an unstable feature
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/main.rs:126:30
[INFO] [stdout]     |
[INFO] [stdout] 126 |         Material::Lambertian(Vec3::new(0.5, 0.4, 0.5)),
[INFO] [stdout]     |         -------------------- ^^^^^^^^^^^^^^^^^^^^^^^^ expected `dyn Texture`, found `Vec3`
[INFO] [stdout]     |         |
[INFO] [stdout]     |         arguments to this enum variant are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected trait object `(dyn Texture + 'static)`
[INFO] [stdout]                      found struct `Vec3`
[INFO] [stdout] note: tuple variant defined here
[INFO] [stdout]    --> src/material.rs:9:5
[INFO] [stdout]     |
[INFO] [stdout]   9 |     Lambertian(Texture),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/main.rs:144:46
[INFO] [stdout]     |
[INFO] [stdout] 144 |                           Material::Lambertian(Vec3::new(
[INFO] [stdout]     |  _________________________--------------------_^
[INFO] [stdout]     | |                         |
[INFO] [stdout]     | |                         arguments to this enum variant are incorrect
[INFO] [stdout] 145 | |                             rng.gen_range(0.0, 1.0) * rng.gen_range(0.0, 1.0),
[INFO] [stdout] 146 | |                             rng.gen_range(0.0, 1.0) * rng.gen_range(0.0, 1.0),
[INFO] [stdout] 147 | |                             rng.gen_range(0.0, 1.0) * rng.gen_range(0.0, 1.0),
[INFO] [stdout] 148 | |                         )),
[INFO] [stdout]     | |_________________________^ expected `dyn Texture`, found `Vec3`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected trait object `(dyn Texture + 'static)`
[INFO] [stdout]                      found struct `Vec3`
[INFO] [stdout] note: tuple variant defined here
[INFO] [stdout]    --> src/material.rs:9:5
[INFO] [stdout]     |
[INFO] [stdout]   9 |     Lambertian(Texture),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> src/main.rs:177:30
[INFO] [stdout]     |
[INFO] [stdout] 177 |         Material::Lambertian(Vec3::new(0.1, 0.2, 0.5)),
[INFO] [stdout]     |         -------------------- ^^^^^^^^^^^^^^^^^^^^^^^^ expected `dyn Texture`, found `Vec3`
[INFO] [stdout]     |         |
[INFO] [stdout]     |         arguments to this enum variant are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected trait object `(dyn Texture + 'static)`
[INFO] [stdout]                      found struct `Vec3`
[INFO] [stdout] note: tuple variant defined here
[INFO] [stdout]    --> src/material.rs:9:5
[INFO] [stdout]     |
[INFO] [stdout]   9 |     Lambertian(Texture),
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the size for values of type `(dyn Texture + 'static)` cannot be known at compilation time
[INFO] [stdout]    --> src/main.rs:126:30
[INFO] [stdout]     |
[INFO] [stdout] 126 |         Material::Lambertian(Vec3::new(0.5, 0.4, 0.5)),
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Sized` is not implemented for `(dyn Texture + 'static)`
[INFO] [stdout]     = note: all function arguments must have a statically known size
[INFO] [stdout]     = help: unsized fn params are gated as an unstable feature
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]   --> src/hitable_list.rs:48:32
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                                ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]   --> src/hitable_list.rs:48:41
[INFO] [stdout]    |
[INFO] [stdout] 48 |     pub fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                                         ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/hitable_list.rs:65:13
[INFO] [stdout]    |
[INFO] [stdout] 65 |         for i in 1..self.objs.len() {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `u`
[INFO] [stdout]   --> src/texture.rs:13:21
[INFO] [stdout]    |
[INFO] [stdout] 13 |     fn value(&self, u: f32, v: f32, p: Vec3) -> Vec3 {
[INFO] [stdout]    |                     ^ help: if this is intentional, prefix it with an underscore: `_u`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `v`
[INFO] [stdout]   --> src/texture.rs:13:29
[INFO] [stdout]    |
[INFO] [stdout] 13 |     fn value(&self, u: f32, v: f32, p: Vec3) -> Vec3 {
[INFO] [stdout]    |                             ^ help: if this is intentional, prefix it with an underscore: `_v`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]   --> src/texture.rs:13:37
[INFO] [stdout]    |
[INFO] [stdout] 13 |     fn value(&self, u: f32, v: f32, p: Vec3) -> Vec3 {
[INFO] [stdout]    |                                     ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0204, E0277, E0308.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0204`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `pathtracer` (bin "pathtracer" test) due to 34 previous errors; 25 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "6a2d6cc3676c543beb958cf9d66a234830a2068d4e83692066822044635572df", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6a2d6cc3676c543beb958cf9d66a234830a2068d4e83692066822044635572df", kill_on_drop: false }`
[INFO] [stdout] 6a2d6cc3676c543beb958cf9d66a234830a2068d4e83692066822044635572df
