[INFO] cloning repository https://github.com/rlupton20/yars-raytracer
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/rlupton20/yars-raytracer" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frlupton20%2Fyars-raytracer", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frlupton20%2Fyars-raytracer'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 88d606611dd91b24ffed565271196d0d48193d47
[INFO] testing rlupton20/yars-raytracer against 1.75.0 for beta-1.76-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frlupton20%2Fyars-raytracer" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/rlupton20/yars-raytracer on toolchain 1.75.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.75.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/rlupton20/yars-raytracer
[INFO] finished tweaking git repo https://github.com/rlupton20/yars-raytracer
[INFO] tweaked toml for git repo https://github.com/rlupton20/yars-raytracer written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] crate git repo https://github.com/rlupton20/yars-raytracer already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.75.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded rustc-serialize v0.3.20
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+1.75.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 5e0f566bc05381165635979c29269f057c1dabf7b820162c9476abb7b2df8de5
[INFO] running `Command { std: "docker" "start" "-a" "5e0f566bc05381165635979c29269f057c1dabf7b820162c9476abb7b2df8de5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "5e0f566bc05381165635979c29269f057c1dabf7b820162c9476abb7b2df8de5", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "5e0f566bc05381165635979c29269f057c1dabf7b820162c9476abb7b2df8de5", kill_on_drop: false }`
[INFO] [stdout] 5e0f566bc05381165635979c29269f057c1dabf7b820162c9476abb7b2df8de5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+1.75.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 1cf60f8fbb78d50a65e7e5db685639e6dc7bb63b65ec8a6f138892d30a246317
[INFO] running `Command { std: "docker" "start" "-a" "1cf60f8fbb78d50a65e7e5db685639e6dc7bb63b65ec8a6f138892d30a246317", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.17
[INFO] [stderr]    Compiling num-traits v0.1.36
[INFO] [stderr]    Compiling gcc v0.3.38
[INFO] [stderr]    Compiling rustc-serialize v0.3.20
[INFO] [stderr]    Compiling inflate v0.1.1
[INFO] [stderr]    Compiling byteorder v0.5.3
[INFO] [stderr]    Compiling lzw v0.10.0
[INFO] [stderr]    Compiling bitflags v0.7.0
[INFO] [stderr]    Compiling color_quant v1.0.0
[INFO] [stderr]    Compiling glob v0.2.11
[INFO] [stderr]    Compiling rand v0.3.14
[INFO] [stderr]    Compiling num_cpus v1.1.0
[INFO] [stderr]    Compiling gif v0.9.0
[INFO] [stderr]    Compiling num-integer v0.1.32
[INFO] [stderr]    Compiling miniz-sys v0.1.7
[INFO] [stderr]    Compiling num-iter v0.1.32
[INFO] [stderr]    Compiling num v0.1.36
[INFO] [stderr]    Compiling scoped_threadpool v0.1.7
[INFO] [stderr]    Compiling enum_primitive v0.1.0
[INFO] [stderr]    Compiling deque v0.3.1
[INFO] [stderr]    Compiling rayon v0.5.0
[INFO] [stderr]    Compiling flate2 v0.2.14
[INFO] [stderr]    Compiling jpeg-decoder v0.1.8
[INFO] [stderr]    Compiling png v0.5.2
[INFO] [stderr]    Compiling num-bigint v0.1.35
[INFO] [stderr]    Compiling num-rational v0.1.35
[INFO] [stderr]    Compiling image v0.10.3
[INFO] [stderr]    Compiling yars-raytracer v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::vec::Vec`
[INFO] [stdout]  --> src/space_algebra/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::vec::Vec;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `InnerProductSpace`
[INFO] [stdout]  --> src/ray/mod.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use algebra::{InnerProductSpace, Real};
[INFO] [stdout]   |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `algebra::InnerProductSpace`
[INFO] [stdout]  --> src/camera/mod.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use algebra::InnerProductSpace;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f64::consts::PI`
[INFO] [stdout]  --> src/camera/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::f64::consts::PI;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `image::Rgb`
[INFO] [stdout]  --> src/materials/mod.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use image::Rgb;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `image::Rgb`
[INFO] [stdout]  --> src/shapes/mod.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use image::Rgb;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `shapes::Sphere`
[INFO] [stdout]  --> src/shade/mod.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use shapes::Sphere;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ray`, `Shadable`
[INFO] [stdout]  --> src/shade/mod.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | use ray::{Ray, ShadeCell, Shadable};
[INFO] [stdout]   |           ^^^             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Add`, `Mul`
[INFO] [stdout]  --> src/shade/mod.rs:8:16
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::ops::{Add, Mul};
[INFO] [stdout]   |                ^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/scene/mod.rs:18:27
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub objects : Vec<Box<Shadable>>,
[INFO] [stdout]    |                           ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub objects : Vec<Box<dyn Shadable>>,
[INFO] [stdout]    |                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ray/mod.rs:37:41
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub fn intersection(&self, object: &Intersectable) -> Option<Vec3> {
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub fn intersection(&self, object: &dyn Intersectable) -> Option<Vec3> {
[INFO] [stdout]    |                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ray/mod.rs:41:33
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn hits(&self, object: &Intersectable) -> bool {
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn hits(&self, object: &dyn Intersectable) -> bool {
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ray/mod.rs:45:50
[INFO] [stdout]    |
[INFO] [stdout] 45 |     pub fn trace<'a>(&self, objects: &'a Vec<Box<Shadable>>) -> Option<ShadeCell<'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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 45 |     pub fn trace<'a>(&self, objects: &'a Vec<Box<dyn Shadable>>) -> Option<ShadeCell<'a>> {
[INFO] [stdout]    |                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/scene/mod.rs:23:60
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn illuminates(&self, p : Vec3, objects : &Vec<Box<Shadable>>) -> bool {
[INFO] [stdout]    |                                                            ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn illuminates(&self, p : Vec3, objects : &Vec<Box<dyn Shadable>>) -> bool {
[INFO] [stdout]    |                                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shade/mod.rs:93:27
[INFO] [stdout]    |
[INFO] [stdout] 93 |         let adjust = |f: &Fn(Rgb<u8>) -> u8, a : f64| approx(a * (f(c) as f64));
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 93 |         let adjust = |f: &dyn Fn(Rgb<u8>) -> u8, a : f64| approx(a * (f(c) as f64));
[INFO] [stdout]    |                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/raytrace/mod.rs:46:27
[INFO] [stdout]    |
[INFO] [stdout] 46 |         let adjust = |f: &Fn(Rgb<u8>) -> u8, a : f64| approx(a * (f(c) as f64));
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 46 |         let adjust = |f: &dyn Fn(Rgb<u8>) -> u8, a : f64| approx(a * (f(c) as f64));
[INFO] [stdout]    |                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `algebra::Group`
[INFO] [stdout]  --> src/space_algebra/mod.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use algebra::Group;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/raytrace/mod.rs:21:28
[INFO] [stdout]    |
[INFO] [stdout] 21 |                 .filter(|&(i,op_col)| op_col.is_some())
[INFO] [stdout]    |                            ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]   --> src/camera/mod.rs:71:17
[INFO] [stdout]    |
[INFO] [stdout] 71 |         assert!(x >= 0);
[INFO] [stdout]    |                 ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]   --> src/camera/mod.rs:73:17
[INFO] [stdout]    |
[INFO] [stdout] 73 |         assert!(y >= 0);
[INFO] [stdout]    |                 ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 20 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `yars_raytracer::algebra::InnerProductSpace`
[INFO] [stdout]  --> src/main.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use yars_raytracer::algebra::InnerProductSpace;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `yars_raytracer::ray::Orientable`
[INFO] [stdout]   --> src/main.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use yars_raytracer::ray::Orientable;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Shader`
[INFO] [stdout]   --> src/main.rs:13:29
[INFO] [stdout]    |
[INFO] [stdout] 13 | use yars_raytracer::shade::{Shader, PhongShader};
[INFO] [stdout]    |                             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ray`, `ShadeCell`
[INFO] [stdout]   --> src/main.rs:19:27
[INFO] [stdout]    |
[INFO] [stdout] 19 | use yars_raytracer::ray::{Ray, Shadable, ShadeCell};
[INFO] [stdout]    |                           ^^^            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/main.rs:54:86
[INFO] [stdout]    |
[INFO] [stdout] 54 |         Box::new(Plane::new(Vec3(1.0, 0.0, 0.0), Vec3(0.0, 0.0, 1.0), slate)) as Box<Shadable>;
[INFO] [stdout]    |                                                                                      ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 54 |         Box::new(Plane::new(Vec3(1.0, 0.0, 0.0), Vec3(0.0, 0.0, 1.0), slate)) as Box<dyn Shadable>;
[INFO] [stdout]    |                                                                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/main.rs:55:80
[INFO] [stdout]    |
[INFO] [stdout] 55 |     let sphere = Box::new(Sphere::new(Vec3(0.0, -1.0, 5.0), 1.0, mat1)) as Box<Shadable>;
[INFO] [stdout]    |                                                                                ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 55 |     let sphere = Box::new(Sphere::new(Vec3(0.0, -1.0, 5.0), 1.0, mat1)) as Box<dyn Shadable>;
[INFO] [stdout]    |                                                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/main.rs:56:79
[INFO] [stdout]    |
[INFO] [stdout] 56 |     let obst = Box::new(Sphere::new(Vec3(-2.0, -0.5, 4.0), 0.5, mat2)) as Box<Shadable>;
[INFO] [stdout]    |                                                                               ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 56 |     let obst = Box::new(Sphere::new(Vec3(-2.0, -0.5, 4.0), 0.5, mat2)) as Box<dyn Shadable>;
[INFO] [stdout]    |                                                                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a_colour`
[INFO] [stdout]   --> src/main.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |     let a_colour = Rgb([255 as u8; 3]);
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_a_colour`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `WIDTH` should have a snake case name
[INFO] [stdout]   --> src/main.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 |     let WIDTH = 800;
[INFO] [stdout]    |         ^^^^^ help: convert the identifier to snake case: `width`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `HEIGHT` should have a snake case name
[INFO] [stdout]   --> src/main.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 23 |     let HEIGHT = 600;
[INFO] [stdout]    |         ^^^^^^ help: convert the identifier to snake case: `height`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `OUTPUT` should have a snake case name
[INFO] [stdout]   --> src/main.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 24 |     let OUTPUT = "output.png";
[INFO] [stdout]    |         ^^^^^^ help: convert the identifier to snake case: `output`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 11 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished dev [unoptimized + debuginfo] target(s) in 3.74s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: rustc-serialize v0.3.20
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] running `Command { std: "docker" "inspect" "1cf60f8fbb78d50a65e7e5db685639e6dc7bb63b65ec8a6f138892d30a246317", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1cf60f8fbb78d50a65e7e5db685639e6dc7bb63b65ec8a6f138892d30a246317", kill_on_drop: false }`
[INFO] [stdout] 1cf60f8fbb78d50a65e7e5db685639e6dc7bb63b65ec8a6f138892d30a246317
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+1.75.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 85cd82d4225795d956db32e33eff8a8b708af8231dd9f9119c2e87aa7c874ae0
[INFO] running `Command { std: "docker" "start" "-a" "85cd82d4225795d956db32e33eff8a8b708af8231dd9f9119c2e87aa7c874ae0", kill_on_drop: false }`
[INFO] [stdout] warning: unused import: `std::vec::Vec`
[INFO] [stdout]  --> src/space_algebra/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::vec::Vec;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `InnerProductSpace`
[INFO] [stdout]  --> src/ray/mod.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use algebra::{InnerProductSpace, Real};
[INFO] [stdout]   |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `algebra::InnerProductSpace`
[INFO] [stdout]  --> src/camera/mod.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use algebra::InnerProductSpace;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::f64::consts::PI`
[INFO] [stdout]  --> src/camera/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::f64::consts::PI;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `image::Rgb`
[INFO] [stdout]  --> src/materials/mod.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use image::Rgb;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `image::Rgb`
[INFO] [stdout]  --> src/shapes/mod.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use image::Rgb;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `shapes::Sphere`
[INFO] [stdout]  --> src/shade/mod.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use shapes::Sphere;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ray`, `Shadable`
[INFO] [stdout]  --> src/shade/mod.rs:7:11
[INFO] [stdout]   |
[INFO] [stdout] 7 | use ray::{Ray, ShadeCell, Shadable};
[INFO] [stdout]   |           ^^^             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Add`, `Mul`
[INFO] [stdout]  --> src/shade/mod.rs:8:16
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::ops::{Add, Mul};
[INFO] [stdout]   |                ^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/scene/mod.rs:18:27
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub objects : Vec<Box<Shadable>>,
[INFO] [stdout]    |                           ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub objects : Vec<Box<dyn Shadable>>,
[INFO] [stdout]    |                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ray/mod.rs:37:41
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub fn intersection(&self, object: &Intersectable) -> Option<Vec3> {
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub fn intersection(&self, object: &dyn Intersectable) -> Option<Vec3> {
[INFO] [stdout]    |                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ray/mod.rs:41:33
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn hits(&self, object: &Intersectable) -> bool {
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn hits(&self, object: &dyn Intersectable) -> bool {
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ray/mod.rs:45:50
[INFO] [stdout]    |
[INFO] [stdout] 45 |     pub fn trace<'a>(&self, objects: &'a Vec<Box<Shadable>>) -> Option<ShadeCell<'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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 45 |     pub fn trace<'a>(&self, objects: &'a Vec<Box<dyn Shadable>>) -> Option<ShadeCell<'a>> {
[INFO] [stdout]    |                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/scene/mod.rs:23:60
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn illuminates(&self, p : Vec3, objects : &Vec<Box<Shadable>>) -> bool {
[INFO] [stdout]    |                                                            ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn illuminates(&self, p : Vec3, objects : &Vec<Box<dyn Shadable>>) -> bool {
[INFO] [stdout]    |                                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shade/mod.rs:93:27
[INFO] [stdout]    |
[INFO] [stdout] 93 |         let adjust = |f: &Fn(Rgb<u8>) -> u8, a : f64| approx(a * (f(c) as f64));
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 93 |         let adjust = |f: &dyn Fn(Rgb<u8>) -> u8, a : f64| approx(a * (f(c) as f64));
[INFO] [stdout]    |                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/raytrace/mod.rs:46:27
[INFO] [stdout]    |
[INFO] [stdout] 46 |         let adjust = |f: &Fn(Rgb<u8>) -> u8, a : f64| approx(a * (f(c) as f64));
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 46 |         let adjust = |f: &dyn Fn(Rgb<u8>) -> u8, a : f64| approx(a * (f(c) as f64));
[INFO] [stdout]    |                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `algebra::Group`
[INFO] [stdout]  --> src/space_algebra/mod.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use algebra::Group;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/raytrace/mod.rs:21:28
[INFO] [stdout]    |
[INFO] [stdout] 21 |                 .filter(|&(i,op_col)| op_col.is_some())
[INFO] [stdout]    |                            ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]   --> src/camera/mod.rs:71:17
[INFO] [stdout]    |
[INFO] [stdout] 71 |         assert!(x >= 0);
[INFO] [stdout]    |                 ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]   --> src/camera/mod.rs:73:17
[INFO] [stdout]    |
[INFO] [stdout] 73 |         assert!(y >= 0);
[INFO] [stdout]    |                 ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling yars-raytracer v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: 20 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `yars_raytracer::algebra::InnerProductSpace`
[INFO] [stdout]  --> src/main.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use yars_raytracer::algebra::InnerProductSpace;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `yars_raytracer::ray::Orientable`
[INFO] [stdout]   --> src/main.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use yars_raytracer::ray::Orientable;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Shader`
[INFO] [stdout]   --> src/main.rs:13:29
[INFO] [stdout]    |
[INFO] [stdout] 13 | use yars_raytracer::shade::{Shader, PhongShader};
[INFO] [stdout]    |                             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ray`, `ShadeCell`
[INFO] [stdout]   --> src/main.rs:19:27
[INFO] [stdout]    |
[INFO] [stdout] 19 | use yars_raytracer::ray::{Ray, Shadable, ShadeCell};
[INFO] [stdout]    |                           ^^^            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/main.rs:54:86
[INFO] [stdout]    |
[INFO] [stdout] 54 |         Box::new(Plane::new(Vec3(1.0, 0.0, 0.0), Vec3(0.0, 0.0, 1.0), slate)) as Box<Shadable>;
[INFO] [stdout]    |                                                                                      ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 54 |         Box::new(Plane::new(Vec3(1.0, 0.0, 0.0), Vec3(0.0, 0.0, 1.0), slate)) as Box<dyn Shadable>;
[INFO] [stdout]    |                                                                                      +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/main.rs:55:80
[INFO] [stdout]    |
[INFO] [stdout] 55 |     let sphere = Box::new(Sphere::new(Vec3(0.0, -1.0, 5.0), 1.0, mat1)) as Box<Shadable>;
[INFO] [stdout]    |                                                                                ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 55 |     let sphere = Box::new(Sphere::new(Vec3(0.0, -1.0, 5.0), 1.0, mat1)) as Box<dyn Shadable>;
[INFO] [stdout]    |                                                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/main.rs:56:79
[INFO] [stdout]    |
[INFO] [stdout] 56 |     let obst = Box::new(Sphere::new(Vec3(-2.0, -0.5, 4.0), 0.5, mat2)) as Box<Shadable>;
[INFO] [stdout]    |                                                                               ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 56 |     let obst = Box::new(Sphere::new(Vec3(-2.0, -0.5, 4.0), 0.5, mat2)) as Box<dyn Shadable>;
[INFO] [stdout]    |                                                                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::vec::Vec`
[INFO] [stdout]  --> src/space_algebra/mod.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::vec::Vec;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `InnerProductSpace`
[INFO] [stdout]  --> src/ray/mod.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use algebra::{InnerProductSpace, Real};
[INFO] [stdout]   |               ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `image::Rgb`
[INFO] [stdout]  --> src/materials/mod.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use image::Rgb;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `image::Rgb`
[INFO] [stdout]  --> src/shapes/mod.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use image::Rgb;
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Add`, `Mul`
[INFO] [stdout]  --> src/shade/mod.rs:8:16
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::ops::{Add, Mul};
[INFO] [stdout]   |                ^^^  ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]    --> src/shade/mod.rs:186:9
[INFO] [stdout]     |
[INFO] [stdout] 186 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `image::Rgb`
[INFO] [stdout]    --> src/shade/mod.rs:187:9
[INFO] [stdout]     |
[INFO] [stdout] 187 |     use image::Rgb;
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `vector3d::Vec3`
[INFO] [stdout]    --> src/shade/mod.rs:188:9
[INFO] [stdout]     |
[INFO] [stdout] 188 |     use vector3d::Vec3;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `a_colour`
[INFO] [stdout]   --> src/main.rs:33:9
[INFO] [stdout]    |
[INFO] [stdout] 33 |     let a_colour = Rgb([255 as u8; 3]);
[INFO] [stdout]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_a_colour`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/scene/mod.rs:18:27
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub objects : Vec<Box<Shadable>>,
[INFO] [stdout]    |                           ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 18 |     pub objects : Vec<Box<dyn Shadable>>,
[INFO] [stdout]    |                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `WIDTH` should have a snake case name
[INFO] [stdout]   --> src/main.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 |     let WIDTH = 800;
[INFO] [stdout]    |         ^^^^^ help: convert the identifier to snake case: `width`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `HEIGHT` should have a snake case name
[INFO] [stdout]   --> src/main.rs:23:9
[INFO] [stdout]    |
[INFO] [stdout] 23 |     let HEIGHT = 600;
[INFO] [stdout]    |         ^^^^^^ help: convert the identifier to snake case: `height`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `OUTPUT` should have a snake case name
[INFO] [stdout]   --> src/main.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 24 |     let OUTPUT = "output.png";
[INFO] [stdout]    |         ^^^^^^ help: convert the identifier to snake case: `output`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ray/mod.rs:37:41
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub fn intersection(&self, object: &Intersectable) -> Option<Vec3> {
[INFO] [stdout]    |                                         ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 37 |     pub fn intersection(&self, object: &dyn Intersectable) -> Option<Vec3> {
[INFO] [stdout]    |                                         +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ray/mod.rs:41:33
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn hits(&self, object: &Intersectable) -> bool {
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 41 |     pub fn hits(&self, object: &dyn Intersectable) -> bool {
[INFO] [stdout]    |                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/ray/mod.rs:45:50
[INFO] [stdout]    |
[INFO] [stdout] 45 |     pub fn trace<'a>(&self, objects: &'a Vec<Box<Shadable>>) -> Option<ShadeCell<'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/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 45 |     pub fn trace<'a>(&self, objects: &'a Vec<Box<dyn Shadable>>) -> Option<ShadeCell<'a>> {
[INFO] [stdout]    |                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/scene/mod.rs:23:60
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn illuminates(&self, p : Vec3, objects : &Vec<Box<Shadable>>) -> bool {
[INFO] [stdout]    |                                                            ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 23 |     pub fn illuminates(&self, p : Vec3, objects : &Vec<Box<dyn Shadable>>) -> bool {
[INFO] [stdout]    |                                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ray/mod.rs:105:82
[INFO] [stdout]     |
[INFO] [stdout] 105 |         let sphere_1 = Box::new(Sphere::simple(Vec3(0.0, 0.0, 0.0), 1.0)) as Box<Shadable>;
[INFO] [stdout]     |                                                                                  ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 105 |         let sphere_1 = Box::new(Sphere::simple(Vec3(0.0, 0.0, 0.0), 1.0)) as Box<dyn Shadable>;
[INFO] [stdout]     |                                                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ray/mod.rs:106:82
[INFO] [stdout]     |
[INFO] [stdout] 106 |         let sphere_2 = Box::new(Sphere::simple(Vec3(3.0, 0.0, 0.0), 1.0)) as Box<Shadable>;
[INFO] [stdout]     |                                                                                  ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 106 |         let sphere_2 = Box::new(Sphere::simple(Vec3(3.0, 0.0, 0.0), 1.0)) as Box<dyn Shadable>;
[INFO] [stdout]     |                                                                                  +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ray/mod.rs:123:80
[INFO] [stdout]     |
[INFO] [stdout] 123 |         let sphere = Box::new(Sphere::simple(Vec3(0.0, 0.0, 0.0), 1.0)) as Box<Shadable>;
[INFO] [stdout]     |                                                                                ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 123 |         let sphere = Box::new(Sphere::simple(Vec3(0.0, 0.0, 0.0), 1.0)) as Box<dyn Shadable>;
[INFO] [stdout]     |                                                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ray/mod.rs:137:80
[INFO] [stdout]     |
[INFO] [stdout] 137 |         let sphere = Box::new(Sphere::simple(Vec3(0.0, 0.0, 3.0), 1.0)) as Box<Shadable>;
[INFO] [stdout]     |                                                                                ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 137 |         let sphere = Box::new(Sphere::simple(Vec3(0.0, 0.0, 3.0), 1.0)) as Box<dyn Shadable>;
[INFO] [stdout]     |                                                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/ray/mod.rs:138:79
[INFO] [stdout]     |
[INFO] [stdout] 138 |         let obst = Box::new(Sphere::simple(Vec3(-3.0, 0.0, 3.0), 1.0)) as Box<Shadable>;
[INFO] [stdout]     |                                                                               ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 138 |         let obst = Box::new(Sphere::simple(Vec3(-3.0, 0.0, 3.0), 1.0)) as Box<dyn Shadable>;
[INFO] [stdout]     |                                                                               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/shade/mod.rs:93:27
[INFO] [stdout]    |
[INFO] [stdout] 93 |         let adjust = |f: &Fn(Rgb<u8>) -> u8, a : f64| approx(a * (f(c) as f64));
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 93 |         let adjust = |f: &dyn Fn(Rgb<u8>) -> u8, a : f64| approx(a * (f(c) as f64));
[INFO] [stdout]    |                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/shade/mod.rs:161:76
[INFO] [stdout]     |
[INFO] [stdout] 161 |     let sphere = Box::new(Sphere::simple(Vec3(0.0, 0.0, 0.0), 1.0)) as Box<Shadable>;
[INFO] [stdout]     |                                                                            ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 161 |     let sphere = Box::new(Sphere::simple(Vec3(0.0, 0.0, 0.0), 1.0)) as Box<dyn Shadable>;
[INFO] [stdout]     |                                                                            +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/scene/mod.rs:51:80
[INFO] [stdout]    |
[INFO] [stdout] 51 |         let sphere = Box::new(Sphere::simple(Vec3(0.0, 0.0, 0.0), 1.0)) as Box<Shadable>;
[INFO] [stdout]    |                                                                                ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 51 |         let sphere = Box::new(Sphere::simple(Vec3(0.0, 0.0, 0.0), 1.0)) as Box<dyn Shadable>;
[INFO] [stdout]    |                                                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/scene/mod.rs:65:80
[INFO] [stdout]    |
[INFO] [stdout] 65 |         let sphere = Box::new(Sphere::simple(Vec3(0.0, 0.0, 0.0), 1.0)) as Box<Shadable>;
[INFO] [stdout]    |                                                                                ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 65 |         let sphere = Box::new(Sphere::simple(Vec3(0.0, 0.0, 0.0), 1.0)) as Box<dyn Shadable>;
[INFO] [stdout]    |                                                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/scene/mod.rs:79:80
[INFO] [stdout]    |
[INFO] [stdout] 79 |         let sphere = Box::new(Sphere::simple(Vec3(0.0, 0.0, 0.0), 1.0)) as Box<Shadable>;
[INFO] [stdout]    |                                                                                ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 79 |         let sphere = Box::new(Sphere::simple(Vec3(0.0, 0.0, 0.0), 1.0)) as Box<dyn Shadable>;
[INFO] [stdout]    |                                                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/scene/mod.rs:93:80
[INFO] [stdout]    |
[INFO] [stdout] 93 |         let sphere = Box::new(Sphere::simple(Vec3(0.0, 0.0, 0.0), 1.0)) as Box<Shadable>;
[INFO] [stdout]    |                                                                                ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 93 |         let sphere = Box::new(Sphere::simple(Vec3(0.0, 0.0, 0.0), 1.0)) as Box<dyn Shadable>;
[INFO] [stdout]    |                                                                                +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/scene/mod.rs:94:81
[INFO] [stdout]    |
[INFO] [stdout] 94 |         let hidden = Box::new(Sphere::simple(Vec3(-5.0, 0.0, 0.0), 1.0)) as Box<Shadable>;
[INFO] [stdout]    |                                                                                 ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 94 |         let hidden = Box::new(Sphere::simple(Vec3(-5.0, 0.0, 0.0), 1.0)) as Box<dyn Shadable>;
[INFO] [stdout]    |                                                                                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/raytrace/mod.rs:46:27
[INFO] [stdout]    |
[INFO] [stdout] 46 |         let adjust = |f: &Fn(Rgb<u8>) -> u8, a : f64| approx(a * (f(c) as f64));
[INFO] [stdout]    |                           ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 46 |         let adjust = |f: &dyn Fn(Rgb<u8>) -> u8, a : f64| approx(a * (f(c) as f64));
[INFO] [stdout]    |                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `algebra::Group`
[INFO] [stdout]  --> src/space_algebra/mod.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use algebra::Group;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/raytrace/mod.rs:21:28
[INFO] [stdout]    |
[INFO] [stdout] 21 |                 .filter(|&(i,op_col)| op_col.is_some())
[INFO] [stdout]    |                            ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_SO3_multiplication` should have a snake case name
[INFO] [stdout]   --> src/space_algebra/mod.rs:94:4
[INFO] [stdout]    |
[INFO] [stdout] 94 | fn test_SO3_multiplication() {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `test_so3_multiplication`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(non_snake_case)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_SO3_multiply_vector` should have a snake case name
[INFO] [stdout]    --> src/space_algebra/mod.rs:101:4
[INFO] [stdout]     |
[INFO] [stdout] 101 | fn test_SO3_multiply_vector() {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `test_so3_multiply_vector`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]   --> src/camera/mod.rs:71:17
[INFO] [stdout]    |
[INFO] [stdout] 71 |         assert!(x >= 0);
[INFO] [stdout]    |                 ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]   --> src/camera/mod.rs:73:17
[INFO] [stdout]    |
[INFO] [stdout] 73 |         assert!(y >= 0);
[INFO] [stdout]    |                 ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 11 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 32 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished test [unoptimized + debuginfo] target(s) in 0.59s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: rustc-serialize v0.3.20
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] running `Command { std: "docker" "inspect" "85cd82d4225795d956db32e33eff8a8b708af8231dd9f9119c2e87aa7c874ae0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "85cd82d4225795d956db32e33eff8a8b708af8231dd9f9119c2e87aa7c874ae0", kill_on_drop: false }`
[INFO] [stdout] 85cd82d4225795d956db32e33eff8a8b708af8231dd9f9119c2e87aa7c874ae0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+1.75.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 052472b18c7a4196fce3a6ba560ad02e5e00309e4253bd4b040a65e17c53834e
[INFO] running `Command { std: "docker" "start" "-a" "052472b18c7a4196fce3a6ba560ad02e5e00309e4253bd4b040a65e17c53834e", kill_on_drop: false }`
[INFO] [stderr] warning: unused import: `std::vec::Vec`
[INFO] [stderr]  --> src/space_algebra/mod.rs:8:5
[INFO] [stderr]   |
[INFO] [stderr] 8 | use std::vec::Vec;
[INFO] [stderr]   |     ^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `InnerProductSpace`
[INFO] [stderr]  --> src/ray/mod.rs:4:15
[INFO] [stderr]   |
[INFO] [stderr] 4 | use algebra::{InnerProductSpace, Real};
[INFO] [stderr]   |               ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `algebra::InnerProductSpace`
[INFO] [stderr]  --> src/camera/mod.rs:3:5
[INFO] [stderr]   |
[INFO] [stderr] 3 | use algebra::InnerProductSpace;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::f64::consts::PI`
[INFO] [stderr]  --> src/camera/mod.rs:8:5
[INFO] [stderr]   |
[INFO] [stderr] 8 | use std::f64::consts::PI;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `image::Rgb`
[INFO] [stderr]  --> src/materials/mod.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use image::Rgb;
[INFO] [stderr]   |     ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `image::Rgb`
[INFO] [stderr]  --> src/shapes/mod.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use image::Rgb;
[INFO] [stderr]   |     ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `shapes::Sphere`
[INFO] [stderr]  --> src/shade/mod.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use shapes::Sphere;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Ray`, `Shadable`
[INFO] [stderr]  --> src/shade/mod.rs:7:11
[INFO] [stderr]   |
[INFO] [stderr] 7 | use ray::{Ray, ShadeCell, Shadable};
[INFO] [stderr]   |           ^^^             ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Add`, `Mul`
[INFO] [stderr]  --> src/shade/mod.rs:8:16
[INFO] [stderr]   |
[INFO] [stderr] 8 | use std::ops::{Add, Mul};
[INFO] [stderr]   |                ^^^  ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/scene/mod.rs:18:27
[INFO] [stderr]    |
[INFO] [stderr] 18 |     pub objects : Vec<Box<Shadable>>,
[INFO] [stderr]    |                           ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stderr] help: use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 18 |     pub objects : Vec<Box<dyn Shadable>>,
[INFO] [stderr]    |                           +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/ray/mod.rs:37:41
[INFO] [stderr]    |
[INFO] [stderr] 37 |     pub fn intersection(&self, object: &Intersectable) -> Option<Vec3> {
[INFO] [stderr]    |                                         ^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 37 |     pub fn intersection(&self, object: &dyn Intersectable) -> Option<Vec3> {
[INFO] [stderr]    |                                         +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/ray/mod.rs:41:33
[INFO] [stderr]    |
[INFO] [stderr] 41 |     pub fn hits(&self, object: &Intersectable) -> bool {
[INFO] [stderr]    |                                 ^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 41 |     pub fn hits(&self, object: &dyn Intersectable) -> bool {
[INFO] [stderr]    |                                 +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/ray/mod.rs:45:50
[INFO] [stderr]    |
[INFO] [stderr] 45 |     pub fn trace<'a>(&self, objects: &'a Vec<Box<Shadable>>) -> Option<ShadeCell<'a>> {
[INFO] [stderr]    |                                                  ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 45 |     pub fn trace<'a>(&self, objects: &'a Vec<Box<dyn Shadable>>) -> Option<ShadeCell<'a>> {
[INFO] [stderr]    |                                                  +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/scene/mod.rs:23:60
[INFO] [stderr]    |
[INFO] [stderr] 23 |     pub fn illuminates(&self, p : Vec3, objects : &Vec<Box<Shadable>>) -> bool {
[INFO] [stderr]    |                                                            ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 23 |     pub fn illuminates(&self, p : Vec3, objects : &Vec<Box<dyn Shadable>>) -> bool {
[INFO] [stderr]    |                                                            +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/shade/mod.rs:93:27
[INFO] [stderr]    |
[INFO] [stderr] 93 |         let adjust = |f: &Fn(Rgb<u8>) -> u8, a : f64| approx(a * (f(c) as f64));
[INFO] [stderr]    |                           ^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 93 |         let adjust = |f: &dyn Fn(Rgb<u8>) -> u8, a : f64| approx(a * (f(c) as f64));
[INFO] [stderr]    |                           +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/raytrace/mod.rs:46:27
[INFO] [stderr]    |
[INFO] [stderr] 46 |         let adjust = |f: &Fn(Rgb<u8>) -> u8, a : f64| approx(a * (f(c) as f64));
[INFO] [stderr]    |                           ^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 46 |         let adjust = |f: &dyn Fn(Rgb<u8>) -> u8, a : f64| approx(a * (f(c) as f64));
[INFO] [stderr]    |                           +++
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `algebra::Group`
[INFO] [stderr]  --> src/space_algebra/mod.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 6 | use algebra::Group;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `i`
[INFO] [stderr]   --> src/raytrace/mod.rs:21:28
[INFO] [stderr]    |
[INFO] [stderr] 21 |                 .filter(|&(i,op_col)| op_col.is_some())
[INFO] [stderr]    |                            ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: comparison is useless due to type limits
[INFO] [stderr]   --> src/camera/mod.rs:71:17
[INFO] [stderr]    |
[INFO] [stderr] 71 |         assert!(x >= 0);
[INFO] [stderr]    |                 ^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: comparison is useless due to type limits
[INFO] [stderr]   --> src/camera/mod.rs:73:17
[INFO] [stderr]    |
[INFO] [stderr] 73 |         assert!(y >= 0);
[INFO] [stderr]    |                 ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `super::*`
[INFO] [stderr]    --> src/shade/mod.rs:186:9
[INFO] [stderr]     |
[INFO] [stderr] 186 |     use super::*;
[INFO] [stderr]     |         ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `image::Rgb`
[INFO] [stderr]    --> src/shade/mod.rs:187:9
[INFO] [stderr]     |
[INFO] [stderr] 187 |     use image::Rgb;
[INFO] [stderr]     |         ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `vector3d::Vec3`
[INFO] [stderr]    --> src/shade/mod.rs:188:9
[INFO] [stderr]     |
[INFO] [stderr] 188 |     use vector3d::Vec3;
[INFO] [stderr]     |         ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/ray/mod.rs:105:82
[INFO] [stderr]     |
[INFO] [stderr] 105 |         let sphere_1 = Box::new(Sphere::simple(Vec3(0.0, 0.0, 0.0), 1.0)) as Box<Shadable>;
[INFO] [stderr]     |                                                                                  ^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 105 |         let sphere_1 = Box::new(Sphere::simple(Vec3(0.0, 0.0, 0.0), 1.0)) as Box<dyn Shadable>;
[INFO] [stderr]     |                                                                                  +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/ray/mod.rs:106:82
[INFO] [stderr]     |
[INFO] [stderr] 106 |         let sphere_2 = Box::new(Sphere::simple(Vec3(3.0, 0.0, 0.0), 1.0)) as Box<Shadable>;
[INFO] [stderr]     |                                                                                  ^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 106 |         let sphere_2 = Box::new(Sphere::simple(Vec3(3.0, 0.0, 0.0), 1.0)) as Box<dyn Shadable>;
[INFO] [stderr]     |                                                                                  +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/ray/mod.rs:123:80
[INFO] [stderr]     |
[INFO] [stderr] 123 |         let sphere = Box::new(Sphere::simple(Vec3(0.0, 0.0, 0.0), 1.0)) as Box<Shadable>;
[INFO] [stderr]     |                                                                                ^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 123 |         let sphere = Box::new(Sphere::simple(Vec3(0.0, 0.0, 0.0), 1.0)) as Box<dyn Shadable>;
[INFO] [stderr]     |                                                                                +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/ray/mod.rs:137:80
[INFO] [stderr]     |
[INFO] [stderr] 137 |         let sphere = Box::new(Sphere::simple(Vec3(0.0, 0.0, 3.0), 1.0)) as Box<Shadable>;
[INFO] [stderr]     |                                                                                ^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 137 |         let sphere = Box::new(Sphere::simple(Vec3(0.0, 0.0, 3.0), 1.0)) as Box<dyn Shadable>;
[INFO] [stderr]     |                                                                                +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/ray/mod.rs:138:79
[INFO] [stderr]     |
[INFO] [stderr] 138 |         let obst = Box::new(Sphere::simple(Vec3(-3.0, 0.0, 3.0), 1.0)) as Box<Shadable>;
[INFO] [stderr]     |                                                                               ^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 138 |         let obst = Box::new(Sphere::simple(Vec3(-3.0, 0.0, 3.0), 1.0)) as Box<dyn Shadable>;
[INFO] [stderr]     |                                                                               +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/shade/mod.rs:161:76
[INFO] [stderr]     |
[INFO] [stderr] 161 |     let sphere = Box::new(Sphere::simple(Vec3(0.0, 0.0, 0.0), 1.0)) as Box<Shadable>;
[INFO] [stderr]     |                                                                            ^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 161 |     let sphere = Box::new(Sphere::simple(Vec3(0.0, 0.0, 0.0), 1.0)) as Box<dyn Shadable>;
[INFO] [stderr]     |                                                                            +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/scene/mod.rs:51:80
[INFO] [stderr]    |
[INFO] [stderr] 51 |         let sphere = Box::new(Sphere::simple(Vec3(0.0, 0.0, 0.0), 1.0)) as Box<Shadable>;
[INFO] [stderr]    |                                                                                ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 51 |         let sphere = Box::new(Sphere::simple(Vec3(0.0, 0.0, 0.0), 1.0)) as Box<dyn Shadable>;
[INFO] [stderr]    |                                                                                +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/scene/mod.rs:65:80
[INFO] [stderr]    |
[INFO] [stderr] 65 |         let sphere = Box::new(Sphere::simple(Vec3(0.0, 0.0, 0.0), 1.0)) as Box<Shadable>;
[INFO] [stderr]    |                                                                                ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 65 |         let sphere = Box::new(Sphere::simple(Vec3(0.0, 0.0, 0.0), 1.0)) as Box<dyn Shadable>;
[INFO] [stderr]    |                                                                                +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/scene/mod.rs:79:80
[INFO] [stderr]    |
[INFO] [stderr] 79 |         let sphere = Box::new(Sphere::simple(Vec3(0.0, 0.0, 0.0), 1.0)) as Box<Shadable>;
[INFO] [stderr]    |                                                                                ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 79 |         let sphere = Box::new(Sphere::simple(Vec3(0.0, 0.0, 0.0), 1.0)) as Box<dyn Shadable>;
[INFO] [stderr]    |                                                                                +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/scene/mod.rs:93:80
[INFO] [stderr]    |
[INFO] [stderr] 93 |         let sphere = Box::new(Sphere::simple(Vec3(0.0, 0.0, 0.0), 1.0)) as Box<Shadable>;
[INFO] [stderr]    |                                                                                ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 93 |         let sphere = Box::new(Sphere::simple(Vec3(0.0, 0.0, 0.0), 1.0)) as Box<dyn Shadable>;
[INFO] [stderr]    |                                                                                +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/scene/mod.rs:94:81
[INFO] [stderr]    |
[INFO] [stderr] 94 |         let hidden = Box::new(Sphere::simple(Vec3(-5.0, 0.0, 0.0), 1.0)) as Box<Shadable>;
[INFO] [stderr]    |                                                                                 ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 94 |         let hidden = Box::new(Sphere::simple(Vec3(-5.0, 0.0, 0.0), 1.0)) as Box<dyn Shadable>;
[INFO] [stderr]    |                                                                                 +++
[INFO] [stderr] 
[INFO] [stderr] warning: function `test_SO3_multiplication` should have a snake case name
[INFO] [stderr]   --> src/space_algebra/mod.rs:94:4
[INFO] [stderr]    |
[INFO] [stderr] 94 | fn test_SO3_multiplication() {
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `test_so3_multiplication`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(non_snake_case)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `test_SO3_multiply_vector` should have a snake case name
[INFO] [stderr]    --> src/space_algebra/mod.rs:101:4
[INFO] [stderr]     |
[INFO] [stderr] 101 | fn test_SO3_multiply_vector() {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case (notice the capitalization): `test_so3_multiply_vector`
[INFO] [stderr] 
[INFO] [stderr] warning: `yars-raytracer` (lib) generated 20 warnings (run `cargo fix --lib -p yars-raytracer` to apply 17 suggestions)
[INFO] [stderr] warning: `yars-raytracer` (lib test) generated 32 warnings (16 duplicates) (run `cargo fix --lib -p yars-raytracer --tests` to apply 14 suggestions)
[INFO] [stderr] warning: unused import: `yars_raytracer::algebra::InnerProductSpace`
[INFO] [stderr]  --> src/main.rs:8:5
[INFO] [stderr]   |
[INFO] [stderr] 8 | use yars_raytracer::algebra::InnerProductSpace;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `yars_raytracer::ray::Orientable`
[INFO] [stderr]   --> src/main.rs:10:5
[INFO] [stderr]    |
[INFO] [stderr] 10 | use yars_raytracer::ray::Orientable;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Shader`
[INFO] [stderr]   --> src/main.rs:13:29
[INFO] [stderr]    |
[INFO] [stderr] 13 | use yars_raytracer::shade::{Shader, PhongShader};
[INFO] [stderr]    |                             ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Ray`, `ShadeCell`
[INFO] [stderr]   --> src/main.rs:19:27
[INFO] [stderr]    |
[INFO] [stderr] 19 | use yars_raytracer::ray::{Ray, Shadable, ShadeCell};
[INFO] [stderr]    |                           ^^^            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/main.rs:54:86
[INFO] [stderr]    |
[INFO] [stderr] 54 |         Box::new(Plane::new(Vec3(1.0, 0.0, 0.0), Vec3(0.0, 0.0, 1.0), slate)) as Box<Shadable>;
[INFO] [stderr]    |                                                                                      ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stderr] help: use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 54 |         Box::new(Plane::new(Vec3(1.0, 0.0, 0.0), Vec3(0.0, 0.0, 1.0), slate)) as Box<dyn Shadable>;
[INFO] [stderr]    |                                                                                      +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/main.rs:55:80
[INFO] [stderr]    |
[INFO] [stderr] 55 |     let sphere = Box::new(Sphere::new(Vec3(0.0, -1.0, 5.0), 1.0, mat1)) as Box<Shadable>;
[INFO] [stderr]    |                                                                                ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 55 |     let sphere = Box::new(Sphere::new(Vec3(0.0, -1.0, 5.0), 1.0, mat1)) as Box<dyn Shadable>;
[INFO] [stderr]    |                                                                                +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/main.rs:56:79
[INFO] [stderr]    |
[INFO] [stderr] 56 |     let obst = Box::new(Sphere::new(Vec3(-2.0, -0.5, 4.0), 0.5, mat2)) as Box<Shadable>;
[INFO] [stderr]    |                                                                               ^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 56 |     let obst = Box::new(Sphere::new(Vec3(-2.0, -0.5, 4.0), 0.5, mat2)) as Box<dyn Shadable>;
[INFO] [stderr]    |                                                                               +++
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `a_colour`
[INFO] [stderr]   --> src/main.rs:33:9
[INFO] [stderr]    |
[INFO] [stderr] 33 |     let a_colour = Rgb([255 as u8; 3]);
[INFO] [stderr]    |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_a_colour`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable `WIDTH` should have a snake case name
[INFO] [stderr]   --> src/main.rs:22:9
[INFO] [stderr]    |
[INFO] [stderr] 22 |     let WIDTH = 800;
[INFO] [stderr]    |         ^^^^^ help: convert the identifier to snake case: `width`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(non_snake_case)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable `HEIGHT` should have a snake case name
[INFO] [stderr]   --> src/main.rs:23:9
[INFO] [stderr]    |
[INFO] [stderr] 23 |     let HEIGHT = 600;
[INFO] [stderr]    |         ^^^^^^ help: convert the identifier to snake case: `height`
[INFO] [stderr] 
[INFO] [stderr] warning: variable `OUTPUT` should have a snake case name
[INFO] [stderr]   --> src/main.rs:24:9
[INFO] [stderr]    |
[INFO] [stderr] 24 |     let OUTPUT = "output.png";
[INFO] [stderr]    |         ^^^^^^ help: convert the identifier to snake case: `output`
[INFO] [stderr] 
[INFO] [stderr] warning: `yars-raytracer` (bin "yars-raytracer" test) generated 11 warnings (run `cargo fix --bin "yars-raytracer" --tests` to apply 8 suggestions)
[INFO] [stderr]     Finished test [unoptimized + debuginfo] target(s) in 0.01s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: rustc-serialize v0.3.20
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/yars_raytracer-0fe761f22db2c411)
[INFO] [stdout] 
[INFO] [stdout] running 38 tests
[INFO] [stdout] test algebra::tests::test_ordering_on_real ... ok
[INFO] [stdout] test ray::tests::test_can_detect_single_strike_in_non_colinear_objects ... ok
[INFO] [stdout] test ray::tests::test_ray_intersection_boolean ... ok
[INFO] [stdout] test ray::tests::test_ray_trace_copes_with_no_strike ... ok
[INFO] [stdout] test ray::tests::test_ray_trace_picks_correct_object ... ok
[INFO] [stdout] test scene::tests::test_can_detect_interfering_object ... ok
[INFO] [stdout] test scene::tests::test_can_detect_non_interfering_object ... ok
[INFO] [stdout] test scene::tests::test_light_illumination_is_not_confused_by_two_objects ... ok
[INFO] [stdout] test scene::tests::test_light_detects_interference_in_correct_portion_of_ray ... ok
[INFO] [stdout] test shade::test_green_channel_getter ... ok
[INFO] [stdout] test shade::test_gets_diffuse_at_shade_cell ... ok
[INFO] [stdout] test shade::test_phong_dot_returns_zero_on_negative ... ok
[INFO] [stdout] test camera::test_get_ray_through_pixel ... ok
[INFO] [stdout] test camera::test_get_zero_ray_direction ... ok
[INFO] [stdout] test shade::test_red_channel_getter ... ok
[INFO] [stdout] test shade::test_blue_channel_getter ... ok
[INFO] [stdout] test camera::test_get_rotated_camera_direction ... ok
[INFO] [stdout] test shapes::test_intersection_of_ray_and_sphere ... ok
[INFO] [stdout] test shapes::test_intersection_of_ray_and_sphere_behind ... ok
[INFO] [stdout] test shapes::test_orientability_of_plane ... ok
[INFO] [stdout] test shapes::test_plane_intesectability ... ok
[INFO] [stdout] test space_algebra::test_SO3_multiply_vector ... ok
[INFO] [stdout] test space_algebra::test_SO3_multiplication ... ok
[INFO] [stdout] test vector3d::test_get_first_row_of_matrix ... ok
[INFO] [stdout] test vector3d::test_get_second_row_of_matrix ... ok
[INFO] [stdout] test shapes::test_sphere_orientability ... ok
[INFO] [stdout] test vector3d::test_inner_product_space_for_vec3 ... ok
[INFO] [stdout] test vector3d::test_matrix_distance ... ok
[INFO] [stdout] test vector3d::test_group_structure_for_vec3 ... ok
[INFO] [stdout] test vector3d::test_cross_product_of_vectors ... ok
[INFO] [stdout] test vector3d::test_components_of_vec3 ... ok
[INFO] [stdout] test vector3d::test_get_third_row_of_matrix ... ok
[INFO] [stdout] test vector3d::test_matrix_multiplication ... ok
[INFO] [stdout] test vector3d::test_norm_of_vec3 ... ok
[INFO] [stdout] test vector3d::test_multiply_vector_by_matrix ... ok
[INFO] [stdout] test vector3d::test_vec3_adds_to_vec3_correctly ... ok
[INFO] [stdout] test vector3d::test_reflection_in_vector ... ok
[INFO] [stdout] test vector3d::test_vec3_multiplies_with_scalar_correctly ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 38 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/yars_raytracer-beaf10efe1e27ec9)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests yars_raytracer
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "052472b18c7a4196fce3a6ba560ad02e5e00309e4253bd4b040a65e17c53834e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "052472b18c7a4196fce3a6ba560ad02e5e00309e4253bd4b040a65e17c53834e", kill_on_drop: false }`
[INFO] [stdout] 052472b18c7a4196fce3a6ba560ad02e5e00309e4253bd4b040a65e17c53834e
[INFO] testing rlupton20/yars-raytracer against beta-2023-12-22 for beta-1.76-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frlupton20%2Fyars-raytracer" "/workspace/builds/worker-1-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc2/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/rlupton20/yars-raytracer on toolchain beta-2023-12-22
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2023-12-22" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/rlupton20/yars-raytracer
[INFO] finished tweaking git repo https://github.com/rlupton20/yars-raytracer
[INFO] tweaked toml for git repo https://github.com/rlupton20/yars-raytracer written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] crate git repo https://github.com/rlupton20/yars-raytracer already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2023-12-22" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2023-12-22" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] fd341e3bb534b0202dab4508f4e1eddc3e3fbf9e715602773c1e656c63770758
[INFO] running `Command { std: "docker" "start" "-a" "fd341e3bb534b0202dab4508f4e1eddc3e3fbf9e715602773c1e656c63770758", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "fd341e3bb534b0202dab4508f4e1eddc3e3fbf9e715602773c1e656c63770758", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fd341e3bb534b0202dab4508f4e1eddc3e3fbf9e715602773c1e656c63770758", kill_on_drop: false }`
[INFO] [stdout] fd341e3bb534b0202dab4508f4e1eddc3e3fbf9e715602773c1e656c63770758
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2023-12-22" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] f54a89d62182fd1d87ed0482e86f7f617ec52fc8af1ab0a485cf2772ac9ebf2f
[INFO] running `Command { std: "docker" "start" "-a" "f54a89d62182fd1d87ed0482e86f7f617ec52fc8af1ab0a485cf2772ac9ebf2f", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.17
[INFO] [stderr]    Compiling num-traits v0.1.36
[INFO] [stderr]    Compiling gcc v0.3.38
[INFO] [stderr]    Compiling rustc-serialize v0.3.20
[INFO] [stderr]    Compiling byteorder v0.5.3
[INFO] [stderr]    Compiling bitflags v0.7.0
[INFO] [stderr]    Compiling inflate v0.1.1
[INFO] [stderr]    Compiling lzw v0.10.0
[INFO] [stderr]    Compiling color_quant v1.0.0
[INFO] [stderr]    Compiling glob v0.2.11
[INFO] [stderr]    Compiling rand v0.3.14
[INFO] [stderr]    Compiling num_cpus v1.1.0
[INFO] [stderr]    Compiling gif v0.9.0
[INFO] [stdout] error[E0310]: the parameter type `T` may not live long enough
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/rustc-serialize-0.3.20/src/serialize.rs:1155:5
[INFO] [stdout]      |
[INFO] [stdout] 1155 |     fn decode<D: Decoder>(d: &mut D) -> Result<Cow<'static, T>, D::Error> {
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |     |
[INFO] [stdout]      |     the parameter type `T` must be valid for the static lifetime...
[INFO] [stdout]      |     ...so that the type `T` will meet its required lifetime bounds...
[INFO] [stdout]      |
[INFO] [stdout] note: ...that is required by this bound
[INFO] [stdout]     --> /rustc/0e09125c6c3c2fd70d7de961bcf0e51575235fad/library/alloc/src/borrow.rs:180:30
[INFO] [stdout] help: consider adding an explicit lifetime bound
[INFO] [stdout]      |
[INFO] [stdout] 1151 | impl<'a, T: ?Sized + 'static> Decodable for Cow<'a, T>
[INFO] [stdout]      |                    +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling num-integer v0.1.32
[INFO] [stderr]    Compiling miniz-sys v0.1.7
[INFO] [stderr]    Compiling num-iter v0.1.32
[INFO] [stderr]    Compiling scoped_threadpool v0.1.7
[INFO] [stderr]    Compiling num v0.1.36
[INFO] [stderr]    Compiling enum_primitive v0.1.0
[INFO] [stderr]    Compiling deque v0.3.1
[INFO] [stderr]    Compiling rayon v0.5.0
[INFO] [stdout] error: aborting due to 1 previous error
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0310`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rustc-serialize` (lib) due to 2 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] running `Command { std: "docker" "inspect" "f54a89d62182fd1d87ed0482e86f7f617ec52fc8af1ab0a485cf2772ac9ebf2f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f54a89d62182fd1d87ed0482e86f7f617ec52fc8af1ab0a485cf2772ac9ebf2f", kill_on_drop: false }`
[INFO] [stdout] f54a89d62182fd1d87ed0482e86f7f617ec52fc8af1ab0a485cf2772ac9ebf2f
