[INFO] cloning repository https://github.com/fvogels/rustracer
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/fvogels/rustracer" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffvogels%2Frustracer", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffvogels%2Frustracer'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 0fc79969216d8736df7b55508361fd9db611e4a7
[INFO] checking fvogels/rustracer against 1.95.0 for pr-155915
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffvogels%2Frustracer" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/fvogels/rustracer
[INFO] finished tweaking git repo https://github.com/fvogels/rustracer
[INFO] tweaked toml for git repo https://github.com/fvogels/rustracer written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/fvogels/rustracer on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/fvogels/rustracer 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.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded rstest_macros v0.14.0
[INFO] [stderr]   Downloaded rstest v0.15.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 627c639e9d0f4cfd2c43aa8b10ee0d415dbd5b8f16f5dedcf2f6a48ebb63736e
[INFO] running `Command { std: "docker" "start" "-a" "627c639e9d0f4cfd2c43aa8b10ee0d415dbd5b8f16f5dedcf2f6a48ebb63736e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "627c639e9d0f4cfd2c43aa8b10ee0d415dbd5b8f16f5dedcf2f6a48ebb63736e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "627c639e9d0f4cfd2c43aa8b10ee0d415dbd5b8f16f5dedcf2f6a48ebb63736e", kill_on_drop: false }`
[INFO] [stdout] 627c639e9d0f4cfd2c43aa8b10ee0d415dbd5b8f16f5dedcf2f6a48ebb63736e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 6997c3a73deede2cca6fcc1d97f5c5905259e8c8f2e9891ca17964e842b46f39
[INFO] running `Command { std: "docker" "start" "-a" "6997c3a73deede2cca6fcc1d97f5c5905259e8c8f2e9891ca17964e842b46f39", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v1.0.103
[INFO] [stderr]    Compiling futures-core v0.3.25
[INFO] [stderr]    Compiling semver v1.0.14
[INFO] [stderr]    Compiling futures-channel v0.3.25
[INFO] [stderr]    Compiling futures-util v0.3.25
[INFO] [stderr]     Checking futures-sink v0.3.25
[INFO] [stderr]     Checking futures-io v0.3.25
[INFO] [stderr]     Checking miniz_oxide v0.5.4
[INFO] [stderr]     Checking futures-timer v3.0.2
[INFO] [stderr]    Compiling rustc_version v0.4.0
[INFO] [stderr]     Checking flate2 v1.0.24
[INFO] [stderr]    Compiling rstest_macros v0.14.0
[INFO] [stderr]     Checking png v0.17.6
[INFO] [stderr]    Compiling futures-macro v0.3.25
[INFO] [stderr]     Checking futures-executor v0.3.25
[INFO] [stderr]     Checking futures v0.3.25
[INFO] [stderr]     Checking rstest v0.15.0
[INFO] [stderr]     Checking rrt v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `net::AddrParseError`
[INFO] [stdout]  --> src/animation/time.rs:1:71
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{ops::{Add, Sub, Mul, Div, AddAssign, MulAssign, DivAssign}, net::AddrParseError};
[INFO] [stdout]   |                                                                       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Encoder`
[INFO] [stdout]  --> src/imaging/export.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | use png::{Encoder, Writer};
[INFO] [stdout]   |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ray`, `Vector`, and `imaging::color::Color`
[INFO] [stdout]  --> src/materials/uniform.rs:1:13
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::{imaging::color::Color, math::{Ray, Vector}, primitives::LocalPosition};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^^^^^         ^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `metric::Metric`
[INFO] [stdout]   --> src/math/mod.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub use metric::Metric;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/primitives/plane.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `imaging::color::Color` and `materials::UniformMaterial`
[INFO] [stdout]  --> src/primitives/plane.rs:4:61
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::{math::{pt, vc, CoordinateSystem3D, Point, Ray}, materials::UniformMaterial, imaging::color::Color};
[INFO] [stdout]   |                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/primitives/primitive.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Material`
[INFO] [stdout]  --> src/primitives/primitive.rs:4:81
[INFO] [stdout]   |
[INFO] [stdout] 4 |     math::{Point, Ray, Vector, transformation3d::Transformation3D}, materials::{Material, MaterialProperties},
[INFO] [stdout]   |                                                                                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/primitives/sphere.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `imaging::color::Color` and `materials::UniformMaterial`
[INFO] [stdout]  --> src/primitives/sphere.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     imaging::color::Color,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 9 |     }, materials::UniformMaterial,
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::lights::light::LightRay`
[INFO] [stdout]  --> src/primitives/transformer.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::lights::light::LightRay;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::math::approx`
[INFO] [stdout]   --> src/samplers/stratified.rs:56:9
[INFO] [stdout]    |
[INFO] [stdout] 56 |     use crate::math::approx;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `scripting::values::NativeFunction`
[INFO] [stdout]  --> src/scripting/prelude.rs:3:27
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::{data::Either, scripting::values::NativeFunction};
[INFO] [stdout]   |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ops::Neg` and `rc::Rc`
[INFO] [stdout]  --> src/tracing/raytracer.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{ops::Neg, rc::Rc};
[INFO] [stdout]   |           ^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Matrix`
[INFO] [stdout]  --> src/tracing/raytracer.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 |     math::{Ray, Matrix},
[INFO] [stdout]   |                 ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `assert_same_elements`
[INFO] [stdout]   --> src/util/algorithms.rs:63:9
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub use assert_same_elements;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `define_tag`
[INFO] [stdout]   --> src/util/tag.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use define_tag;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Constant`
[INFO] [stdout]  --> src/util/mod.rs:5:28
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use refining::{Refine, Constant};
[INFO] [stdout]   |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `local_position`
[INFO] [stdout]   --> src/materials/uniform.rs:16:18
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn at(&self, local_position: LocalPosition) -> MaterialProperties {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_local_position`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `outgoing`
[INFO] [stdout]   --> src/materials/brdf.rs:16:23
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn compute(&self, outgoing: &Vector<3>, incoming: &Vector<3>) -> f64 {
[INFO] [stdout]    |                       ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_outgoing`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `incoming`
[INFO] [stdout]   --> src/materials/brdf.rs:16:45
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn compute(&self, outgoing: &Vector<3>, incoming: &Vector<3>) -> f64 {
[INFO] [stdout]    |                                             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_incoming`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `matrix`
[INFO] [stdout]   --> src/primitives/transformer.rs:24:13
[INFO] [stdout]    |
[INFO] [stdout] 24 |         let matrix = &self.transformation.matrix;
[INFO] [stdout]    |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_matrix`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]   --> src/regex/mod.rs:52:26
[INFO] [stdout]    |
[INFO] [stdout] 52 |             Self::Kleene(x) => true,
[INFO] [stdout]    |                          ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/regex/mod.rs:79:21
[INFO] [stdout]    |
[INFO] [stdout] 79 |                 let mut result = vec![x.feed(ch), y.feed(ch)];
[INFO] [stdout]    |                     ----^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/scripting/interpreting.rs:33:32
[INFO] [stdout]    |
[INFO] [stdout] 33 |         while let Some((token, i, j)) = tokenizer
[INFO] [stdout]    |                                ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `j`
[INFO] [stdout]   --> src/scripting/interpreting.rs:33:35
[INFO] [stdout]    |
[INFO] [stdout] 33 |         while let Some((token, i, j)) = tokenizer
[INFO] [stdout]    |                                   ^ help: if this is intentional, prefix it with an underscore: `_j`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/scripting/tokenizing/automaton.rs:22:13
[INFO] [stdout]    |
[INFO] [stdout] 22 |         let mut next_generation: Vec<(Regex, T)> = self
[INFO] [stdout]    |             ----^^^^^^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/tracing/raytracer.rs:63:17
[INFO] [stdout]    |
[INFO] [stdout] 63 |             let mut reflected_ray = {
[INFO] [stdout]    |                 ----^^^^^^^^^^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/tracing/raytracer.rs:93:25
[INFO] [stdout]    |
[INFO] [stdout] 93 |                     let mut ray = Ray::new(origin, transformed_direction).nudged(0.00001);
[INFO] [stdout]    |                         ----^^^
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ray`
[INFO] [stdout]   --> src/tracing/raytracer.rs:83:21
[INFO] [stdout]    |
[INFO] [stdout] 83 |                 let ray = &hit.ray;
[INFO] [stdout]    |                     ^^^ help: if this is intentional, prefix it with an underscore: `_ray`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `green_material`
[INFO] [stdout]   --> src/main.rs:85:13
[INFO] [stdout]    |
[INFO] [stdout] 85 |         let green_material = create_material(Color::green());
[INFO] [stdout]    |             ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_green_material`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BufferedIterator` is never constructed
[INFO] [stdout]  --> src/data/bufit.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct BufferedIterator<I: Iterator>
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `current`, and `next` are never used
[INFO] [stdout]   --> src/data/bufit.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | / impl<I: Iterator> BufferedIterator<I>
[INFO] [stdout] 10 | | where
[INFO] [stdout] 11 | |     I::Item: Copy + Clone,
[INFO] [stdout]    | |__________________________- associated items in this implementation
[INFO] [stdout] 12 |   {
[INFO] [stdout] 13 |       pub fn new(mut iterator: I) -> Self {
[INFO] [stdout]    |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |       pub fn current(&self) -> Option<I::Item> {
[INFO] [stdout]    |              ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |       pub fn next(&mut self) {
[INFO] [stdout]    |              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Either` is never used
[INFO] [stdout]  --> src/data/either.rs:2:10
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub enum Either<T, U> {
[INFO] [stdout]   |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `WriteError` is never used
[INFO] [stdout]   --> src/imaging/image.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum WriteError {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get`, `write_to_file`, and `write` are never used
[INFO] [stdout]   --> src/imaging/image.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl Image {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn get(&self, position: Position<2>) -> &Color {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn write_to_file(&self, path: &Path) -> std::result::Result<(), WriteError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn write(&self, writer: impl Write) -> std::result::Result<(), WriteError> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `transform` is never used
[INFO] [stdout]   --> src/lights/light.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl LightRay {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub fn transform(&mut self, matrix: &Matrix<4, 4>) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Diffuse` is never constructed
[INFO] [stdout]  --> src/materials/brdf.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct Diffuse { }
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/materials/brdf.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl Diffuse {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 10 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `approx` is never used
[INFO] [stdout]  --> src/math/approx.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub trait Approx {
[INFO] [stdout]   |           ------ method in this trait
[INFO] [stdout] 4 |     fn approx(&self, rhs: &Self) -> bool {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Cartesian2D` is never constructed
[INFO] [stdout]  --> src/math/coords.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Cartesian2D {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Polar` is never constructed
[INFO] [stdout]  --> src/math/coords.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct Polar {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_polar` is never used
[INFO] [stdout]   --> src/math/coords.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 25 | impl Cartesian2D {
[INFO] [stdout]    | ---------------- method in this implementation
[INFO] [stdout] 26 |     pub fn to_polar(&self) -> Polar {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_cartesian2d` is never used
[INFO] [stdout]   --> src/math/coords.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl Polar {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] 35 |     pub fn to_cartesian2d(&self) -> Cartesian2D {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `transform` is never used
[INFO] [stdout]   --> src/math/coordsys.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl CoordinateSystem3D {
[INFO] [stdout]    | ----------------------- method in this implementation
[INFO] [stdout] 11 |     pub fn transform(&mut self, matrix: &Matrix<4, 4>) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `width` is never used
[INFO] [stdout]   --> src/math/interval.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | / impl<'a, T: 'a> Interval<T>
[INFO] [stdout] 44 | | where
[INFO] [stdout] 45 | |     &'a T: Sub<&'a T, Output = T>,
[INFO] [stdout]    | |__________________________________- method in this implementation
[INFO] [stdout] 46 |   {
[INFO] [stdout] 47 |       pub fn width(&'a self) -> T {
[INFO] [stdout]    |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `inverse_map` is never used
[INFO] [stdout]   --> src/math/interval.rs:62:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | impl<T: Linear, U: Linear> IntervalMapper<T, U> {
[INFO] [stdout]    | ----------------------------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn inverse_map(&self, y: U) -> T {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `cartesian`, `x`, `y`, and `z` are never used
[INFO] [stdout]   --> src/math/position.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl Position<3> {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 27 |     pub fn cartesian(x: i32, y: i32, z: i32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn x(&self) -> i32 {
[INFO] [stdout]    |            ^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn y(&self) -> i32 {
[INFO] [stdout]    |            ^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn z(&self) -> i32 {
[INFO] [stdout]    |            ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `scale`, `rotate_around_x`, `rotate_around_y`, and `rotate_around_z` are never used
[INFO] [stdout]   --> src/math/transformation3d.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl Transformation3D {
[INFO] [stdout]    | --------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub fn scale(sx: f64, sy: f64, sz: f64) -> Transformation3D {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     pub fn rotate_around_x(angle: Angle) -> Transformation3D {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn rotate_around_y(angle: Angle) -> Transformation3D {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     pub fn rotate_around_z(angle: Angle) -> Transformation3D {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `xyz` and `uv` are never read
[INFO] [stdout]   --> src/primitives/primitive.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct LocalPosition {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 17 |     pub xyz: Point<3>,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 18 |     pub uv: Point<2>,
[INFO] [stdout]    |         ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LocalPosition` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `RegexImp` is never used
[INFO] [stdout]  --> src/regex/mod.rs:3:6
[INFO] [stdout]   |
[INFO] [stdout] 3 | enum RegexImp {
[INFO] [stdout]   |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Regex` is never constructed
[INFO] [stdout]   --> src/regex/mod.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct Regex {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/regex/mod.rs:31:8
[INFO] [stdout]     |
[INFO] [stdout]  30 | impl RegexImp {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout]  31 |     fn is_epsilon(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  38 |     fn is_empty(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  45 |     fn is_terminal(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  56 |     fn feed(&self, ch: char) -> Rc<Self> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout]  89 |     fn empty() -> Rc<Self> {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  93 |     fn epsilon() -> Rc<Self> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  97 |     fn sequence(children: impl Iterator<Item = Rc<Self>>) -> Rc<Self> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     fn alternatives(children: impl Iterator<Item = Rc<Self>>) -> Rc<Self> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 135 |     fn kleene(child: Rc<Self>) -> Rc<Self> {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     fn no_inner_empty(&self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/regex/mod.rs:175:8
[INFO] [stdout]     |
[INFO] [stdout] 174 | impl Regex {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout] 175 |     fn new(imp: Rc<RegexImp>) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn empty() -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 185 |     pub fn epsilon() -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn sequence(children: impl Iterator<Item = Self>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 193 |     pub fn alternatives(children: impl Iterator<Item = Self>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 197 |     fn unwrap(children: impl Iterator<Item = Self>) -> impl Iterator<Item = Rc<RegexImp>> {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 201 |     pub fn kleene(child: Self) -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 209 |     pub fn predicate(predicate: Rc<dyn Fn(char) -> bool>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 213 |     pub fn literal(ch: char) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     pub fn optional(child: Regex) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn is_terminal(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 227 |     pub fn feed_mut(&mut self, ch: char) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     pub fn feed(&self, ch: char) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 237 |     pub fn try_feed(&self, ch: char) -> Option<Self> {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 247 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 251 |     pub fn character_class(chars: impl Iterator<Item = char>) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 257 |     pub fn one_or_more(r: Regex) -> Regex {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 261 |     pub fn lowercase_letter() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     pub fn uppercase_letter() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     pub fn letter() -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     pub fn digit(radix: u32) -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 277 |     pub fn alphanumeric() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 281 |     pub fn positive_integer(radix: u32) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 285 |     pub fn integer(radix: u32) -> Self {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 295 |     pub fn float() -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Bindings` is never used
[INFO] [stdout]  --> src/scripting/environment.rs:5:6
[INFO] [stdout]   |
[INFO] [stdout] 5 | type Bindings = HashMap<String, Rc<Value>>;
[INFO] [stdout]   |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Environment` is never constructed
[INFO] [stdout]  --> src/scripting/environment.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct Environment {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Frame` is never constructed
[INFO] [stdout]   --> src/scripting/environment.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | struct Frame {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `lookup`, and `bind` are never used
[INFO] [stdout]   --> src/scripting/environment.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 17 | impl Environment {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 18 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn lookup(&self, id: &String) -> Result<Rc<Value>, EvaluationError> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn bind(&mut self, id: String, value: Rc<Value>) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `lookup`, and `bind` are never used
[INFO] [stdout]   --> src/scripting/environment.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl Frame {
[INFO] [stdout]    | ---------- associated items in this implementation
[INFO] [stdout] 34 |     pub fn new(parent: Option<Rc<RefCell<Frame>>>) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 40 |     pub fn lookup(&self, id: &String) -> Result<Rc<Value>, EvaluationError> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn bind(&mut self, id: String, value: Rc<Value>) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Evaluator` is never constructed
[INFO] [stdout]  --> src/scripting/evaluating.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct Evaluator {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `evaluate` are never used
[INFO] [stdout]   --> src/scripting/evaluating.rs:12:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Evaluator {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 12 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub fn evaluate(&mut self, ast: Rc<Value>) -> Result<Rc<Value>, EvaluationError> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `EvaluationError` is never used
[INFO] [stdout]   --> src/scripting/evaluating.rs:50:10
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub enum EvaluationError {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Interpreter` is never constructed
[INFO] [stdout]   --> src/scripting/interpreting.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Interpreter {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `InterpretingError` is never used
[INFO] [stdout]   --> src/scripting/interpreting.rs:15:10
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub enum InterpretingError {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `interpret_string`, and `flip` are never used
[INFO] [stdout]   --> src/scripting/interpreting.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 21 | impl Interpreter {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 22 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn interpret_string(&mut self, input: &str) -> Result<Rc<Value>, InterpretingError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     fn flip<T1, T2>(pair: (T1, T2)) -> (T2, T1) {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Parser` is never constructed
[INFO] [stdout]  --> src/scripting/parsing.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Parser {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ParsingError` is never used
[INFO] [stdout]   --> src/scripting/parsing.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum ParsingError {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `feed`, `top`, `push`, `pop`, and `eject` are never used
[INFO] [stdout]   --> src/scripting/parsing.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl Parser {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 16 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn feed(&mut self, token: &Token) -> Result<(), ParsingError> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     fn top(&mut self) -> Result<&mut Vec<Rc<Value>>, ParsingError> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 50 |     fn push(&mut self, value: Value) -> Result<(), ParsingError> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     fn pop(&mut self) -> Result<Vec<Rc<Value>>, ParsingError> {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn eject(mut self) -> Result<Vec<Rc<Value>>, ParsingError> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_prelude` is never used
[INFO] [stdout]   --> src/scripting/prelude.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn create_prelude() -> Environment {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `homogenize_numbers` is never used
[INFO] [stdout]    --> src/scripting/prelude.rs:145:4
[INFO] [stdout]     |
[INFO] [stdout] 145 | fn homogenize_numbers(values: &[Rc<Value>]) -> Result<Either<Vec<i64>, Vec<f64>>, EvaluationError> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `addition` is never used
[INFO] [stdout]   --> src/scripting/prelude.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 45 |     pub fn addition(
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `subtraction` is never used
[INFO] [stdout]   --> src/scripting/prelude.rs:74:12
[INFO] [stdout]    |
[INFO] [stdout] 74 |     pub fn subtraction(
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `multiplication` is never used
[INFO] [stdout]    --> src/scripting/prelude.rs:115:12
[INFO] [stdout]     |
[INFO] [stdout] 115 |     pub fn multiplication(
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Automaton` is never constructed
[INFO] [stdout]  --> src/scripting/tokenizing/automaton.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Automaton<T: Copy + Clone> {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AutomatonBuilder` is never constructed
[INFO] [stdout]  --> src/scripting/tokenizing/automaton.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct AutomatonBuilder<T: Copy + Clone> {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `reset`, `is_terminal`, `feed`, and `current` are never used
[INFO] [stdout]   --> src/scripting/tokenizing/automaton.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl<T: Copy + Clone> Automaton<T> {
[INFO] [stdout]    | ---------------------------------- methods in this implementation
[INFO] [stdout] 13 |     pub fn reset(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub fn is_terminal(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn feed(&mut self, ch: char) -> bool {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 36 |     pub fn current(&self) -> Option<T> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_rule`, and `eject` are never used
[INFO] [stdout]   --> src/scripting/tokenizing/automaton.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 44 | impl<T: Copy + Clone> AutomatonBuilder<T> {
[INFO] [stdout]    | ----------------------------------------- associated items in this implementation
[INFO] [stdout] 45 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn add_rule(&mut self, regex: Regex, t: T) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     pub fn eject(self) -> Automaton<T> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Token` is never used
[INFO] [stdout]  --> src/scripting/tokenizing/token.rs:2:10
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub enum Token {
[INFO] [stdout]   |          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TokenizingError` is never used
[INFO] [stdout]  --> src/scripting/tokenizing/tokenerror.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum TokenizingError {
[INFO] [stdout]   |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Tokenizer` is never constructed
[INFO] [stdout]  --> src/scripting/tokenizing/tokenizer.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct Tokenizer<Loc: Copy + Clone, I: Iterator<Item = (char, Loc)>> {
[INFO] [stdout]   |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `create_automaton`, `identifier_regex`, `skip_whitespace`, `is_whitespace`, and `next_token` are never used
[INFO] [stdout]   --> src/scripting/tokenizing/tokenizer.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | impl<Loc: Copy + Clone, I: Iterator<Item = (char, Loc)>> Tokenizer<Loc, I> {
[INFO] [stdout]    | -------------------------------------------------------------------------- associated items in this implementation
[INFO] [stdout] 14 |     pub fn new(input: I) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     fn create_automaton() -> Automaton<TokenType> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     fn identifier_regex() -> Regex {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 45 |     fn skip_whitespace(&mut self) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     fn is_whitespace(ch: char) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 64 |     pub fn next_token(&mut self) -> Result<Option<(Token, Loc, Loc)>, TokenizingError> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TokenType` is never used
[INFO] [stdout]  --> src/scripting/tokenizing/tokentype.rs:4:10
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum TokenType {
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `to_token` is never used
[INFO] [stdout]   --> src/scripting/tokenizing/tokentype.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl TokenType {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] 13 |     pub fn to_token(&self, string: String) -> Result<Token, TokenizingError> {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Value` is never used
[INFO] [stdout]  --> src/scripting/values.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum Value {
[INFO] [stdout]   |          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `NativeFunction` is never used
[INFO] [stdout]   --> src/scripting/values.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub type NativeFunction =
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/scripting/values.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl Value {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] 20 |     pub fn is_integer(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn is_float(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn is_bool(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn is_list(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn is_symbol(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn is_nil(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn is_native_function(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `int` is never used
[INFO] [stdout]    --> src/scripting/values.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 107 |     pub fn int(n: i64) -> Rc<Value> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `float` is never used
[INFO] [stdout]    --> src/scripting/values.rs:111:12
[INFO] [stdout]     |
[INFO] [stdout] 111 |     pub fn float(n: f64) -> Rc<Value> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list` is never used
[INFO] [stdout]    --> src/scripting/values.rs:115:12
[INFO] [stdout]     |
[INFO] [stdout] 115 |     pub fn list(elts: Vec<Rc<Value>>) -> Rc<Value> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `symbol` is never used
[INFO] [stdout]    --> src/scripting/values.rs:119:12
[INFO] [stdout]     |
[INFO] [stdout] 119 |     pub fn symbol(id: &str) -> Rc<Value> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `VecDiffResult` is never constructed
[INFO] [stdout]  --> src/util/algorithms.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct VecDiffResult {
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vec_diff` is never used
[INFO] [stdout]  --> src/util/algorithms.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn vec_diff<T: PartialEq>(xs: &Vec<T>, ys: &Vec<T>) -> VecDiffResult {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Tag` is never used
[INFO] [stdout]  --> src/util/tag.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub trait Tag: Debug + Hash + PartialEq + Eq + Copy + Clone {}
[INFO] [stdout]   |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Constant` is never constructed
[INFO] [stdout]  --> src/util/refining/constant.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Constant<T: Clone> {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]  --> src/util/refining/constant.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | impl<T: Clone> Constant<T> {
[INFO] [stdout]   | -------------------------- associated function in this implementation
[INFO] [stdout] 8 |     pub fn new(value: T) -> Self {
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/cameras/perspective.rs:80:27
[INFO] [stdout]    |
[INFO] [stdout] 80 |     pub fn enumerate_rays(&self, point: Point<2>) -> Rays {
[INFO] [stdout]    |                           ^^^^^                      ^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                           |
[INFO] [stdout]    |                           the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 80 |     pub fn enumerate_rays(&self, point: Point<2>) -> Rays<'_> {
[INFO] [stdout]    |                                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `net::AddrParseError`
[INFO] [stdout]  --> src/animation/time.rs:1:71
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{ops::{Add, Sub, Mul, Div, AddAssign, MulAssign, DivAssign}, net::AddrParseError};
[INFO] [stdout]   |                                                                       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rstest::rstest`
[INFO] [stdout]   --> src/data/bufit.rs:30:9
[INFO] [stdout]    |
[INFO] [stdout] 30 |     use rstest::rstest;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Encoder`
[INFO] [stdout]  --> src/imaging/export.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | use png::{Encoder, Writer};
[INFO] [stdout]   |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Ray`, `Vector`, and `imaging::color::Color`
[INFO] [stdout]  --> src/materials/uniform.rs:1:13
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::{imaging::color::Color, math::{Ray, Vector}, primitives::LocalPosition};
[INFO] [stdout]   |             ^^^^^^^^^^^^^^^^^^^^^         ^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `metric::Metric`
[INFO] [stdout]   --> src/math/mod.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub use metric::Metric;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/primitives/plane.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `imaging::color::Color` and `materials::UniformMaterial`
[INFO] [stdout]  --> src/primitives/plane.rs:4:61
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::{math::{pt, vc, CoordinateSystem3D, Point, Ray}, materials::UniformMaterial, imaging::color::Color};
[INFO] [stdout]   |                                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/primitives/primitive.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Material`
[INFO] [stdout]  --> src/primitives/primitive.rs:4:81
[INFO] [stdout]   |
[INFO] [stdout] 4 |     math::{Point, Ray, Vector, transformation3d::Transformation3D}, materials::{Material, MaterialProperties},
[INFO] [stdout]   |                                                                                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::rc::Rc`
[INFO] [stdout]  --> src/primitives/sphere.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::rc::Rc;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `imaging::color::Color` and `materials::UniformMaterial`
[INFO] [stdout]  --> src/primitives/sphere.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 |     imaging::color::Color,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 9 |     }, materials::UniformMaterial,
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::lights::light::LightRay`
[INFO] [stdout]  --> src/primitives/transformer.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::lights::light::LightRay;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `scripting::values::NativeFunction`
[INFO] [stdout]  --> src/scripting/prelude.rs:3:27
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::{data::Either, scripting::values::NativeFunction};
[INFO] [stdout]   |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `ops::Neg` and `rc::Rc`
[INFO] [stdout]  --> src/tracing/raytracer.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{ops::Neg, rc::Rc};
[INFO] [stdout]   |           ^^^^^^^^  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Matrix`
[INFO] [stdout]  --> src/tracing/raytracer.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 |     math::{Ray, Matrix},
[INFO] [stdout]   |                 ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `assert_same_elements`
[INFO] [stdout]   --> src/util/algorithms.rs:63:9
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub use assert_same_elements;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `define_tag`
[INFO] [stdout]   --> src/util/tag.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use define_tag;
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Constant`
[INFO] [stdout]  --> src/util/mod.rs:5:28
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub use refining::{Refine, Constant};
[INFO] [stdout]   |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `local_position`
[INFO] [stdout]   --> src/materials/uniform.rs:16:18
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn at(&self, local_position: LocalPosition) -> MaterialProperties {
[INFO] [stdout]    |                  ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_local_position`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `outgoing`
[INFO] [stdout]   --> src/materials/brdf.rs:16:23
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn compute(&self, outgoing: &Vector<3>, incoming: &Vector<3>) -> f64 {
[INFO] [stdout]    |                       ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_outgoing`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `incoming`
[INFO] [stdout]   --> src/materials/brdf.rs:16:45
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn compute(&self, outgoing: &Vector<3>, incoming: &Vector<3>) -> f64 {
[INFO] [stdout]    |                                             ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_incoming`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `matrix`
[INFO] [stdout]   --> src/primitives/transformer.rs:24:13
[INFO] [stdout]    |
[INFO] [stdout] 24 |         let matrix = &self.transformation.matrix;
[INFO] [stdout]    |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_matrix`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x`
[INFO] [stdout]   --> src/regex/mod.rs:52:26
[INFO] [stdout]    |
[INFO] [stdout] 52 |             Self::Kleene(x) => true,
[INFO] [stdout]    |                          ^ help: if this is intentional, prefix it with an underscore: `_x`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/regex/mod.rs:79:21
[INFO] [stdout]    |
[INFO] [stdout] 79 |                 let mut result = vec![x.feed(ch), y.feed(ch)];
[INFO] [stdout]    |                     ----^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/scripting/evaluating.rs:88:9
[INFO] [stdout]    |
[INFO] [stdout] 88 |         mut values: Vec<i64>,
[INFO] [stdout]    |         ----^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/scripting/interpreting.rs:33:32
[INFO] [stdout]    |
[INFO] [stdout] 33 |         while let Some((token, i, j)) = tokenizer
[INFO] [stdout]    |                                ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `j`
[INFO] [stdout]   --> src/scripting/interpreting.rs:33:35
[INFO] [stdout]    |
[INFO] [stdout] 33 |         while let Some((token, i, j)) = tokenizer
[INFO] [stdout]    |                                   ^ help: if this is intentional, prefix it with an underscore: `_j`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/scripting/tokenizing/automaton.rs:22:13
[INFO] [stdout]    |
[INFO] [stdout] 22 |         let mut next_generation: Vec<(Regex, T)> = self
[INFO] [stdout]    |             ----^^^^^^^^^^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/tracing/raytracer.rs:63:17
[INFO] [stdout]    |
[INFO] [stdout] 63 |             let mut reflected_ray = {
[INFO] [stdout]    |                 ----^^^^^^^^^^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/tracing/raytracer.rs:93:25
[INFO] [stdout]    |
[INFO] [stdout] 93 |                     let mut ray = Ray::new(origin, transformed_direction).nudged(0.00001);
[INFO] [stdout]    |                         ----^^^
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ray`
[INFO] [stdout]   --> src/tracing/raytracer.rs:83:21
[INFO] [stdout]    |
[INFO] [stdout] 83 |                 let ray = &hit.ray;
[INFO] [stdout]    |                     ^^^ help: if this is intentional, prefix it with an underscore: `_ray`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `green_material`
[INFO] [stdout]   --> src/main.rs:85:13
[INFO] [stdout]    |
[INFO] [stdout] 85 |         let green_material = create_material(Color::green());
[INFO] [stdout]    |             ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_green_material`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `buffered_iterator` is never used
[INFO] [stdout]   --> src/data/bufit.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 36 |     fn buffered_iterator() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `WriteError` is never used
[INFO] [stdout]   --> src/imaging/image.rs:14:10
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum WriteError {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get`, `write_to_file`, and `write` are never used
[INFO] [stdout]   --> src/imaging/image.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl Image {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 32 |     pub fn get(&self, position: Position<2>) -> &Color {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 49 |     pub fn write_to_file(&self, path: &Path) -> std::result::Result<(), WriteError> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 56 |     pub fn write(&self, writer: impl Write) -> std::result::Result<(), WriteError> {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `transform` is never used
[INFO] [stdout]   --> src/lights/light.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | impl LightRay {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 20 |     pub fn transform(&mut self, matrix: &Matrix<4, 4>) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Diffuse` is never constructed
[INFO] [stdout]  --> src/materials/brdf.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub struct Diffuse { }
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/materials/brdf.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl Diffuse {
[INFO] [stdout]    | ------------ associated function in this implementation
[INFO] [stdout] 10 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `approx` is never used
[INFO] [stdout]  --> src/math/approx.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub trait Approx {
[INFO] [stdout]   |           ------ method in this trait
[INFO] [stdout] 4 |     fn approx(&self, rhs: &Self) -> bool {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `transform` is never used
[INFO] [stdout]   --> src/math/coordsys.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl CoordinateSystem3D {
[INFO] [stdout]    | ----------------------- method in this implementation
[INFO] [stdout] 11 |     pub fn transform(&mut self, matrix: &Matrix<4, 4>) {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `cartesian`, `x`, `y`, and `z` are never used
[INFO] [stdout]   --> src/math/position.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl Position<3> {
[INFO] [stdout]    | ---------------- associated items in this implementation
[INFO] [stdout] 27 |     pub fn cartesian(x: i32, y: i32, z: i32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn x(&self) -> i32 {
[INFO] [stdout]    |            ^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn y(&self) -> i32 {
[INFO] [stdout]    |            ^
[INFO] [stdout] ...
[INFO] [stdout] 39 |     pub fn z(&self) -> i32 {
[INFO] [stdout]    |            ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `xyz` and `uv` are never read
[INFO] [stdout]   --> src/primitives/primitive.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct LocalPosition {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 17 |     pub xyz: Point<3>,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 18 |     pub uv: Point<2>,
[INFO] [stdout]    |         ^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `LocalPosition` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `empty`, `feed`, `lowercase_letter`, `uppercase_letter`, and `letter` are never used
[INFO] [stdout]    --> src/regex/mod.rs:181:12
[INFO] [stdout]     |
[INFO] [stdout] 174 | impl Regex {
[INFO] [stdout]     | ---------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 181 |     pub fn empty() -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 231 |     pub fn feed(&self, ch: char) -> Self {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 261 |     pub fn lowercase_letter() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 265 |     pub fn uppercase_letter() -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 269 |     pub fn letter() -> Self {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/scripting/evaluating.rs:51:13
[INFO] [stdout]    |
[INFO] [stdout] 51 |     Unbound(String),
[INFO] [stdout]    |     ------- ^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EvaluationError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 51 -     Unbound(String),
[INFO] [stdout] 51 +     Unbound(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `MalformedLet` is never constructed
[INFO] [stdout]   --> src/scripting/evaluating.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub enum EvaluationError {
[INFO] [stdout]    |          --------------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 53 |     MalformedLet,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EvaluationError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/scripting/interpreting.rs:16:21
[INFO] [stdout]    |
[INFO] [stdout] 16 |     TokenizingError(TokenizingError),
[INFO] [stdout]    |     --------------- ^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `InterpretingError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 16 -     TokenizingError(TokenizingError),
[INFO] [stdout] 16 +     TokenizingError(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/scripting/interpreting.rs:17:18
[INFO] [stdout]    |
[INFO] [stdout] 17 |     ParsingError(ParsingError),
[INFO] [stdout]    |     ------------ ^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `InterpretingError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 17 -     ParsingError(ParsingError),
[INFO] [stdout] 17 +     ParsingError(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]   --> src/scripting/interpreting.rs:18:21
[INFO] [stdout]    |
[INFO] [stdout] 18 |     EvaluationError(EvaluationError),
[INFO] [stdout]    |     --------------- ^^^^^^^^^^^^^^^
[INFO] [stdout]    |     |
[INFO] [stdout]    |     field in this variant
[INFO] [stdout]    |
[INFO] [stdout]    = note: `InterpretingError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]    |
[INFO] [stdout] 18 -     EvaluationError(EvaluationError),
[INFO] [stdout] 18 +     EvaluationError(()),
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]  --> src/scripting/tokenizing/tokenerror.rs:7:18
[INFO] [stdout]   |
[INFO] [stdout] 7 |     IntegerError(ParseIntError),
[INFO] [stdout]   |     ------------ ^^^^^^^^^^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     field in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `TokenizingError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]   |
[INFO] [stdout] 7 -     IntegerError(ParseIntError),
[INFO] [stdout] 7 +     IntegerError(()),
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]  --> src/scripting/tokenizing/tokenerror.rs:8:30
[INFO] [stdout]   |
[INFO] [stdout] 8 |     FloatingPointNumberError(ParseFloatError),
[INFO] [stdout]   |     ------------------------ ^^^^^^^^^^^^^^^
[INFO] [stdout]   |     |
[INFO] [stdout]   |     field in this variant
[INFO] [stdout]   |
[INFO] [stdout]   = note: `TokenizingError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]   |
[INFO] [stdout] 8 -     FloatingPointNumberError(ParseFloatError),
[INFO] [stdout] 8 +     FloatingPointNumberError(()),
[INFO] [stdout]   |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Boolean` is never constructed
[INFO] [stdout]  --> src/scripting/values.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum Value {
[INFO] [stdout]   |          ----- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 9 |     Boolean(bool),
[INFO] [stdout]   |     ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Value` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]   --> src/scripting/values.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl Value {
[INFO] [stdout]    | ---------- methods in this implementation
[INFO] [stdout] 20 |     pub fn is_integer(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 27 |     pub fn is_float(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn is_bool(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn is_list(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn is_symbol(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn is_nil(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 62 |     pub fn is_native_function(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Tag` is never used
[INFO] [stdout]  --> src/util/tag.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub trait Tag: Debug + Hash + PartialEq + Eq + Copy + Clone {}
[INFO] [stdout]   |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Constant` is never constructed
[INFO] [stdout]  --> src/util/refining/constant.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct Constant<T: Clone> {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]  --> src/util/refining/constant.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 7 | impl<T: Clone> Constant<T> {
[INFO] [stdout]   | -------------------------- associated function in this implementation
[INFO] [stdout] 8 |     pub fn new(value: T) -> Self {
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/cameras/perspective.rs:80:27
[INFO] [stdout]    |
[INFO] [stdout] 80 |     pub fn enumerate_rays(&self, point: Point<2>) -> Rays {
[INFO] [stdout]    |                           ^^^^^                      ^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                           |
[INFO] [stdout]    |                           the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 80 |     pub fn enumerate_rays(&self, point: Point<2>) -> Rays<'_> {
[INFO] [stdout]    |                                                          ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 15.52s
[INFO] running `Command { std: "docker" "inspect" "6997c3a73deede2cca6fcc1d97f5c5905259e8c8f2e9891ca17964e842b46f39", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6997c3a73deede2cca6fcc1d97f5c5905259e8c8f2e9891ca17964e842b46f39", kill_on_drop: false }`
[INFO] [stdout] 6997c3a73deede2cca6fcc1d97f5c5905259e8c8f2e9891ca17964e842b46f39
