[INFO] cloning repository https://github.com/alsor/durer_renderer
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/alsor/durer_renderer" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Falsor%2Fdurer_renderer", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Falsor%2Fdurer_renderer'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] c4b1df4c4fcc5e215db6fd6f170d2e529ec5caa7
[INFO] testing alsor/durer_renderer against 1.47.0 for beta-1.48-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Falsor%2Fdurer_renderer" "/workspace/builds/worker-9/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-9/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/alsor/durer_renderer on toolchain 1.47.0
[INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+1.47.0" "read-manifest" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/alsor/durer_renderer
[INFO] finished tweaking git repo https://github.com/alsor/durer_renderer
[INFO] tweaked toml for git repo https://github.com/alsor/durer_renderer written to /workspace/builds/worker-9/source/Cargo.toml
[INFO] crate git repo https://github.com/alsor/durer_renderer already has a lockfile, it will not be regenerated
[INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+1.47.0" "fetch" "--locked" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-9/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-9/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" "rustops/crates-build-env@sha256:d92eaeed33fa75130ca1ee6c8a01d1ffb62bac859dfdfb3450e3e5d1c0146529" "/opt/rustwide/cargo-home/bin/cargo" "+1.47.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] f3978c246cf562dc483be9cf9ad851d085ae9a11893bac57f75d41a7f9d8af70
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] running `Command { std: "docker" "start" "-a" "f3978c246cf562dc483be9cf9ad851d085ae9a11893bac57f75d41a7f9d8af70", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "f3978c246cf562dc483be9cf9ad851d085ae9a11893bac57f75d41a7f9d8af70", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f3978c246cf562dc483be9cf9ad851d085ae9a11893bac57f75d41a7f9d8af70", kill_on_drop: false }`
[INFO] [stdout] f3978c246cf562dc483be9cf9ad851d085ae9a11893bac57f75d41a7f9d8af70
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-9/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-9/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" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "rustops/crates-build-env@sha256:d92eaeed33fa75130ca1ee6c8a01d1ffb62bac859dfdfb3450e3e5d1c0146529" "/opt/rustwide/cargo-home/bin/cargo" "+1.47.0" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] adb517eb47c8fb0a8e7a0606764cc8dfda40270e693e7f51ebc4383a103acc8f
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] running `Command { std: "docker" "start" "-a" "adb517eb47c8fb0a8e7a0606764cc8dfda40270e693e7f51ebc4383a103acc8f", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v0.15.42
[INFO] [stderr]    Compiling regex v1.0.2
[INFO] [stderr]    Compiling termcolor v0.3.6
[INFO] [stderr]    Compiling num-integer v0.1.41
[INFO] [stderr]    Compiling num-rational v0.2.2
[INFO] [stderr]    Compiling inflate v0.4.5
[INFO] [stderr]    Compiling humantime v1.1.1
[INFO] [stderr]    Compiling gif v0.10.2
[INFO] [stderr]    Compiling atty v0.2.8
[INFO] [stderr]    Compiling crc32fast v1.2.0
[INFO] [stderr]    Compiling rayon v0.8.2
[INFO] [stderr]    Compiling png v0.15.0
[INFO] [stderr]    Compiling num-iter v0.1.35
[INFO] [stderr]    Compiling num v0.1.42
[INFO] [stderr]    Compiling sdl2 v0.31.0
[INFO] [stderr]    Compiling jpeg-decoder v0.1.13
[INFO] [stderr]    Compiling env_logger v0.5.10
[INFO] [stderr]    Compiling num-derive v0.2.5
[INFO] [stderr]    Compiling tiff v0.3.1
[INFO] [stderr]    Compiling image v0.22.0
[INFO] [stderr]    Compiling durer v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `thread`, `time`
[INFO] [stdout]  --> src/main.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{thread, time};
[INFO] [stdout]   |           ^^^^^^  ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::prelude::*`
[INFO] [stdout]  --> src/main.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::io::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]  --> src/main.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::str::FromStr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/main.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]   --> src/main.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use rand::Rng;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::rect::Rect`
[INFO] [stdout]   --> src/main.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use sdl2::rect::Rect;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `plane::Plane`
[INFO] [stdout]   --> src/main.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use plane::Plane;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/ray_tracing.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::plane::PlaneType`
[INFO] [stdout]  --> src/projective_camera.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::plane::PlaneType;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::Point2D`
[INFO] [stdout]  --> src/buffer_canvas.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::Point2D;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::Vector3f`
[INFO] [stdout]  --> src/buffer_canvas.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::Vector3f;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/buffer_canvas.rs:84:22
[INFO] [stdout]    |
[INFO] [stdout] 84 |         let result = (canvas_width / 2 + x_canvas);
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/buffer_canvas.rs:95:22
[INFO] [stdout]    |
[INFO] [stdout] 95 |         let result = (canvas_height / 2 - y_canvas - 1);
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Color`, `Triangle`
[INFO] [stdout]  --> src/instance.rs:1:13
[INFO] [stdout]   |
[INFO] [stdout] 1 | use crate::{Color, Triangle};
[INFO] [stdout]   |             ^^^^^  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/ply2.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::triangle`
[INFO] [stdout]  --> src/ply2.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::triangle;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::video::WindowPos::Positioned`
[INFO] [stdout]  --> src/rendering.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use sdl2::video::WindowPos::Positioned;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `face_visible`
[INFO] [stdout]  --> src/rendering.rs:4:13
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::{face_visible, Triangle, Triangle4f};
[INFO] [stdout]   |             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `transform`
[INFO] [stdout]  --> src/rendering.rs:6:30
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::{face_visible_4f, transform};
[INFO] [stdout]   |                              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::Point2D`
[INFO] [stdout]   --> src/rendering.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::Point2D;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/ply2.rs:88:13
[INFO] [stdout]    |
[INFO] [stdout] 88 |             _ => ()
[INFO] [stdout]    |             ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/main.rs:226:13
[INFO] [stdout]     |
[INFO] [stdout] 226 |         for i in 1..dx {
[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: unused variable: `i`
[INFO] [stdout]    --> src/main.rs:251:13
[INFO] [stdout]     |
[INFO] [stdout] 251 |         for i in 1..dy {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rng`
[INFO] [stdout]    --> src/main.rs:451:9
[INFO] [stdout]     |
[INFO] [stdout] 451 |     let mut rng = rand::thread_rng();
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rng`
[INFO] [stdout]    --> src/main.rs:491:9
[INFO] [stdout]     |
[INFO] [stdout] 491 |     let mut rng = rand::thread_rng();
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `size`
[INFO] [stdout]    --> src/main.rs:713:9
[INFO] [stdout]     |
[INFO] [stdout] 713 |     let size = (z_max - z_min).abs();
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rendering_settings`
[INFO] [stdout]     --> src/main.rs:1150:9
[INFO] [stdout]      |
[INFO] [stdout] 1150 |     let mut rendering_settings = RenderingSettings {
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rendering_settings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `red`
[INFO] [stdout]     --> src/main.rs:1188:9
[INFO] [stdout]      |
[INFO] [stdout] 1188 |     let red = Color { r: 255, g: 0, b: 0 };
[INFO] [stdout]      |         ^^^ help: if this is intentional, prefix it with an underscore: `_red`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `green`
[INFO] [stdout]     --> src/main.rs:1189:9
[INFO] [stdout]      |
[INFO] [stdout] 1189 |     let green = Color { r: 0, g: 255, b: 0 };
[INFO] [stdout]      |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_green`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `blue`
[INFO] [stdout]     --> src/main.rs:1190:9
[INFO] [stdout]      |
[INFO] [stdout] 1190 |     let blue = Color { r: 0, g: 0, b: 255 };
[INFO] [stdout]      |         ^^^^ help: if this is intentional, prefix it with an underscore: `_blue`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `white`
[INFO] [stdout]     --> src/main.rs:1191:9
[INFO] [stdout]      |
[INFO] [stdout] 1191 |     let white = Color { r: 255, g: 255, b: 255 };
[INFO] [stdout]      |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_white`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sphere`
[INFO] [stdout]     --> src/main.rs:1197:9
[INFO] [stdout]      |
[INFO] [stdout] 1197 |     let sphere = sphere(35);
[INFO] [stdout]      |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_sphere`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cube`
[INFO] [stdout]     --> src/main.rs:1198:9
[INFO] [stdout]      |
[INFO] [stdout] 1198 |     let cube = cube(0.9);
[INFO] [stdout]      |         ^^^^ help: if this is intentional, prefix it with an underscore: `_cube`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `torus`
[INFO] [stdout]     --> src/main.rs:1202:9
[INFO] [stdout]      |
[INFO] [stdout] 1202 |     let torus = ply2::load_model("resources/torus.ply2");
[INFO] [stdout]      |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_torus`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_instance_index`
[INFO] [stdout]     --> src/main.rs:1207:9
[INFO] [stdout]      |
[INFO] [stdout] 1207 |     let mut current_instance_index: Option<usize> = None;
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_instance_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lights`
[INFO] [stdout]     --> src/main.rs:1283:9
[INFO] [stdout]      |
[INFO] [stdout] 1283 |     let lights = vec![
[INFO] [stdout]      |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_lights`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `camera`
[INFO] [stdout]     --> src/main.rs:1358:13
[INFO] [stdout]      |
[INFO] [stdout] 1358 |         let camera = ProjectiveCamera {
[INFO] [stdout]      |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_camera`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rng`
[INFO] [stdout]    --> src/ray_tracing.rs:208:9
[INFO] [stdout]     |
[INFO] [stdout] 208 |     let mut rng = rand::thread_rng();
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/buffer_canvas.rs:149:17
[INFO] [stdout]     |
[INFO] [stdout] 149 |             for i in 1..dx {
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/buffer_canvas.rs:170:17
[INFO] [stdout]     |
[INFO] [stdout] 170 |             for i in 1..dy {
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rng`
[INFO] [stdout]   --> src/ply2.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 34 |     let mut rng = rand::thread_rng();
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/starfield.rs:21:13
[INFO] [stdout]    |
[INFO] [stdout] 21 |         for i in 0..num_stars {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `camera`
[INFO] [stdout]    --> src/rendering.rs:417:5
[INFO] [stdout]     |
[INFO] [stdout] 417 |     camera: &ProjectiveCamera,
[INFO] [stdout]     |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_camera`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `h_segment`
[INFO] [stdout]    --> src/rendering.rs:589:13
[INFO] [stdout]     |
[INFO] [stdout] 589 |         let h_segment = interpolate_float(x_l, h_left[y_index], x_r, h_right[y_index]);
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_h_segment`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `h_segment`
[INFO] [stdout]    --> src/rendering.rs:746:13
[INFO] [stdout]     |
[INFO] [stdout] 746 |         let h_segment = interpolate_float(x_l, h_left[y_index], x_r, h_right[y_index]);
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_h_segment`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `v0` is never read
[INFO] [stdout]    --> src/rendering.rs:800:9
[INFO] [stdout]     |
[INFO] [stdout] 800 |         v0 = v2;
[INFO] [stdout]     |         ^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `v1` is never read
[INFO] [stdout]    --> src/rendering.rs:813:9
[INFO] [stdout]     |
[INFO] [stdout] 813 |         v1 = v2;
[INFO] [stdout]     |         ^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `v2` is never read
[INFO] [stdout]    --> src/rendering.rs:814:9
[INFO] [stdout]     |
[INFO] [stdout] 814 |         v2 = swap;
[INFO] [stdout]     |         ^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `h_segment`
[INFO] [stdout]    --> src/rendering.rs:927:13
[INFO] [stdout]     |
[INFO] [stdout] 927 |         let h_segment = interpolate_float(x_l, h_left[y_index], x_r, h_right[y_index]);
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_h_segment`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `v0` is never read
[INFO] [stdout]     --> src/rendering.rs:1004:9
[INFO] [stdout]      |
[INFO] [stdout] 1004 |         v0 = v2;
[INFO] [stdout]      |         ^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `v1` is never read
[INFO] [stdout]     --> src/rendering.rs:1021:9
[INFO] [stdout]      |
[INFO] [stdout] 1021 |         v1 = v2;
[INFO] [stdout]      |         ^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `v2` is never read
[INFO] [stdout]     --> src/rendering.rs:1022:9
[INFO] [stdout]      |
[INFO] [stdout] 1022 |         v2 = swap;
[INFO] [stdout]      |         ^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `h_segment`
[INFO] [stdout]     --> src/rendering.rs:1171:13
[INFO] [stdout]      |
[INFO] [stdout] 1171 |         let h_segment = interpolate_float(x_l, h_left[y_index], x_r, h_right[y_index]);
[INFO] [stdout]      |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_h_segment`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]     --> src/rendering.rs:1247:9
[INFO] [stdout]      |
[INFO] [stdout] 1247 |     for i in i0..(i1 + 1) {
[INFO] [stdout]      |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]     --> src/rendering.rs:1263:9
[INFO] [stdout]      |
[INFO] [stdout] 1263 |     for i in i0..(i1 + 1) {
[INFO] [stdout]      |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:451:9
[INFO] [stdout]     |
[INFO] [stdout] 451 |     let mut rng = rand::thread_rng();
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:491:9
[INFO] [stdout]     |
[INFO] [stdout] 491 |     let mut rng = rand::thread_rng();
[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/main.rs:1150:9
[INFO] [stdout]      |
[INFO] [stdout] 1150 |     let mut rendering_settings = RenderingSettings {
[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/main.rs:1207:9
[INFO] [stdout]      |
[INFO] [stdout] 1207 |     let mut current_instance_index: Option<usize> = None;
[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/ray_tracing.rs:208:9
[INFO] [stdout]     |
[INFO] [stdout] 208 |     let mut rng = rand::thread_rng();
[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/ply2.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 34 |     let mut rng = rand::thread_rng();
[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/rendering.rs:537:9
[INFO] [stdout]     |
[INFO] [stdout] 537 |     let mut x02 = interpolate_int(p0.y, p0.x, p2.y, p2.x);
[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/rendering.rs:538:9
[INFO] [stdout]     |
[INFO] [stdout] 538 |     let mut h02 = interpolate_float(p0.y, p0.h, p2.y, p2.h);
[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/rendering.rs:539:9
[INFO] [stdout]     |
[INFO] [stdout] 539 |     let mut iz02 = interpolate_float(p0.y, 1.0 / p0.z, p2.y, 1.0 / p2.z);
[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/rendering.rs:556:9
[INFO] [stdout]     |
[INFO] [stdout] 556 |     let mut x_left;
[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/rendering.rs:557:9
[INFO] [stdout]     |
[INFO] [stdout] 557 |     let mut x_right;
[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/rendering.rs:558:9
[INFO] [stdout]     |
[INFO] [stdout] 558 |     let mut h_left;
[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/rendering.rs:559:9
[INFO] [stdout]     |
[INFO] [stdout] 559 |     let mut h_right;
[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/rendering.rs:560:9
[INFO] [stdout]     |
[INFO] [stdout] 560 |     let mut iz_left;
[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/rendering.rs:561:9
[INFO] [stdout]     |
[INFO] [stdout] 561 |     let mut iz_right;
[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/rendering.rs:679:9
[INFO] [stdout]     |
[INFO] [stdout] 679 |     let mut x02 = interpolate_int(p0.y, p0.x, p2.y, p2.x);
[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/rendering.rs:680:9
[INFO] [stdout]     |
[INFO] [stdout] 680 |     let mut h02 = interpolate_float(p0.y, p0.h, p2.y, p2.h);
[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/rendering.rs:681:9
[INFO] [stdout]     |
[INFO] [stdout] 681 |     let mut iz02 = interpolate_float(p0.y, 1.0 / p0.z, p2.y, 1.0 / p2.z);
[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/rendering.rs:682:9
[INFO] [stdout]     |
[INFO] [stdout] 682 |     let mut i02 = interpolate_float(p0.y, i0, p2.y, i2);
[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/rendering.rs:705:9
[INFO] [stdout]     |
[INFO] [stdout] 705 |     let mut x_left;
[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/rendering.rs:706:9
[INFO] [stdout]     |
[INFO] [stdout] 706 |     let mut x_right;
[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/rendering.rs:707:9
[INFO] [stdout]     |
[INFO] [stdout] 707 |     let mut h_left;
[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/rendering.rs:708:9
[INFO] [stdout]     |
[INFO] [stdout] 708 |     let mut h_right;
[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/rendering.rs:709:9
[INFO] [stdout]     |
[INFO] [stdout] 709 |     let mut iz_left;
[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/rendering.rs:710:9
[INFO] [stdout]     |
[INFO] [stdout] 710 |     let mut iz_right;
[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/rendering.rs:711:9
[INFO] [stdout]     |
[INFO] [stdout] 711 |     let mut i_left;
[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/rendering.rs:712:9
[INFO] [stdout]     |
[INFO] [stdout] 712 |     let mut i_right;
[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/rendering.rs:836:9
[INFO] [stdout]     |
[INFO] [stdout] 836 |     let mut x02 = interpolate_int(p0.y, p0.x, p2.y, p2.x);
[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/rendering.rs:837:9
[INFO] [stdout]     |
[INFO] [stdout] 837 |     let mut h02 = interpolate_float(p0.y, p0.h, p2.y, p2.h);
[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/rendering.rs:838:9
[INFO] [stdout]     |
[INFO] [stdout] 838 |     let mut iz02 = interpolate_float(p0.y, 1.0 / p0.z, p2.y, 1.0 / p2.z);
[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/rendering.rs:839:9
[INFO] [stdout]     |
[INFO] [stdout] 839 |     let mut normal_x_02 = interpolate_float(p0.y, normal0.x, p2.y, normal2.x);
[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/rendering.rs:840:9
[INFO] [stdout]     |
[INFO] [stdout] 840 |     let mut normal_y_02 = interpolate_float(p0.y, normal0.y, p2.y, normal2.y);
[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/rendering.rs:841:9
[INFO] [stdout]     |
[INFO] [stdout] 841 |     let mut normal_z_02 = interpolate_float(p0.y, normal0.z, p2.y, normal2.z);
[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/rendering.rs:1052:9
[INFO] [stdout]      |
[INFO] [stdout] 1052 |     let mut x02 = interpolate_int(p0.y, p0.x, p2.y, p2.x);
[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/rendering.rs:1053:9
[INFO] [stdout]      |
[INFO] [stdout] 1053 |     let mut h02 = interpolate_float(p0.y, p0.h, p2.y, p2.h);
[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/rendering.rs:1054:9
[INFO] [stdout]      |
[INFO] [stdout] 1054 |     let mut iz02 = interpolate_float(p0.y, 1.0 / p0.z, p2.y, 1.0 / p2.z);
[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/rendering.rs:1055:9
[INFO] [stdout]      |
[INFO] [stdout] 1055 |     let mut uz02 = interpolate_float(p0.y, uv0.u / p0.z, p2.y, uv2.u / p2.z);
[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/rendering.rs:1056:9
[INFO] [stdout]      |
[INFO] [stdout] 1056 |     let mut vz02 = interpolate_float(p0.y, uv0.v / p0.z, p2.y, uv2.v / p2.z);
[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/rendering.rs:1057:9
[INFO] [stdout]      |
[INFO] [stdout] 1057 |     let mut normal_x_02 = interpolate_float(p0.y, normal0.x, p2.y, normal2.x);
[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/rendering.rs:1058:9
[INFO] [stdout]      |
[INFO] [stdout] 1058 |     let mut normal_y_02 = interpolate_float(p0.y, normal0.y, p2.y, normal2.y);
[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/rendering.rs:1059:9
[INFO] [stdout]      |
[INFO] [stdout] 1059 |     let mut normal_z_02 = interpolate_float(p0.y, normal0.z, p2.y, normal2.z);
[INFO] [stdout]      |         ----^^^^^^^^^^^
[INFO] [stdout]      |         |
[INFO] [stdout]      |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: private type `Point2D` in public interface (error E0446)
[INFO] [stdout]   --> src/projective_camera.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn project(&self, point: Vector3f) -> Point2D {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(private_in_public)]` on by default
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #34537 <https://github.com/rust-lang/rust/issues/34537>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: private type `Point2D` in public interface (error E0446)
[INFO] [stdout]   --> src/projective_camera.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub fn project_vertex(&self, vertex: Vector4f) -> Point2D {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #34537 <https://github.com/rust-lang/rust/issues/34537>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: private type `Point` in public interface (error E0446)
[INFO] [stdout]   --> src/buffer_canvas.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 46 |     pub fn viewport_to_canvas(&self, vertex: Vector4f, camera: &ProjectiveCamera) -> Point {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #34537 <https://github.com/rust-lang/rust/issues/34537>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: private type `Point` in public interface (error E0446)
[INFO] [stdout]    --> src/buffer_canvas.rs:108:5
[INFO] [stdout]     |
[INFO] [stdout] 108 |     pub fn draw_line(&mut self, start: Point, end: Point, color: Color) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #34537 <https://github.com/rust-lang/rust/issues/34537>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `render_scene_to_buffer`
[INFO] [stdout]   --> src/ray_tracing.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn render_scene_to_buffer(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `canvas_to_viewport`
[INFO] [stdout]   --> src/ray_tracing.rs:69:4
[INFO] [stdout]    |
[INFO] [stdout] 69 | fn canvas_to_viewport(x: i32, y: i32, canvas_width: i32, canvas_height: i32) -> Vector3f {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `compute_lighting`
[INFO] [stdout]   --> src/ray_tracing.rs:81:4
[INFO] [stdout]    |
[INFO] [stdout] 81 | fn compute_lighting(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `compute_light_from_direction`
[INFO] [stdout]    --> src/ray_tracing.rs:122:4
[INFO] [stdout]     |
[INFO] [stdout] 122 | fn compute_light_from_direction(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `closest_intersection`
[INFO] [stdout]    --> src/ray_tracing.rs:174:4
[INFO] [stdout]     |
[INFO] [stdout] 174 | fn closest_intersection(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `trace_ray`
[INFO] [stdout]    --> src/ray_tracing.rs:199:4
[INFO] [stdout]     |
[INFO] [stdout] 199 | fn trace_ray(
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `add_colors`
[INFO] [stdout]    --> src/ray_tracing.rs:271:4
[INFO] [stdout]     |
[INFO] [stdout] 271 | fn add_colors(color1: Color, color2: Color) -> Color {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `contains`
[INFO] [stdout]    --> src/ray_tracing.rs:279:4
[INFO] [stdout]     |
[INFO] [stdout] 279 | fn contains(range: (f64, f64), n: f64) -> bool {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `intersect_ray_with_sphere`
[INFO] [stdout]    --> src/ray_tracing.rs:284:4
[INFO] [stdout]     |
[INFO] [stdout] 284 | fn intersect_ray_with_sphere(origin: Vector3f, direction: Vector3f, sphere: Sphere) -> (f64, f64) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `dot_product`
[INFO] [stdout]  --> src/vectors.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn dot_product(v1: Vector3f, v2: Vector3f) -> f64 {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `multiply_vec_and_mat`
[INFO] [stdout]   --> src/vectors.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub fn multiply_vec_and_mat(vec: [f64; 3], mat: [[f64; 3]; 3]) -> [f64; 3] {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `sum`
[INFO] [stdout]   --> src/vectors.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn sum(v1: Vector3f, v2: Vector3f) -> Vector3f {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `negate`
[INFO] [stdout]   --> src/vectors.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub fn negate(vector: Vector3f) -> Vector3f {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `reflect`
[INFO] [stdout]   --> src/vectors.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn reflect(v1: Vector3f, v2: Vector3f) -> Vector3f {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `scale`
[INFO] [stdout]   --> src/vectors.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub fn scale(scalar: f64, vector: Vector3f) -> Vector3f {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `rotation_around_y`
[INFO] [stdout]   --> src/vectors.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub fn rotation_around_y(d: f64) -> [[f64; 3]; 3] {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `project`
[INFO] [stdout]   --> src/projective_camera.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn project(&self, point: Vector3f) -> Point2D {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `project_vertex`
[INFO] [stdout]   --> src/projective_camera.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub fn project_vertex(&self, vertex: Vector4f) -> Point2D {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `camera_transform`
[INFO] [stdout]   --> src/projective_camera.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 |     pub fn camera_transform(&self) -> Matrix44f {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `clipping_planes`
[INFO] [stdout]   --> src/projective_camera.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub fn clipping_planes(&self) -> Vec<Plane> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `right_plane_normal`
[INFO] [stdout]   --> src/projective_camera.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 70 |     fn right_plane_normal(&self, half_viewport_size: f64) -> Vector3f {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `top_plane_normal`
[INFO] [stdout]   --> src/projective_camera.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 85 |     fn top_plane_normal(&self, half_viewport_size: f64) -> Vector3f {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `left_plane_normal`
[INFO] [stdout]    --> src/projective_camera.rs:100:8
[INFO] [stdout]     |
[INFO] [stdout] 100 |     fn left_plane_normal(&self, half_viewport_size: f64) -> Vector3f {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `bottom_plane_normal`
[INFO] [stdout]    --> src/projective_camera.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 |     fn bottom_plane_normal(&self, half_viewport_size: f64) -> Vector3f {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `viewport_to_canvas`
[INFO] [stdout]   --> src/buffer_canvas.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 46 |     pub fn viewport_to_canvas(&self, vertex: Vector4f, camera: &ProjectiveCamera) -> Point {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `update_depth_buffer_if_closer`
[INFO] [stdout]   --> src/buffer_canvas.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout] 71 |     pub fn update_depth_buffer_if_closer(&mut self, screen_x: usize, screen_y: usize, iz: f64) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `screen_x`
[INFO] [stdout]   --> src/buffer_canvas.rs:82:12
[INFO] [stdout]    |
[INFO] [stdout] 82 |     pub fn screen_x(&self, x_canvas: i32) -> usize {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `screen_y`
[INFO] [stdout]   --> src/buffer_canvas.rs:93:12
[INFO] [stdout]    |
[INFO] [stdout] 93 |     pub fn screen_y(&self, y_canvas: i32) -> usize {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `point_to_pixel`
[INFO] [stdout]    --> src/buffer_canvas.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 104 |     fn point_to_pixel(&self, x: i32, y: i32, color: Color) -> Pixel {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `draw_line`
[INFO] [stdout]    --> src/buffer_canvas.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 108 |     pub fn draw_line(&mut self, start: Point, end: Point, color: Color) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `rasterize_line`
[INFO] [stdout]    --> src/buffer_canvas.rs:121:8
[INFO] [stdout]     |
[INFO] [stdout] 121 |     fn rasterize_line(&mut self, start: Pixel, end: Pixel) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `transform`
[INFO] [stdout]   --> src/instance.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 |     pub fn transform(&self) -> Matrix44f {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `rotation_transform`
[INFO] [stdout]   --> src/instance.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub fn rotation_transform(&self) -> Matrix44f {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant is never constructed: `Near`
[INFO] [stdout]  --> src/plane.rs:4:22
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum PlaneType { Near, Left, Right, Top, Bottom }
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant is never constructed: `Left`
[INFO] [stdout]  --> src/plane.rs:4:28
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum PlaneType { Near, Left, Right, Top, Bottom }
[INFO] [stdout]   |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant is never constructed: `Right`
[INFO] [stdout]  --> src/plane.rs:4:34
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum PlaneType { Near, Left, Right, Top, Bottom }
[INFO] [stdout]   |                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant is never constructed: `Top`
[INFO] [stdout]  --> src/plane.rs:4:41
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum PlaneType { Near, Left, Right, Top, Bottom }
[INFO] [stdout]   |                                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant is never constructed: `Bottom`
[INFO] [stdout]  --> src/plane.rs:4:46
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum PlaneType { Near, Left, Right, Top, Bottom }
[INFO] [stdout]   |                                              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct is never constructed: `Plane`
[INFO] [stdout]  --> src/plane.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Plane {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `img`
[INFO] [stdout]  --> src/texture.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     img: DynamicImage,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `width`
[INFO] [stdout]  --> src/texture.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     width: u32,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `height`
[INFO] [stdout]  --> src/texture.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     height: u32
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `get_texel`
[INFO] [stdout]   --> src/texture.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub fn get_texel(&self, u: f64, v: f64) -> Color {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `x`
[INFO] [stdout]   --> src/main.rs:67:18
[INFO] [stdout]    |
[INFO] [stdout] 67 | struct Point2D { x: f64, y: f64 }
[INFO] [stdout]    |                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `y`
[INFO] [stdout]   --> src/main.rs:67:26
[INFO] [stdout]    |
[INFO] [stdout] 67 | struct Point2D { x: f64, y: f64 }
[INFO] [stdout]    |                          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `x`
[INFO] [stdout]   --> src/main.rs:70:16
[INFO] [stdout]    |
[INFO] [stdout] 70 | struct Point { x: i32, y: i32, h: f64, z: f64 }
[INFO] [stdout]    |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `y`
[INFO] [stdout]   --> src/main.rs:70:24
[INFO] [stdout]    |
[INFO] [stdout] 70 | struct Point { x: i32, y: i32, h: f64, z: f64 }
[INFO] [stdout]    |                        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `h`
[INFO] [stdout]   --> src/main.rs:70:32
[INFO] [stdout]    |
[INFO] [stdout] 70 | struct Point { x: i32, y: i32, h: f64, z: f64 }
[INFO] [stdout]    |                                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `z`
[INFO] [stdout]   --> src/main.rs:70:40
[INFO] [stdout]    |
[INFO] [stdout] 70 | struct Point { x: i32, y: i32, h: f64, z: f64 }
[INFO] [stdout]    |                                        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `x_min`
[INFO] [stdout]   --> src/main.rs:73:16
[INFO] [stdout]    |
[INFO] [stdout] 73 | struct Frame { x_min: f64, x_max: f64, y_min: f64, y_max: f64 }
[INFO] [stdout]    |                ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `x_max`
[INFO] [stdout]   --> src/main.rs:73:28
[INFO] [stdout]    |
[INFO] [stdout] 73 | struct Frame { x_min: f64, x_max: f64, y_min: f64, y_max: f64 }
[INFO] [stdout]    |                            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `y_min`
[INFO] [stdout]   --> src/main.rs:73:40
[INFO] [stdout]    |
[INFO] [stdout] 73 | struct Frame { x_min: f64, x_max: f64, y_min: f64, y_max: f64 }
[INFO] [stdout]    |                                        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `y_max`
[INFO] [stdout]   --> src/main.rs:73:52
[INFO] [stdout]    |
[INFO] [stdout] 73 | struct Frame { x_min: f64, x_max: f64, y_min: f64, y_max: f64 }
[INFO] [stdout]    |                                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `project`
[INFO] [stdout]    --> src/main.rs:181:4
[INFO] [stdout]     |
[INFO] [stdout] 181 | fn project(point3d: Vector3f) -> Point2D {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `normalize`
[INFO] [stdout]    --> src/main.rs:185:4
[INFO] [stdout]     |
[INFO] [stdout] 185 | fn normalize(point2d: Point2D, frame: Frame) -> Point2D {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `rasterize`
[INFO] [stdout]    --> src/main.rs:192:4
[INFO] [stdout]     |
[INFO] [stdout] 192 | fn rasterize(point: Point2D, size: usize) -> Pixel {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `simple_line`
[INFO] [stdout]    --> src/main.rs:270:4
[INFO] [stdout]     |
[INFO] [stdout] 270 | fn simple_line(start: Pixel, end: Pixel, buffer: &mut [u8], size: usize) {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `face_visible`
[INFO] [stdout]    --> src/main.rs:305:4
[INFO] [stdout]     |
[INFO] [stdout] 305 | fn face_visible(face: &Vec<i32>, vertices: &[Vector3f]) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `face_visible2`
[INFO] [stdout]    --> src/main.rs:316:4
[INFO] [stdout]     |
[INFO] [stdout] 316 | fn face_visible2(face: &Vec<i32>, vertices: &[Vector3f]) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `face_visible_4f`
[INFO] [stdout]    --> src/main.rs:327:4
[INFO] [stdout]     |
[INFO] [stdout] 327 | fn face_visible_4f(vertex: Vector3f, normal_direction: Vector3f) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `draw_face`
[INFO] [stdout]    --> src/main.rs:331:4
[INFO] [stdout]     |
[INFO] [stdout] 331 | fn draw_face(face: &Vec<i32>,
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `transform`
[INFO] [stdout]    --> src/main.rs:353:4
[INFO] [stdout]     |
[INFO] [stdout] 353 | fn transform(vertices: &Vec<Vector3f>, vector: Vector3f) -> Vec<Vector3f> {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `rotated_cube_vertices`
[INFO] [stdout]    --> src/main.rs:367:4
[INFO] [stdout]     |
[INFO] [stdout] 367 | fn rotated_cube_vertices(t: f64) -> [Vector3f; 8] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `rotated_cube`
[INFO] [stdout]    --> src/main.rs:421:4
[INFO] [stdout]     |
[INFO] [stdout] 421 | fn rotated_cube(t: f64) -> (Vec<Vector3f>, Vec<Vec<i32>>) {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `triangle`
[INFO] [stdout]    --> src/main.rs:438:4
[INFO] [stdout]     |
[INFO] [stdout] 438 | fn triangle<'a>(size: f64) -> Model<'a> {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `two_unit_cube`
[INFO] [stdout]    --> src/main.rs:645:4
[INFO] [stdout]     |
[INFO] [stdout] 645 | fn two_unit_cube<'a>() -> Model<'a> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `enclosing_frame`
[INFO] [stdout]    --> src/main.rs:649:4
[INFO] [stdout]     |
[INFO] [stdout] 649 | fn enclosing_frame(vertices: &Vec<Vector3f>) -> Frame {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `find_z_transform`
[INFO] [stdout]    --> src/main.rs:700:4
[INFO] [stdout]     |
[INFO] [stdout] 700 | fn find_z_transform(vertices: &Vec<Vector3f>) -> f64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `render_model_to_buffer`
[INFO] [stdout]    --> src/main.rs:718:4
[INFO] [stdout]     |
[INFO] [stdout] 718 | fn render_model_to_buffer(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `show_buffer_in_window`
[INFO] [stdout]    --> src/main.rs:766:4
[INFO] [stdout]     |
[INFO] [stdout] 766 | fn show_buffer_in_window(buffer: &mut [u8], size: usize) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `rotating_cube_window`
[INFO] [stdout]    --> src/main.rs:820:4
[INFO] [stdout]     |
[INFO] [stdout] 820 | fn rotating_cube_window(buffer: &mut [u8], size: usize) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `three_spheres_window`
[INFO] [stdout]    --> src/main.rs:930:4
[INFO] [stdout]     |
[INFO] [stdout] 930 | fn three_spheres_window(buffer: &mut [u8], size: usize) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `render_video`
[INFO] [stdout]     --> src/main.rs:1076:4
[INFO] [stdout]      |
[INFO] [stdout] 1076 | fn render_video() {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `draw_wireframe_triangle`
[INFO] [stdout]     --> src/main.rs:1088:4
[INFO] [stdout]      |
[INFO] [stdout] 1088 | fn draw_wireframe_triangle(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `render_scene`
[INFO] [stdout]   --> src/rendering.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn render_scene(
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `render_instance`
[INFO] [stdout]   --> src/rendering.rs:50:4
[INFO] [stdout]    |
[INFO] [stdout] 50 | fn render_instance(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `face_normal_direction_in_right`
[INFO] [stdout]    --> src/rendering.rs:155:4
[INFO] [stdout]     |
[INFO] [stdout] 155 | fn face_normal_direction_in_right(face: &Vec<i32>, vertices: &[Vector4f]) -> Vector3f {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `face_normal_direction_in_left`
[INFO] [stdout]    --> src/rendering.rs:167:4
[INFO] [stdout]     |
[INFO] [stdout] 167 | fn face_normal_direction_in_left(triangle: &Triangle, vertices: &[Vector4f]) -> Vector3f {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `clip_triangles`
[INFO] [stdout]    --> src/rendering.rs:179:4
[INFO] [stdout]     |
[INFO] [stdout] 179 | fn clip_triangles(triangles: Vec<Triangle4f>, clipping_planes: &Vec<Plane>) -> Vec<Triangle4f> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `clip_triangles_against_plane`
[INFO] [stdout]    --> src/rendering.rs:193:4
[INFO] [stdout]     |
[INFO] [stdout] 193 | fn clip_triangles_against_plane(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `clip_triangle_against_plane`
[INFO] [stdout]    --> src/rendering.rs:208:4
[INFO] [stdout]     |
[INFO] [stdout] 208 | fn clip_triangle_against_plane(triangle: Triangle4f, clipping_plane: &Plane) -> Vec<Triangle4f> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `find_split_vertex`
[INFO] [stdout]    --> src/rendering.rs:288:4
[INFO] [stdout]     |
[INFO] [stdout] 288 | fn find_split_vertex(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `is_vertex_outside`
[INFO] [stdout]    --> src/rendering.rs:312:4
[INFO] [stdout]     |
[INFO] [stdout] 312 | fn is_vertex_outside(plane: &Plane, vertex: Vector4f) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `is_vertex_inside`
[INFO] [stdout]    --> src/rendering.rs:318:4
[INFO] [stdout]     |
[INFO] [stdout] 318 | fn is_vertex_inside(plane: &Plane, vertex: Vector4f) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `convert_face_to_triangles`
[INFO] [stdout]    --> src/rendering.rs:322:4
[INFO] [stdout]     |
[INFO] [stdout] 322 | fn convert_face_to_triangles(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `render_filled_triangle`
[INFO] [stdout]    --> src/rendering.rs:345:4
[INFO] [stdout]     |
[INFO] [stdout] 345 | fn render_filled_triangle(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `draw_normal_to_vertex`
[INFO] [stdout]    --> src/rendering.rs:385:4
[INFO] [stdout]     |
[INFO] [stdout] 385 | fn draw_normal_to_vertex(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `is_point_in_canvas`
[INFO] [stdout]    --> src/rendering.rs:404:4
[INFO] [stdout]     |
[INFO] [stdout] 404 | fn is_point_in_canvas(point: Point, canvas: &BufferCanvas) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `compute_illumination`
[INFO] [stdout]    --> src/rendering.rs:414:4
[INFO] [stdout]     |
[INFO] [stdout] 414 | fn compute_illumination(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `light_from_direction`
[INFO] [stdout]    --> src/rendering.rs:438:4
[INFO] [stdout]     |
[INFO] [stdout] 438 | fn light_from_direction(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `render_wireframe_triangle`
[INFO] [stdout]    --> src/rendering.rs:475:4
[INFO] [stdout]     |
[INFO] [stdout] 475 | fn render_wireframe_triangle(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `flat_shaded_triangle`
[INFO] [stdout]    --> src/rendering.rs:489:4
[INFO] [stdout]     |
[INFO] [stdout] 489 | fn flat_shaded_triangle(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `gouraud_shaded_triangle`
[INFO] [stdout]    --> src/rendering.rs:605:4
[INFO] [stdout]     |
[INFO] [stdout] 605 | fn gouraud_shaded_triangle(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `phong_shaded_triangle`
[INFO] [stdout]    --> src/rendering.rs:762:4
[INFO] [stdout]     |
[INFO] [stdout] 762 | fn phong_shaded_triangle(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `textured_phong_shaded_triangle`
[INFO] [stdout]    --> src/rendering.rs:956:4
[INFO] [stdout]     |
[INFO] [stdout] 956 | fn textured_phong_shaded_triangle(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `unproject_vertex`
[INFO] [stdout]     --> src/rendering.rs:1206:4
[INFO] [stdout]      |
[INFO] [stdout] 1206 | fn unproject_vertex(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `vertex_to_canvas_point`
[INFO] [stdout]     --> src/rendering.rs:1224:4
[INFO] [stdout]      |
[INFO] [stdout] 1224 | fn vertex_to_canvas_point(vertex: Vector4f, camera: &ProjectiveCamera, canvas: &BufferCanvas)
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `interpolate_int`
[INFO] [stdout]     --> src/rendering.rs:1239:4
[INFO] [stdout]      |
[INFO] [stdout] 1239 | fn interpolate_int(i0: i32, d0: i32, i1: i32, d1: i32) -> Vec<i32> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `interpolate_float`
[INFO] [stdout]     --> src/rendering.rs:1255:4
[INFO] [stdout]      |
[INFO] [stdout] 1255 | fn interpolate_float(i0: i32, d0: f64, i1: i32, d1: f64) -> Vec<f64> {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `multiply_color`
[INFO] [stdout]     --> src/rendering.rs:1271:8
[INFO] [stdout]      |
[INFO] [stdout] 1271 | pub fn multiply_color(k: f64, color: Color) -> Color {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `multiply_channel`
[INFO] [stdout]     --> src/rendering.rs:1279:4
[INFO] [stdout]      |
[INFO] [stdout] 1279 | fn multiply_channel(k: f64, channel: u8) -> u8 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]   --> src/starfield.rs:46:17
[INFO] [stdout]    |
[INFO] [stdout] 46 |             if (screen_x < 0 || screen_x >= canvas.size) || (screen_y < 0 || screen_y >= canvas.size) {
[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/starfield.rs:46:62
[INFO] [stdout]    |
[INFO] [stdout] 46 |             if (screen_x < 0 || screen_x >= canvas.size) || (screen_y < 0 || screen_y >= canvas.size) {
[INFO] [stdout]    |                                                              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 203 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished dev [unoptimized + debuginfo] target(s) in 1m 00s
[INFO] running `Command { std: "docker" "inspect" "adb517eb47c8fb0a8e7a0606764cc8dfda40270e693e7f51ebc4383a103acc8f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "adb517eb47c8fb0a8e7a0606764cc8dfda40270e693e7f51ebc4383a103acc8f", kill_on_drop: false }`
[INFO] [stdout] adb517eb47c8fb0a8e7a0606764cc8dfda40270e693e7f51ebc4383a103acc8f
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-9/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-9/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" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "rustops/crates-build-env@sha256:d92eaeed33fa75130ca1ee6c8a01d1ffb62bac859dfdfb3450e3e5d1c0146529" "/opt/rustwide/cargo-home/bin/cargo" "+1.47.0" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 856b03eb545bef3987f45e0a61d71f578f730050a544f8775582784eb3ca2fb8
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] running `Command { std: "docker" "start" "-a" "856b03eb545bef3987f45e0a61d71f578f730050a544f8775582784eb3ca2fb8", kill_on_drop: false }`
[INFO] [stderr]    Compiling durer v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `thread`, `time`
[INFO] [stdout]  --> src/main.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{thread, time};
[INFO] [stdout]   |           ^^^^^^  ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::prelude::*`
[INFO] [stdout]  --> src/main.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::io::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::str::FromStr`
[INFO] [stdout]  --> src/main.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::str::FromStr;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/main.rs:6:17
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]   --> src/main.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use rand::Rng;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::rect::Rect`
[INFO] [stdout]   --> src/main.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use sdl2::rect::Rect;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `plane::Plane`
[INFO] [stdout]   --> src/main.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use plane::Plane;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/ray_tracing.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::plane::PlaneType`
[INFO] [stdout]  --> src/projective_camera.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use crate::plane::PlaneType;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::Point2D`
[INFO] [stdout]  --> src/buffer_canvas.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::Point2D;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::Vector3f`
[INFO] [stdout]  --> src/buffer_canvas.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::Vector3f;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/buffer_canvas.rs:84:22
[INFO] [stdout]    |
[INFO] [stdout] 84 |         let result = (canvas_width / 2 + x_canvas);
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]   --> src/buffer_canvas.rs:95:22
[INFO] [stdout]    |
[INFO] [stdout] 95 |         let result = (canvas_height / 2 - y_canvas - 1);
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/ply2.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::triangle`
[INFO] [stdout]  --> src/ply2.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::triangle;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::video::WindowPos::Positioned`
[INFO] [stdout]  --> src/rendering.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use sdl2::video::WindowPos::Positioned;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `face_visible`
[INFO] [stdout]  --> src/rendering.rs:4:13
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::{face_visible, Triangle, Triangle4f};
[INFO] [stdout]   |             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `transform`
[INFO] [stdout]  --> src/rendering.rs:6:30
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::{face_visible_4f, transform};
[INFO] [stdout]   |                              ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::Point2D`
[INFO] [stdout]   --> src/rendering.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::Point2D;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]   --> src/ply2.rs:88:13
[INFO] [stdout]    |
[INFO] [stdout] 88 |             _ => ()
[INFO] [stdout]    |             ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/main.rs:226:13
[INFO] [stdout]     |
[INFO] [stdout] 226 |         for i in 1..dx {
[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: unused variable: `i`
[INFO] [stdout]    --> src/main.rs:251:13
[INFO] [stdout]     |
[INFO] [stdout] 251 |         for i in 1..dy {
[INFO] [stdout]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rng`
[INFO] [stdout]    --> src/main.rs:451:9
[INFO] [stdout]     |
[INFO] [stdout] 451 |     let mut rng = rand::thread_rng();
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rng`
[INFO] [stdout]    --> src/main.rs:491:9
[INFO] [stdout]     |
[INFO] [stdout] 491 |     let mut rng = rand::thread_rng();
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `size`
[INFO] [stdout]    --> src/main.rs:713:9
[INFO] [stdout]     |
[INFO] [stdout] 713 |     let size = (z_max - z_min).abs();
[INFO] [stdout]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rendering_settings`
[INFO] [stdout]     --> src/main.rs:1150:9
[INFO] [stdout]      |
[INFO] [stdout] 1150 |     let mut rendering_settings = RenderingSettings {
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rendering_settings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `red`
[INFO] [stdout]     --> src/main.rs:1188:9
[INFO] [stdout]      |
[INFO] [stdout] 1188 |     let red = Color { r: 255, g: 0, b: 0 };
[INFO] [stdout]      |         ^^^ help: if this is intentional, prefix it with an underscore: `_red`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `green`
[INFO] [stdout]     --> src/main.rs:1189:9
[INFO] [stdout]      |
[INFO] [stdout] 1189 |     let green = Color { r: 0, g: 255, b: 0 };
[INFO] [stdout]      |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_green`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `blue`
[INFO] [stdout]     --> src/main.rs:1190:9
[INFO] [stdout]      |
[INFO] [stdout] 1190 |     let blue = Color { r: 0, g: 0, b: 255 };
[INFO] [stdout]      |         ^^^^ help: if this is intentional, prefix it with an underscore: `_blue`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `white`
[INFO] [stdout]     --> src/main.rs:1191:9
[INFO] [stdout]      |
[INFO] [stdout] 1191 |     let white = Color { r: 255, g: 255, b: 255 };
[INFO] [stdout]      |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_white`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sphere`
[INFO] [stdout]     --> src/main.rs:1197:9
[INFO] [stdout]      |
[INFO] [stdout] 1197 |     let sphere = sphere(35);
[INFO] [stdout]      |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_sphere`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cube`
[INFO] [stdout]     --> src/main.rs:1198:9
[INFO] [stdout]      |
[INFO] [stdout] 1198 |     let cube = cube(0.9);
[INFO] [stdout]      |         ^^^^ help: if this is intentional, prefix it with an underscore: `_cube`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `torus`
[INFO] [stdout]     --> src/main.rs:1202:9
[INFO] [stdout]      |
[INFO] [stdout] 1202 |     let torus = ply2::load_model("resources/torus.ply2");
[INFO] [stdout]      |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_torus`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_instance_index`
[INFO] [stdout]     --> src/main.rs:1207:9
[INFO] [stdout]      |
[INFO] [stdout] 1207 |     let mut current_instance_index: Option<usize> = None;
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_instance_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lights`
[INFO] [stdout]     --> src/main.rs:1283:9
[INFO] [stdout]      |
[INFO] [stdout] 1283 |     let lights = vec![
[INFO] [stdout]      |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_lights`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `camera`
[INFO] [stdout]     --> src/main.rs:1358:13
[INFO] [stdout]      |
[INFO] [stdout] 1358 |         let camera = ProjectiveCamera {
[INFO] [stdout]      |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_camera`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rng`
[INFO] [stdout]    --> src/ray_tracing.rs:208:9
[INFO] [stdout]     |
[INFO] [stdout] 208 |     let mut rng = rand::thread_rng();
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/buffer_canvas.rs:149:17
[INFO] [stdout]     |
[INFO] [stdout] 149 |             for i in 1..dx {
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> src/buffer_canvas.rs:170:17
[INFO] [stdout]     |
[INFO] [stdout] 170 |             for i in 1..dy {
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rng`
[INFO] [stdout]   --> src/ply2.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 34 |     let mut rng = rand::thread_rng();
[INFO] [stdout]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/starfield.rs:21:13
[INFO] [stdout]    |
[INFO] [stdout] 21 |         for i in 0..num_stars {
[INFO] [stdout]    |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `camera`
[INFO] [stdout]    --> src/rendering.rs:417:5
[INFO] [stdout]     |
[INFO] [stdout] 417 |     camera: &ProjectiveCamera,
[INFO] [stdout]     |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_camera`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `h_segment`
[INFO] [stdout]    --> src/rendering.rs:589:13
[INFO] [stdout]     |
[INFO] [stdout] 589 |         let h_segment = interpolate_float(x_l, h_left[y_index], x_r, h_right[y_index]);
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_h_segment`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `h_segment`
[INFO] [stdout]    --> src/rendering.rs:746:13
[INFO] [stdout]     |
[INFO] [stdout] 746 |         let h_segment = interpolate_float(x_l, h_left[y_index], x_r, h_right[y_index]);
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_h_segment`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `v0` is never read
[INFO] [stdout]    --> src/rendering.rs:800:9
[INFO] [stdout]     |
[INFO] [stdout] 800 |         v0 = v2;
[INFO] [stdout]     |         ^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `v1` is never read
[INFO] [stdout]    --> src/rendering.rs:813:9
[INFO] [stdout]     |
[INFO] [stdout] 813 |         v1 = v2;
[INFO] [stdout]     |         ^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `v2` is never read
[INFO] [stdout]    --> src/rendering.rs:814:9
[INFO] [stdout]     |
[INFO] [stdout] 814 |         v2 = swap;
[INFO] [stdout]     |         ^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `h_segment`
[INFO] [stdout]    --> src/rendering.rs:927:13
[INFO] [stdout]     |
[INFO] [stdout] 927 |         let h_segment = interpolate_float(x_l, h_left[y_index], x_r, h_right[y_index]);
[INFO] [stdout]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_h_segment`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `v0` is never read
[INFO] [stdout]     --> src/rendering.rs:1004:9
[INFO] [stdout]      |
[INFO] [stdout] 1004 |         v0 = v2;
[INFO] [stdout]      |         ^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `v1` is never read
[INFO] [stdout]     --> src/rendering.rs:1021:9
[INFO] [stdout]      |
[INFO] [stdout] 1021 |         v1 = v2;
[INFO] [stdout]      |         ^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `v2` is never read
[INFO] [stdout]     --> src/rendering.rs:1022:9
[INFO] [stdout]      |
[INFO] [stdout] 1022 |         v2 = swap;
[INFO] [stdout]      |         ^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `h_segment`
[INFO] [stdout]     --> src/rendering.rs:1171:13
[INFO] [stdout]      |
[INFO] [stdout] 1171 |         let h_segment = interpolate_float(x_l, h_left[y_index], x_r, h_right[y_index]);
[INFO] [stdout]      |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_h_segment`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]     --> src/rendering.rs:1247:9
[INFO] [stdout]      |
[INFO] [stdout] 1247 |     for i in i0..(i1 + 1) {
[INFO] [stdout]      |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]     --> src/rendering.rs:1263:9
[INFO] [stdout]      |
[INFO] [stdout] 1263 |     for i in i0..(i1 + 1) {
[INFO] [stdout]      |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:451:9
[INFO] [stdout]     |
[INFO] [stdout] 451 |     let mut rng = rand::thread_rng();
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/main.rs:491:9
[INFO] [stdout]     |
[INFO] [stdout] 491 |     let mut rng = rand::thread_rng();
[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/main.rs:1150:9
[INFO] [stdout]      |
[INFO] [stdout] 1150 |     let mut rendering_settings = RenderingSettings {
[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/main.rs:1207:9
[INFO] [stdout]      |
[INFO] [stdout] 1207 |     let mut current_instance_index: Option<usize> = None;
[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/ray_tracing.rs:208:9
[INFO] [stdout]     |
[INFO] [stdout] 208 |     let mut rng = rand::thread_rng();
[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/ply2.rs:34:9
[INFO] [stdout]    |
[INFO] [stdout] 34 |     let mut rng = rand::thread_rng();
[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/rendering.rs:537:9
[INFO] [stdout]     |
[INFO] [stdout] 537 |     let mut x02 = interpolate_int(p0.y, p0.x, p2.y, p2.x);
[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/rendering.rs:538:9
[INFO] [stdout]     |
[INFO] [stdout] 538 |     let mut h02 = interpolate_float(p0.y, p0.h, p2.y, p2.h);
[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/rendering.rs:539:9
[INFO] [stdout]     |
[INFO] [stdout] 539 |     let mut iz02 = interpolate_float(p0.y, 1.0 / p0.z, p2.y, 1.0 / p2.z);
[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/rendering.rs:556:9
[INFO] [stdout]     |
[INFO] [stdout] 556 |     let mut x_left;
[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/rendering.rs:557:9
[INFO] [stdout]     |
[INFO] [stdout] 557 |     let mut x_right;
[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/rendering.rs:558:9
[INFO] [stdout]     |
[INFO] [stdout] 558 |     let mut h_left;
[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/rendering.rs:559:9
[INFO] [stdout]     |
[INFO] [stdout] 559 |     let mut h_right;
[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/rendering.rs:560:9
[INFO] [stdout]     |
[INFO] [stdout] 560 |     let mut iz_left;
[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/rendering.rs:561:9
[INFO] [stdout]     |
[INFO] [stdout] 561 |     let mut iz_right;
[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/rendering.rs:679:9
[INFO] [stdout]     |
[INFO] [stdout] 679 |     let mut x02 = interpolate_int(p0.y, p0.x, p2.y, p2.x);
[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/rendering.rs:680:9
[INFO] [stdout]     |
[INFO] [stdout] 680 |     let mut h02 = interpolate_float(p0.y, p0.h, p2.y, p2.h);
[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/rendering.rs:681:9
[INFO] [stdout]     |
[INFO] [stdout] 681 |     let mut iz02 = interpolate_float(p0.y, 1.0 / p0.z, p2.y, 1.0 / p2.z);
[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/rendering.rs:682:9
[INFO] [stdout]     |
[INFO] [stdout] 682 |     let mut i02 = interpolate_float(p0.y, i0, p2.y, i2);
[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/rendering.rs:705:9
[INFO] [stdout]     |
[INFO] [stdout] 705 |     let mut x_left;
[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/rendering.rs:706:9
[INFO] [stdout]     |
[INFO] [stdout] 706 |     let mut x_right;
[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/rendering.rs:707:9
[INFO] [stdout]     |
[INFO] [stdout] 707 |     let mut h_left;
[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/rendering.rs:708:9
[INFO] [stdout]     |
[INFO] [stdout] 708 |     let mut h_right;
[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/rendering.rs:709:9
[INFO] [stdout]     |
[INFO] [stdout] 709 |     let mut iz_left;
[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/rendering.rs:710:9
[INFO] [stdout]     |
[INFO] [stdout] 710 |     let mut iz_right;
[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/rendering.rs:711:9
[INFO] [stdout]     |
[INFO] [stdout] 711 |     let mut i_left;
[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/rendering.rs:712:9
[INFO] [stdout]     |
[INFO] [stdout] 712 |     let mut i_right;
[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/rendering.rs:836:9
[INFO] [stdout]     |
[INFO] [stdout] 836 |     let mut x02 = interpolate_int(p0.y, p0.x, p2.y, p2.x);
[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/rendering.rs:837:9
[INFO] [stdout]     |
[INFO] [stdout] 837 |     let mut h02 = interpolate_float(p0.y, p0.h, p2.y, p2.h);
[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/rendering.rs:838:9
[INFO] [stdout]     |
[INFO] [stdout] 838 |     let mut iz02 = interpolate_float(p0.y, 1.0 / p0.z, p2.y, 1.0 / p2.z);
[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/rendering.rs:839:9
[INFO] [stdout]     |
[INFO] [stdout] 839 |     let mut normal_x_02 = interpolate_float(p0.y, normal0.x, p2.y, normal2.x);
[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/rendering.rs:840:9
[INFO] [stdout]     |
[INFO] [stdout] 840 |     let mut normal_y_02 = interpolate_float(p0.y, normal0.y, p2.y, normal2.y);
[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/rendering.rs:841:9
[INFO] [stdout]     |
[INFO] [stdout] 841 |     let mut normal_z_02 = interpolate_float(p0.y, normal0.z, p2.y, normal2.z);
[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/rendering.rs:1052:9
[INFO] [stdout]      |
[INFO] [stdout] 1052 |     let mut x02 = interpolate_int(p0.y, p0.x, p2.y, p2.x);
[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/rendering.rs:1053:9
[INFO] [stdout]      |
[INFO] [stdout] 1053 |     let mut h02 = interpolate_float(p0.y, p0.h, p2.y, p2.h);
[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/rendering.rs:1054:9
[INFO] [stdout]      |
[INFO] [stdout] 1054 |     let mut iz02 = interpolate_float(p0.y, 1.0 / p0.z, p2.y, 1.0 / p2.z);
[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/rendering.rs:1055:9
[INFO] [stdout]      |
[INFO] [stdout] 1055 |     let mut uz02 = interpolate_float(p0.y, uv0.u / p0.z, p2.y, uv2.u / p2.z);
[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/rendering.rs:1056:9
[INFO] [stdout]      |
[INFO] [stdout] 1056 |     let mut vz02 = interpolate_float(p0.y, uv0.v / p0.z, p2.y, uv2.v / p2.z);
[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/rendering.rs:1057:9
[INFO] [stdout]      |
[INFO] [stdout] 1057 |     let mut normal_x_02 = interpolate_float(p0.y, normal0.x, p2.y, normal2.x);
[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/rendering.rs:1058:9
[INFO] [stdout]      |
[INFO] [stdout] 1058 |     let mut normal_y_02 = interpolate_float(p0.y, normal0.y, p2.y, normal2.y);
[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/rendering.rs:1059:9
[INFO] [stdout]      |
[INFO] [stdout] 1059 |     let mut normal_z_02 = interpolate_float(p0.y, normal0.z, p2.y, normal2.z);
[INFO] [stdout]      |         ----^^^^^^^^^^^
[INFO] [stdout]      |         |
[INFO] [stdout]      |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: private type `Point2D` in public interface (error E0446)
[INFO] [stdout]   --> src/projective_camera.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn project(&self, point: Vector3f) -> Point2D {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(private_in_public)]` on by default
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #34537 <https://github.com/rust-lang/rust/issues/34537>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: private type `Point2D` in public interface (error E0446)
[INFO] [stdout]   --> src/projective_camera.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub fn project_vertex(&self, vertex: Vector4f) -> Point2D {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #34537 <https://github.com/rust-lang/rust/issues/34537>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: private type `Point` in public interface (error E0446)
[INFO] [stdout]   --> src/buffer_canvas.rs:46:5
[INFO] [stdout]    |
[INFO] [stdout] 46 |     pub fn viewport_to_canvas(&self, vertex: Vector4f, camera: &ProjectiveCamera) -> Point {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]    = note: for more information, see issue #34537 <https://github.com/rust-lang/rust/issues/34537>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: private type `Point` in public interface (error E0446)
[INFO] [stdout]    --> src/buffer_canvas.rs:108:5
[INFO] [stdout]     |
[INFO] [stdout] 108 |     pub fn draw_line(&mut self, start: Point, end: Point, color: Color) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stdout]     = note: for more information, see issue #34537 <https://github.com/rust-lang/rust/issues/34537>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `render_scene_to_buffer`
[INFO] [stdout]   --> src/ray_tracing.rs:24:8
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub fn render_scene_to_buffer(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `compute_lighting`
[INFO] [stdout]   --> src/ray_tracing.rs:81:4
[INFO] [stdout]    |
[INFO] [stdout] 81 | fn compute_lighting(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `compute_light_from_direction`
[INFO] [stdout]    --> src/ray_tracing.rs:122:4
[INFO] [stdout]     |
[INFO] [stdout] 122 | fn compute_light_from_direction(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `closest_intersection`
[INFO] [stdout]    --> src/ray_tracing.rs:174:4
[INFO] [stdout]     |
[INFO] [stdout] 174 | fn closest_intersection(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `trace_ray`
[INFO] [stdout]    --> src/ray_tracing.rs:199:4
[INFO] [stdout]     |
[INFO] [stdout] 199 | fn trace_ray(
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `add_colors`
[INFO] [stdout]    --> src/ray_tracing.rs:271:4
[INFO] [stdout]     |
[INFO] [stdout] 271 | fn add_colors(color1: Color, color2: Color) -> Color {
[INFO] [stdout]     |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `contains`
[INFO] [stdout]    --> src/ray_tracing.rs:279:4
[INFO] [stdout]     |
[INFO] [stdout] 279 | fn contains(range: (f64, f64), n: f64) -> bool {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `intersect_ray_with_sphere`
[INFO] [stdout]    --> src/ray_tracing.rs:284:4
[INFO] [stdout]     |
[INFO] [stdout] 284 | fn intersect_ray_with_sphere(origin: Vector3f, direction: Vector3f, sphere: Sphere) -> (f64, f64) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `dot_product`
[INFO] [stdout]  --> src/vectors.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn dot_product(v1: Vector3f, v2: Vector3f) -> f64 {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `sum`
[INFO] [stdout]   --> src/vectors.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn sum(v1: Vector3f, v2: Vector3f) -> Vector3f {
[INFO] [stdout]    |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `negate`
[INFO] [stdout]   --> src/vectors.rs:43:8
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub fn negate(vector: Vector3f) -> Vector3f {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `reflect`
[INFO] [stdout]   --> src/vectors.rs:47:8
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub fn reflect(v1: Vector3f, v2: Vector3f) -> Vector3f {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `scale`
[INFO] [stdout]   --> src/vectors.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub fn scale(scalar: f64, vector: Vector3f) -> Vector3f {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `rotation_around_y`
[INFO] [stdout]   --> src/vectors.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub fn rotation_around_y(d: f64) -> [[f64; 3]; 3] {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `project`
[INFO] [stdout]   --> src/projective_camera.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 19 |     pub fn project(&self, point: Vector3f) -> Point2D {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `project_vertex`
[INFO] [stdout]   --> src/projective_camera.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub fn project_vertex(&self, vertex: Vector4f) -> Point2D {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `camera_transform`
[INFO] [stdout]   --> src/projective_camera.rs:33:12
[INFO] [stdout]    |
[INFO] [stdout] 33 |     pub fn camera_transform(&self) -> Matrix44f {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `clipping_planes`
[INFO] [stdout]   --> src/projective_camera.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 |     pub fn clipping_planes(&self) -> Vec<Plane> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `right_plane_normal`
[INFO] [stdout]   --> src/projective_camera.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 70 |     fn right_plane_normal(&self, half_viewport_size: f64) -> Vector3f {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `top_plane_normal`
[INFO] [stdout]   --> src/projective_camera.rs:85:8
[INFO] [stdout]    |
[INFO] [stdout] 85 |     fn top_plane_normal(&self, half_viewport_size: f64) -> Vector3f {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `left_plane_normal`
[INFO] [stdout]    --> src/projective_camera.rs:100:8
[INFO] [stdout]     |
[INFO] [stdout] 100 |     fn left_plane_normal(&self, half_viewport_size: f64) -> Vector3f {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `bottom_plane_normal`
[INFO] [stdout]    --> src/projective_camera.rs:115:8
[INFO] [stdout]     |
[INFO] [stdout] 115 |     fn bottom_plane_normal(&self, half_viewport_size: f64) -> Vector3f {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `viewport_to_canvas`
[INFO] [stdout]   --> src/buffer_canvas.rs:46:12
[INFO] [stdout]    |
[INFO] [stdout] 46 |     pub fn viewport_to_canvas(&self, vertex: Vector4f, camera: &ProjectiveCamera) -> Point {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `update_depth_buffer_if_closer`
[INFO] [stdout]   --> src/buffer_canvas.rs:71:12
[INFO] [stdout]    |
[INFO] [stdout] 71 |     pub fn update_depth_buffer_if_closer(&mut self, screen_x: usize, screen_y: usize, iz: f64) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `screen_x`
[INFO] [stdout]   --> src/buffer_canvas.rs:82:12
[INFO] [stdout]    |
[INFO] [stdout] 82 |     pub fn screen_x(&self, x_canvas: i32) -> usize {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `screen_y`
[INFO] [stdout]   --> src/buffer_canvas.rs:93:12
[INFO] [stdout]    |
[INFO] [stdout] 93 |     pub fn screen_y(&self, y_canvas: i32) -> usize {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `point_to_pixel`
[INFO] [stdout]    --> src/buffer_canvas.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 104 |     fn point_to_pixel(&self, x: i32, y: i32, color: Color) -> Pixel {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `draw_line`
[INFO] [stdout]    --> src/buffer_canvas.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 108 |     pub fn draw_line(&mut self, start: Point, end: Point, color: Color) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `rasterize_line`
[INFO] [stdout]    --> src/buffer_canvas.rs:121:8
[INFO] [stdout]     |
[INFO] [stdout] 121 |     fn rasterize_line(&mut self, start: Pixel, end: Pixel) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `transform`
[INFO] [stdout]   --> src/instance.rs:30:12
[INFO] [stdout]    |
[INFO] [stdout] 30 |     pub fn transform(&self) -> Matrix44f {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `rotation_transform`
[INFO] [stdout]   --> src/instance.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub fn rotation_transform(&self) -> Matrix44f {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant is never constructed: `Near`
[INFO] [stdout]  --> src/plane.rs:4:22
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum PlaneType { Near, Left, Right, Top, Bottom }
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant is never constructed: `Left`
[INFO] [stdout]  --> src/plane.rs:4:28
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum PlaneType { Near, Left, Right, Top, Bottom }
[INFO] [stdout]   |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant is never constructed: `Right`
[INFO] [stdout]  --> src/plane.rs:4:34
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum PlaneType { Near, Left, Right, Top, Bottom }
[INFO] [stdout]   |                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant is never constructed: `Top`
[INFO] [stdout]  --> src/plane.rs:4:41
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum PlaneType { Near, Left, Right, Top, Bottom }
[INFO] [stdout]   |                                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant is never constructed: `Bottom`
[INFO] [stdout]  --> src/plane.rs:4:46
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub enum PlaneType { Near, Left, Right, Top, Bottom }
[INFO] [stdout]   |                                              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct is never constructed: `Plane`
[INFO] [stdout]  --> src/plane.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Plane {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `img`
[INFO] [stdout]  --> src/texture.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     img: DynamicImage,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `width`
[INFO] [stdout]  --> src/texture.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 |     width: u32,
[INFO] [stdout]   |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `height`
[INFO] [stdout]  --> src/texture.rs:9:5
[INFO] [stdout]   |
[INFO] [stdout] 9 |     height: u32
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function is never used: `get_texel`
[INFO] [stdout]   --> src/texture.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 |     pub fn get_texel(&self, u: f64, v: f64) -> Color {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `x`
[INFO] [stdout]   --> src/main.rs:67:18
[INFO] [stdout]    |
[INFO] [stdout] 67 | struct Point2D { x: f64, y: f64 }
[INFO] [stdout]    |                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `y`
[INFO] [stdout]   --> src/main.rs:67:26
[INFO] [stdout]    |
[INFO] [stdout] 67 | struct Point2D { x: f64, y: f64 }
[INFO] [stdout]    |                          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `x`
[INFO] [stdout]   --> src/main.rs:70:16
[INFO] [stdout]    |
[INFO] [stdout] 70 | struct Point { x: i32, y: i32, h: f64, z: f64 }
[INFO] [stdout]    |                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `y`
[INFO] [stdout]   --> src/main.rs:70:24
[INFO] [stdout]    |
[INFO] [stdout] 70 | struct Point { x: i32, y: i32, h: f64, z: f64 }
[INFO] [stdout]    |                        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `h`
[INFO] [stdout]   --> src/main.rs:70:32
[INFO] [stdout]    |
[INFO] [stdout] 70 | struct Point { x: i32, y: i32, h: f64, z: f64 }
[INFO] [stdout]    |                                ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `z`
[INFO] [stdout]   --> src/main.rs:70:40
[INFO] [stdout]    |
[INFO] [stdout] 70 | struct Point { x: i32, y: i32, h: f64, z: f64 }
[INFO] [stdout]    |                                        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `x_min`
[INFO] [stdout]   --> src/main.rs:73:16
[INFO] [stdout]    |
[INFO] [stdout] 73 | struct Frame { x_min: f64, x_max: f64, y_min: f64, y_max: f64 }
[INFO] [stdout]    |                ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `x_max`
[INFO] [stdout]   --> src/main.rs:73:28
[INFO] [stdout]    |
[INFO] [stdout] 73 | struct Frame { x_min: f64, x_max: f64, y_min: f64, y_max: f64 }
[INFO] [stdout]    |                            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `y_min`
[INFO] [stdout]   --> src/main.rs:73:40
[INFO] [stdout]    |
[INFO] [stdout] 73 | struct Frame { x_min: f64, x_max: f64, y_min: f64, y_max: f64 }
[INFO] [stdout]    |                                        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field is never read: `y_max`
[INFO] [stdout]   --> src/main.rs:73:52
[INFO] [stdout]    |
[INFO] [stdout] 73 | struct Frame { x_min: f64, x_max: f64, y_min: f64, y_max: f64 }
[INFO] [stdout]    |                                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `project`
[INFO] [stdout]    --> src/main.rs:181:4
[INFO] [stdout]     |
[INFO] [stdout] 181 | fn project(point3d: Vector3f) -> Point2D {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `normalize`
[INFO] [stdout]    --> src/main.rs:185:4
[INFO] [stdout]     |
[INFO] [stdout] 185 | fn normalize(point2d: Point2D, frame: Frame) -> Point2D {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `rasterize`
[INFO] [stdout]    --> src/main.rs:192:4
[INFO] [stdout]     |
[INFO] [stdout] 192 | fn rasterize(point: Point2D, size: usize) -> Pixel {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `simple_line`
[INFO] [stdout]    --> src/main.rs:270:4
[INFO] [stdout]     |
[INFO] [stdout] 270 | fn simple_line(start: Pixel, end: Pixel, buffer: &mut [u8], size: usize) {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `face_visible`
[INFO] [stdout]    --> src/main.rs:305:4
[INFO] [stdout]     |
[INFO] [stdout] 305 | fn face_visible(face: &Vec<i32>, vertices: &[Vector3f]) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `face_visible2`
[INFO] [stdout]    --> src/main.rs:316:4
[INFO] [stdout]     |
[INFO] [stdout] 316 | fn face_visible2(face: &Vec<i32>, vertices: &[Vector3f]) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `face_visible_4f`
[INFO] [stdout]    --> src/main.rs:327:4
[INFO] [stdout]     |
[INFO] [stdout] 327 | fn face_visible_4f(vertex: Vector3f, normal_direction: Vector3f) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `draw_face`
[INFO] [stdout]    --> src/main.rs:331:4
[INFO] [stdout]     |
[INFO] [stdout] 331 | fn draw_face(face: &Vec<i32>,
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `transform`
[INFO] [stdout]    --> src/main.rs:353:4
[INFO] [stdout]     |
[INFO] [stdout] 353 | fn transform(vertices: &Vec<Vector3f>, vector: Vector3f) -> Vec<Vector3f> {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `rotated_cube_vertices`
[INFO] [stdout]    --> src/main.rs:367:4
[INFO] [stdout]     |
[INFO] [stdout] 367 | fn rotated_cube_vertices(t: f64) -> [Vector3f; 8] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `rotated_cube`
[INFO] [stdout]    --> src/main.rs:421:4
[INFO] [stdout]     |
[INFO] [stdout] 421 | fn rotated_cube(t: f64) -> (Vec<Vector3f>, Vec<Vec<i32>>) {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `triangle`
[INFO] [stdout]    --> src/main.rs:438:4
[INFO] [stdout]     |
[INFO] [stdout] 438 | fn triangle<'a>(size: f64) -> Model<'a> {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `two_unit_cube`
[INFO] [stdout]    --> src/main.rs:645:4
[INFO] [stdout]     |
[INFO] [stdout] 645 | fn two_unit_cube<'a>() -> Model<'a> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `enclosing_frame`
[INFO] [stdout]    --> src/main.rs:649:4
[INFO] [stdout]     |
[INFO] [stdout] 649 | fn enclosing_frame(vertices: &Vec<Vector3f>) -> Frame {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `find_z_transform`
[INFO] [stdout]    --> src/main.rs:700:4
[INFO] [stdout]     |
[INFO] [stdout] 700 | fn find_z_transform(vertices: &Vec<Vector3f>) -> f64 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `render_model_to_buffer`
[INFO] [stdout]    --> src/main.rs:718:4
[INFO] [stdout]     |
[INFO] [stdout] 718 | fn render_model_to_buffer(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `show_buffer_in_window`
[INFO] [stdout]    --> src/main.rs:766:4
[INFO] [stdout]     |
[INFO] [stdout] 766 | fn show_buffer_in_window(buffer: &mut [u8], size: usize) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `rotating_cube_window`
[INFO] [stdout]    --> src/main.rs:820:4
[INFO] [stdout]     |
[INFO] [stdout] 820 | fn rotating_cube_window(buffer: &mut [u8], size: usize) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `three_spheres_window`
[INFO] [stdout]    --> src/main.rs:930:4
[INFO] [stdout]     |
[INFO] [stdout] 930 | fn three_spheres_window(buffer: &mut [u8], size: usize) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `render_video`
[INFO] [stdout]     --> src/main.rs:1076:4
[INFO] [stdout]      |
[INFO] [stdout] 1076 | fn render_video() {
[INFO] [stdout]      |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `draw_wireframe_triangle`
[INFO] [stdout]     --> src/main.rs:1088:4
[INFO] [stdout]      |
[INFO] [stdout] 1088 | fn draw_wireframe_triangle(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `render_scene`
[INFO] [stdout]   --> src/rendering.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub fn render_scene(
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `render_instance`
[INFO] [stdout]   --> src/rendering.rs:50:4
[INFO] [stdout]    |
[INFO] [stdout] 50 | fn render_instance(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `face_normal_direction_in_right`
[INFO] [stdout]    --> src/rendering.rs:155:4
[INFO] [stdout]     |
[INFO] [stdout] 155 | fn face_normal_direction_in_right(face: &Vec<i32>, vertices: &[Vector4f]) -> Vector3f {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `face_normal_direction_in_left`
[INFO] [stdout]    --> src/rendering.rs:167:4
[INFO] [stdout]     |
[INFO] [stdout] 167 | fn face_normal_direction_in_left(triangle: &Triangle, vertices: &[Vector4f]) -> Vector3f {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `clip_triangles`
[INFO] [stdout]    --> src/rendering.rs:179:4
[INFO] [stdout]     |
[INFO] [stdout] 179 | fn clip_triangles(triangles: Vec<Triangle4f>, clipping_planes: &Vec<Plane>) -> Vec<Triangle4f> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `clip_triangles_against_plane`
[INFO] [stdout]    --> src/rendering.rs:193:4
[INFO] [stdout]     |
[INFO] [stdout] 193 | fn clip_triangles_against_plane(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `clip_triangle_against_plane`
[INFO] [stdout]    --> src/rendering.rs:208:4
[INFO] [stdout]     |
[INFO] [stdout] 208 | fn clip_triangle_against_plane(triangle: Triangle4f, clipping_plane: &Plane) -> Vec<Triangle4f> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `find_split_vertex`
[INFO] [stdout]    --> src/rendering.rs:288:4
[INFO] [stdout]     |
[INFO] [stdout] 288 | fn find_split_vertex(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `is_vertex_outside`
[INFO] [stdout]    --> src/rendering.rs:312:4
[INFO] [stdout]     |
[INFO] [stdout] 312 | fn is_vertex_outside(plane: &Plane, vertex: Vector4f) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `is_vertex_inside`
[INFO] [stdout]    --> src/rendering.rs:318:4
[INFO] [stdout]     |
[INFO] [stdout] 318 | fn is_vertex_inside(plane: &Plane, vertex: Vector4f) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `convert_face_to_triangles`
[INFO] [stdout]    --> src/rendering.rs:322:4
[INFO] [stdout]     |
[INFO] [stdout] 322 | fn convert_face_to_triangles(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `render_filled_triangle`
[INFO] [stdout]    --> src/rendering.rs:345:4
[INFO] [stdout]     |
[INFO] [stdout] 345 | fn render_filled_triangle(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `draw_normal_to_vertex`
[INFO] [stdout]    --> src/rendering.rs:385:4
[INFO] [stdout]     |
[INFO] [stdout] 385 | fn draw_normal_to_vertex(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `is_point_in_canvas`
[INFO] [stdout]    --> src/rendering.rs:404:4
[INFO] [stdout]     |
[INFO] [stdout] 404 | fn is_point_in_canvas(point: Point, canvas: &BufferCanvas) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `compute_illumination`
[INFO] [stdout]    --> src/rendering.rs:414:4
[INFO] [stdout]     |
[INFO] [stdout] 414 | fn compute_illumination(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `light_from_direction`
[INFO] [stdout]    --> src/rendering.rs:438:4
[INFO] [stdout]     |
[INFO] [stdout] 438 | fn light_from_direction(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `render_wireframe_triangle`
[INFO] [stdout]    --> src/rendering.rs:475:4
[INFO] [stdout]     |
[INFO] [stdout] 475 | fn render_wireframe_triangle(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `flat_shaded_triangle`
[INFO] [stdout]    --> src/rendering.rs:489:4
[INFO] [stdout]     |
[INFO] [stdout] 489 | fn flat_shaded_triangle(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `gouraud_shaded_triangle`
[INFO] [stdout]    --> src/rendering.rs:605:4
[INFO] [stdout]     |
[INFO] [stdout] 605 | fn gouraud_shaded_triangle(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `phong_shaded_triangle`
[INFO] [stdout]    --> src/rendering.rs:762:4
[INFO] [stdout]     |
[INFO] [stdout] 762 | fn phong_shaded_triangle(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `textured_phong_shaded_triangle`
[INFO] [stdout]    --> src/rendering.rs:956:4
[INFO] [stdout]     |
[INFO] [stdout] 956 | fn textured_phong_shaded_triangle(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `unproject_vertex`
[INFO] [stdout]     --> src/rendering.rs:1206:4
[INFO] [stdout]      |
[INFO] [stdout] 1206 | fn unproject_vertex(
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `vertex_to_canvas_point`
[INFO] [stdout]     --> src/rendering.rs:1224:4
[INFO] [stdout]      |
[INFO] [stdout] 1224 | fn vertex_to_canvas_point(vertex: Vector4f, camera: &ProjectiveCamera, canvas: &BufferCanvas)
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `multiply_color`
[INFO] [stdout]     --> src/rendering.rs:1271:8
[INFO] [stdout]      |
[INFO] [stdout] 1271 | pub fn multiply_color(k: f64, color: Color) -> Color {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function is never used: `multiply_channel`
[INFO] [stdout]     --> src/rendering.rs:1279:4
[INFO] [stdout]      |
[INFO] [stdout] 1279 | fn multiply_channel(k: f64, channel: u8) -> u8 {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]   --> src/starfield.rs:46:17
[INFO] [stdout]    |
[INFO] [stdout] 46 |             if (screen_x < 0 || screen_x >= canvas.size) || (screen_y < 0 || screen_y >= canvas.size) {
[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/starfield.rs:46:62
[INFO] [stdout]    |
[INFO] [stdout] 46 |             if (screen_x < 0 || screen_x >= canvas.size) || (screen_y < 0 || screen_y >= canvas.size) {
[INFO] [stdout]    |                                                              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 198 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished test [unoptimized + debuginfo] target(s) in 3.68s
[INFO] running `Command { std: "docker" "inspect" "856b03eb545bef3987f45e0a61d71f578f730050a544f8775582784eb3ca2fb8", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "856b03eb545bef3987f45e0a61d71f578f730050a544f8775582784eb3ca2fb8", kill_on_drop: false }`
[INFO] [stdout] 856b03eb545bef3987f45e0a61d71f578f730050a544f8775582784eb3ca2fb8
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-9/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-9/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" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "rustops/crates-build-env@sha256:d92eaeed33fa75130ca1ee6c8a01d1ffb62bac859dfdfb3450e3e5d1c0146529" "/opt/rustwide/cargo-home/bin/cargo" "+1.47.0" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 2cddb502049dc322f7a3e1ab58a2cc2f2909dc14fa75dae3ac5e315bb4eca569
[INFO] [stderr] WARNING: Your kernel does not support swap limit capabilities or the cgroup is not mounted. Memory limited without swap.
[INFO] running `Command { std: "docker" "start" "-a" "2cddb502049dc322f7a3e1ab58a2cc2f2909dc14fa75dae3ac5e315bb4eca569", kill_on_drop: false }`
[INFO] [stderr] warning: unused imports: `thread`, `time`
[INFO] [stderr]  --> src/main.rs:1:11
[INFO] [stderr]   |
[INFO] [stderr] 1 | use std::{thread, time};
[INFO] [stderr]   |           ^^^^^^  ^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::io::prelude::*`
[INFO] [stderr]  --> src/main.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use std::io::prelude::*;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `std::str::FromStr`
[INFO] [stderr]  --> src/main.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use std::str::FromStr;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Duration`
[INFO] [stderr]  --> src/main.rs:6:17
[INFO] [stderr]   |
[INFO] [stderr] 6 | use std::time::{Duration, Instant};
[INFO] [stderr]   |                 ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `rand::Rng`
[INFO] [stderr]   --> src/main.rs:11:5
[INFO] [stderr]    |
[INFO] [stderr] 11 | use rand::Rng;
[INFO] [stderr]    |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `sdl2::rect::Rect`
[INFO] [stderr]   --> src/main.rs:15:5
[INFO] [stderr]    |
[INFO] [stderr] 15 | use sdl2::rect::Rect;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `plane::Plane`
[INFO] [stderr]   --> src/main.rs:21:5
[INFO] [stderr]    |
[INFO] [stderr] 21 | use plane::Plane;
[INFO] [stderr]    |     ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `rand::Rng`
[INFO] [stderr]  --> src/ray_tracing.rs:3:5
[INFO] [stderr]   |
[INFO] [stderr] 3 | use rand::Rng;
[INFO] [stderr]   |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::plane::PlaneType`
[INFO] [stderr]  --> src/projective_camera.rs:3:5
[INFO] [stderr]   |
[INFO] [stderr] 3 | use crate::plane::PlaneType;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::Point2D`
[INFO] [stderr]  --> src/buffer_canvas.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 6 | use crate::Point2D;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::Vector3f`
[INFO] [stderr]  --> src/buffer_canvas.rs:8:5
[INFO] [stderr]   |
[INFO] [stderr] 8 | use crate::Vector3f;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]   --> src/buffer_canvas.rs:84:22
[INFO] [stderr]    |
[INFO] [stderr] 84 |         let result = (canvas_width / 2 + x_canvas);
[INFO] [stderr]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_parens)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unnecessary parentheses around assigned value
[INFO] [stderr]   --> src/buffer_canvas.rs:95:22
[INFO] [stderr]    |
[INFO] [stderr] 95 |         let result = (canvas_height / 2 - y_canvas - 1);
[INFO] [stderr]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `rand::Rng`
[INFO] [stderr]  --> src/ply2.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use rand::Rng;
[INFO] [stderr]   |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::triangle`
[INFO] [stderr]  --> src/ply2.rs:9:5
[INFO] [stderr]   |
[INFO] [stderr] 9 | use crate::triangle;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `sdl2::video::WindowPos::Positioned`
[INFO] [stderr]  --> src/rendering.rs:2:5
[INFO] [stderr]   |
[INFO] [stderr] 2 | use sdl2::video::WindowPos::Positioned;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `face_visible`
[INFO] [stderr]  --> src/rendering.rs:4:13
[INFO] [stderr]   |
[INFO] [stderr] 4 | use crate::{face_visible, Triangle, Triangle4f};
[INFO] [stderr]   |             ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `transform`
[INFO] [stderr]  --> src/rendering.rs:6:30
[INFO] [stderr]   |
[INFO] [stderr] 6 | use crate::{face_visible_4f, transform};
[INFO] [stderr]   |                              ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::Point2D`
[INFO] [stderr]   --> src/rendering.rs:15:5
[INFO] [stderr]    |
[INFO] [stderr] 15 | use crate::Point2D;
[INFO] [stderr]    |     ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unreachable pattern
[INFO] [stderr]   --> src/ply2.rs:88:13
[INFO] [stderr]    |
[INFO] [stderr] 88 |             _ => ()
[INFO] [stderr]    |             ^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unreachable_patterns)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `i`
[INFO] [stderr]    --> src/main.rs:226:13
[INFO] [stderr]     |
[INFO] [stderr] 226 |         for i in 1..dx {
[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: unused variable: `i`
[INFO] [stderr]    --> src/main.rs:251:13
[INFO] [stderr]     |
[INFO] [stderr] 251 |         for i in 1..dy {
[INFO] [stderr]     |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `rng`
[INFO] [stderr]    --> src/main.rs:451:9
[INFO] [stderr]     |
[INFO] [stderr] 451 |     let mut rng = rand::thread_rng();
[INFO] [stderr]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `rng`
[INFO] [stderr]    --> src/main.rs:491:9
[INFO] [stderr]     |
[INFO] [stderr] 491 |     let mut rng = rand::thread_rng();
[INFO] [stderr]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `size`
[INFO] [stderr]    --> src/main.rs:713:9
[INFO] [stderr]     |
[INFO] [stderr] 713 |     let size = (z_max - z_min).abs();
[INFO] [stderr]     |         ^^^^ help: if this is intentional, prefix it with an underscore: `_size`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `rendering_settings`
[INFO] [stderr]     --> src/main.rs:1150:9
[INFO] [stderr]      |
[INFO] [stderr] 1150 |     let mut rendering_settings = RenderingSettings {
[INFO] [stderr]      |         ^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rendering_settings`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `red`
[INFO] [stderr]     --> src/main.rs:1188:9
[INFO] [stderr]      |
[INFO] [stderr] 1188 |     let red = Color { r: 255, g: 0, b: 0 };
[INFO] [stderr]      |         ^^^ help: if this is intentional, prefix it with an underscore: `_red`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `green`
[INFO] [stderr]     --> src/main.rs:1189:9
[INFO] [stderr]      |
[INFO] [stderr] 1189 |     let green = Color { r: 0, g: 255, b: 0 };
[INFO] [stderr]      |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_green`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `blue`
[INFO] [stderr]     --> src/main.rs:1190:9
[INFO] [stderr]      |
[INFO] [stderr] 1190 |     let blue = Color { r: 0, g: 0, b: 255 };
[INFO] [stderr]      |         ^^^^ help: if this is intentional, prefix it with an underscore: `_blue`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `white`
[INFO] [stderr]     --> src/main.rs:1191:9
[INFO] [stderr]      |
[INFO] [stderr] 1191 |     let white = Color { r: 255, g: 255, b: 255 };
[INFO] [stderr]      |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_white`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `sphere`
[INFO] [stderr]     --> src/main.rs:1197:9
[INFO] [stderr]      |
[INFO] [stderr] 1197 |     let sphere = sphere(35);
[INFO] [stderr]      |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_sphere`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `cube`
[INFO] [stderr]     --> src/main.rs:1198:9
[INFO] [stderr]      |
[INFO] [stderr] 1198 |     let cube = cube(0.9);
[INFO] [stderr]      |         ^^^^ help: if this is intentional, prefix it with an underscore: `_cube`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `torus`
[INFO] [stderr]     --> src/main.rs:1202:9
[INFO] [stderr]      |
[INFO] [stderr] 1202 |     let torus = ply2::load_model("resources/torus.ply2");
[INFO] [stderr]      |         ^^^^^ help: if this is intentional, prefix it with an underscore: `_torus`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `current_instance_index`
[INFO] [stderr]     --> src/main.rs:1207:9
[INFO] [stderr]      |
[INFO] [stderr] 1207 |     let mut current_instance_index: Option<usize> = None;
[INFO] [stderr]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_instance_index`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `lights`
[INFO] [stderr]     --> src/main.rs:1283:9
[INFO] [stderr]      |
[INFO] [stderr] 1283 |     let lights = vec![
[INFO] [stderr]      |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_lights`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `camera`
[INFO] [stderr]     --> src/main.rs:1358:13
[INFO] [stderr]      |
[INFO] [stderr] 1358 |         let camera = ProjectiveCamera {
[INFO] [stderr]      |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_camera`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `rng`
[INFO] [stderr]    --> src/ray_tracing.rs:208:9
[INFO] [stderr]     |
[INFO] [stderr] 208 |     let mut rng = rand::thread_rng();
[INFO] [stderr]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `i`
[INFO] [stderr]    --> src/buffer_canvas.rs:149:17
[INFO] [stderr]     |
[INFO] [stderr] 149 |             for i in 1..dx {
[INFO] [stderr]     |                 ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `i`
[INFO] [stderr]    --> src/buffer_canvas.rs:170:17
[INFO] [stderr]     |
[INFO] [stderr] 170 |             for i in 1..dy {
[INFO] [stderr]     |                 ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `rng`
[INFO] [stderr]   --> src/ply2.rs:34:9
[INFO] [stderr]    |
[INFO] [stderr] 34 |     let mut rng = rand::thread_rng();
[INFO] [stderr]    |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `i`
[INFO] [stderr]   --> src/starfield.rs:21:13
[INFO] [stderr]    |
[INFO] [stderr] 21 |         for i in 0..num_stars {
[INFO] [stderr]    |             ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `camera`
[INFO] [stderr]    --> src/rendering.rs:417:5
[INFO] [stderr]     |
[INFO] [stderr] 417 |     camera: &ProjectiveCamera,
[INFO] [stderr]     |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_camera`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `h_segment`
[INFO] [stderr]    --> src/rendering.rs:589:13
[INFO] [stderr]     |
[INFO] [stderr] 589 |         let h_segment = interpolate_float(x_l, h_left[y_index], x_r, h_right[y_index]);
[INFO] [stderr]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_h_segment`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `h_segment`
[INFO] [stderr]    --> src/rendering.rs:746:13
[INFO] [stderr]     |
[INFO] [stderr] 746 |         let h_segment = interpolate_float(x_l, h_left[y_index], x_r, h_right[y_index]);
[INFO] [stderr]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_h_segment`
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `v0` is never read
[INFO] [stderr]    --> src/rendering.rs:800:9
[INFO] [stderr]     |
[INFO] [stderr] 800 |         v0 = v2;
[INFO] [stderr]     |         ^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `v1` is never read
[INFO] [stderr]    --> src/rendering.rs:813:9
[INFO] [stderr]     |
[INFO] [stderr] 813 |         v1 = v2;
[INFO] [stderr]     |         ^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `v2` is never read
[INFO] [stderr]    --> src/rendering.rs:814:9
[INFO] [stderr]     |
[INFO] [stderr] 814 |         v2 = swap;
[INFO] [stderr]     |         ^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `h_segment`
[INFO] [stderr]    --> src/rendering.rs:927:13
[INFO] [stderr]     |
[INFO] [stderr] 927 |         let h_segment = interpolate_float(x_l, h_left[y_index], x_r, h_right[y_index]);
[INFO] [stderr]     |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_h_segment`
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `v0` is never read
[INFO] [stderr]     --> src/rendering.rs:1004:9
[INFO] [stderr]      |
[INFO] [stderr] 1004 |         v0 = v2;
[INFO] [stderr]      |         ^^
[INFO] [stderr]      |
[INFO] [stderr]      = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `v1` is never read
[INFO] [stderr]     --> src/rendering.rs:1021:9
[INFO] [stderr]      |
[INFO] [stderr] 1021 |         v1 = v2;
[INFO] [stderr]      |         ^^
[INFO] [stderr]      |
[INFO] [stderr]      = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `v2` is never read
[INFO] [stderr]     --> src/rendering.rs:1022:9
[INFO] [stderr]      |
[INFO] [stderr] 1022 |         v2 = swap;
[INFO] [stderr]      |         ^^
[INFO] [stderr]      |
[INFO] [stderr]      = help: maybe it is overwritten before being read?
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `h_segment`
[INFO] [stderr]     --> src/rendering.rs:1171:13
[INFO] [stderr]      |
[INFO] [stderr] 1171 |         let h_segment = interpolate_float(x_l, h_left[y_index], x_r, h_right[y_index]);
[INFO] [stderr]      |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_h_segment`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `i`
[INFO] [stderr]     --> src/rendering.rs:1247:9
[INFO] [stderr]      |
[INFO] [stderr] 1247 |     for i in i0..(i1 + 1) {
[INFO] [stderr]      |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `i`
[INFO] [stderr]     --> src/rendering.rs:1263:9
[INFO] [stderr]      |
[INFO] [stderr] 1263 |     for i in i0..(i1 + 1) {
[INFO] [stderr]      |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/main.rs:451:9
[INFO] [stderr]     |
[INFO] [stderr] 451 |     let mut rng = rand::thread_rng();
[INFO] [stderr]     |         ----^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/main.rs:491:9
[INFO] [stderr]     |
[INFO] [stderr] 491 |     let mut rng = rand::thread_rng();
[INFO] [stderr]     |         ----^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]     --> src/main.rs:1150:9
[INFO] [stderr]      |
[INFO] [stderr] 1150 |     let mut rendering_settings = RenderingSettings {
[INFO] [stderr]      |         ----^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |         |
[INFO] [stderr]      |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]     --> src/main.rs:1207:9
[INFO] [stderr]      |
[INFO] [stderr] 1207 |     let mut current_instance_index: Option<usize> = None;
[INFO] [stderr]      |         ----^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]      |         |
[INFO] [stderr]      |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/ray_tracing.rs:208:9
[INFO] [stderr]     |
[INFO] [stderr] 208 |     let mut rng = rand::thread_rng();
[INFO] [stderr]     |         ----^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/ply2.rs:34:9
[INFO] [stderr]    |
[INFO] [stderr] 34 |     let mut rng = rand::thread_rng();
[INFO] [stderr]    |         ----^^^
[INFO] [stderr]    |         |
[INFO] [stderr]    |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/rendering.rs:537:9
[INFO] [stderr]     |
[INFO] [stderr] 537 |     let mut x02 = interpolate_int(p0.y, p0.x, p2.y, p2.x);
[INFO] [stderr]     |         ----^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/rendering.rs:538:9
[INFO] [stderr]     |
[INFO] [stderr] 538 |     let mut h02 = interpolate_float(p0.y, p0.h, p2.y, p2.h);
[INFO] [stderr]     |         ----^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/rendering.rs:539:9
[INFO] [stderr]     |
[INFO] [stderr] 539 |     let mut iz02 = interpolate_float(p0.y, 1.0 / p0.z, p2.y, 1.0 / p2.z);
[INFO] [stderr]     |         ----^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/rendering.rs:556:9
[INFO] [stderr]     |
[INFO] [stderr] 556 |     let mut x_left;
[INFO] [stderr]     |         ----^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/rendering.rs:557:9
[INFO] [stderr]     |
[INFO] [stderr] 557 |     let mut x_right;
[INFO] [stderr]     |         ----^^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/rendering.rs:558:9
[INFO] [stderr]     |
[INFO] [stderr] 558 |     let mut h_left;
[INFO] [stderr]     |         ----^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/rendering.rs:559:9
[INFO] [stderr]     |
[INFO] [stderr] 559 |     let mut h_right;
[INFO] [stderr]     |         ----^^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/rendering.rs:560:9
[INFO] [stderr]     |
[INFO] [stderr] 560 |     let mut iz_left;
[INFO] [stderr]     |         ----^^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/rendering.rs:561:9
[INFO] [stderr]     |
[INFO] [stderr] 561 |     let mut iz_right;
[INFO] [stderr]     |         ----^^^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/rendering.rs:679:9
[INFO] [stderr]     |
[INFO] [stderr] 679 |     let mut x02 = interpolate_int(p0.y, p0.x, p2.y, p2.x);
[INFO] [stderr]     |         ----^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/rendering.rs:680:9
[INFO] [stderr]     |
[INFO] [stderr] 680 |     let mut h02 = interpolate_float(p0.y, p0.h, p2.y, p2.h);
[INFO] [stderr]     |         ----^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/rendering.rs:681:9
[INFO] [stderr]     |
[INFO] [stderr] 681 |     let mut iz02 = interpolate_float(p0.y, 1.0 / p0.z, p2.y, 1.0 / p2.z);
[INFO] [stderr]     |         ----^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/rendering.rs:682:9
[INFO] [stderr]     |
[INFO] [stderr] 682 |     let mut i02 = interpolate_float(p0.y, i0, p2.y, i2);
[INFO] [stderr]     |         ----^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/rendering.rs:705:9
[INFO] [stderr]     |
[INFO] [stderr] 705 |     let mut x_left;
[INFO] [stderr]     |         ----^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/rendering.rs:706:9
[INFO] [stderr]     |
[INFO] [stderr] 706 |     let mut x_right;
[INFO] [stderr]     |         ----^^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/rendering.rs:707:9
[INFO] [stderr]     |
[INFO] [stderr] 707 |     let mut h_left;
[INFO] [stderr]     |         ----^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/rendering.rs:708:9
[INFO] [stderr]     |
[INFO] [stderr] 708 |     let mut h_right;
[INFO] [stderr]     |         ----^^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/rendering.rs:709:9
[INFO] [stderr]     |
[INFO] [stderr] 709 |     let mut iz_left;
[INFO] [stderr]     |         ----^^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/rendering.rs:710:9
[INFO] [stderr]     |
[INFO] [stderr] 710 |     let mut iz_right;
[INFO] [stderr]     |         ----^^^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/rendering.rs:711:9
[INFO] [stderr]     |
[INFO] [stderr] 711 |     let mut i_left;
[INFO] [stderr]     |         ----^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/rendering.rs:712:9
[INFO] [stderr]     |
[INFO] [stderr] 712 |     let mut i_right;
[INFO] [stderr]     |         ----^^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/rendering.rs:836:9
[INFO] [stderr]     |
[INFO] [stderr] 836 |     let mut x02 = interpolate_int(p0.y, p0.x, p2.y, p2.x);
[INFO] [stderr]     |         ----^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/rendering.rs:837:9
[INFO] [stderr]     |
[INFO] [stderr] 837 |     let mut h02 = interpolate_float(p0.y, p0.h, p2.y, p2.h);
[INFO] [stderr]     |         ----^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/rendering.rs:838:9
[INFO] [stderr]     |
[INFO] [stderr] 838 |     let mut iz02 = interpolate_float(p0.y, 1.0 / p0.z, p2.y, 1.0 / p2.z);
[INFO] [stderr]     |         ----^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/rendering.rs:839:9
[INFO] [stderr]     |
[INFO] [stderr] 839 |     let mut normal_x_02 = interpolate_float(p0.y, normal0.x, p2.y, normal2.x);
[INFO] [stderr]     |         ----^^^^^^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/rendering.rs:840:9
[INFO] [stderr]     |
[INFO] [stderr] 840 |     let mut normal_y_02 = interpolate_float(p0.y, normal0.y, p2.y, normal2.y);
[INFO] [stderr]     |         ----^^^^^^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/rendering.rs:841:9
[INFO] [stderr]     |
[INFO] [stderr] 841 |     let mut normal_z_02 = interpolate_float(p0.y, normal0.z, p2.y, normal2.z);
[INFO] [stderr]     |         ----^^^^^^^^^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]     --> src/rendering.rs:1052:9
[INFO] [stderr]      |
[INFO] [stderr] 1052 |     let mut x02 = interpolate_int(p0.y, p0.x, p2.y, p2.x);
[INFO] [stderr]      |         ----^^^
[INFO] [stderr]      |         |
[INFO] [stderr]      |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]     --> src/rendering.rs:1053:9
[INFO] [stderr]      |
[INFO] [stderr] 1053 |     let mut h02 = interpolate_float(p0.y, p0.h, p2.y, p2.h);
[INFO] [stderr]      |         ----^^^
[INFO] [stderr]      |         |
[INFO] [stderr]      |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]     --> src/rendering.rs:1054:9
[INFO] [stderr]      |
[INFO] [stderr] 1054 |     let mut iz02 = interpolate_float(p0.y, 1.0 / p0.z, p2.y, 1.0 / p2.z);
[INFO] [stderr]      |         ----^^^^
[INFO] [stderr]      |         |
[INFO] [stderr]      |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]     --> src/rendering.rs:1055:9
[INFO] [stderr]      |
[INFO] [stderr] 1055 |     let mut uz02 = interpolate_float(p0.y, uv0.u / p0.z, p2.y, uv2.u / p2.z);
[INFO] [stderr]      |         ----^^^^
[INFO] [stderr]      |         |
[INFO] [stderr]      |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]     --> src/rendering.rs:1056:9
[INFO] [stderr]      |
[INFO] [stderr] 1056 |     let mut vz02 = interpolate_float(p0.y, uv0.v / p0.z, p2.y, uv2.v / p2.z);
[INFO] [stderr]      |         ----^^^^
[INFO] [stderr]      |         |
[INFO] [stderr]      |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]     --> src/rendering.rs:1057:9
[INFO] [stderr]      |
[INFO] [stderr] 1057 |     let mut normal_x_02 = interpolate_float(p0.y, normal0.x, p2.y, normal2.x);
[INFO] [stderr]      |         ----^^^^^^^^^^^
[INFO] [stderr]      |         |
[INFO] [stderr]      |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]     --> src/rendering.rs:1058:9
[INFO] [stderr]      |
[INFO] [stderr] 1058 |     let mut normal_y_02 = interpolate_float(p0.y, normal0.y, p2.y, normal2.y);
[INFO] [stderr]      |         ----^^^^^^^^^^^
[INFO] [stderr]      |         |
[INFO] [stderr]      |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]     --> src/rendering.rs:1059:9
[INFO] [stderr]      |
[INFO] [stderr] 1059 |     let mut normal_z_02 = interpolate_float(p0.y, normal0.z, p2.y, normal2.z);
[INFO] [stderr]      |         ----^^^^^^^^^^^
[INFO] [stderr]      |         |
[INFO] [stderr]      |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: private type `Point2D` in public interface (error E0446)
[INFO] [stderr]   --> src/projective_camera.rs:19:5
[INFO] [stderr]    |
[INFO] [stderr] 19 |     pub fn project(&self, point: Vector3f) -> Point2D {
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(private_in_public)]` on by default
[INFO] [stderr]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stderr]    = note: for more information, see issue #34537 <https://github.com/rust-lang/rust/issues/34537>
[INFO] [stderr] 
[INFO] [stderr] warning: private type `Point2D` in public interface (error E0446)
[INFO] [stderr]   --> src/projective_camera.rs:26:5
[INFO] [stderr]    |
[INFO] [stderr] 26 |     pub fn project_vertex(&self, vertex: Vector4f) -> Point2D {
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stderr]    = note: for more information, see issue #34537 <https://github.com/rust-lang/rust/issues/34537>
[INFO] [stderr] 
[INFO] [stderr] warning: private type `Point` in public interface (error E0446)
[INFO] [stderr]   --> src/buffer_canvas.rs:46:5
[INFO] [stderr]    |
[INFO] [stderr] 46 |     pub fn viewport_to_canvas(&self, vertex: Vector4f, camera: &ProjectiveCamera) -> Point {
[INFO] [stderr]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stderr]    = note: for more information, see issue #34537 <https://github.com/rust-lang/rust/issues/34537>
[INFO] [stderr] 
[INFO] [stderr] warning: private type `Point` in public interface (error E0446)
[INFO] [stderr]    --> src/buffer_canvas.rs:108:5
[INFO] [stderr]     |
[INFO] [stderr] 108 |     pub fn draw_line(&mut self, start: Point, end: Point, color: Color) {
[INFO] [stderr]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
[INFO] [stderr]     = note: for more information, see issue #34537 <https://github.com/rust-lang/rust/issues/34537>
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `render_scene_to_buffer`
[INFO] [stderr]   --> src/ray_tracing.rs:24:8
[INFO] [stderr]    |
[INFO] [stderr] 24 | pub fn render_scene_to_buffer(
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `compute_lighting`
[INFO] [stderr]   --> src/ray_tracing.rs:81:4
[INFO] [stderr]    |
[INFO] [stderr] 81 | fn compute_lighting(
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `compute_light_from_direction`
[INFO] [stderr]    --> src/ray_tracing.rs:122:4
[INFO] [stderr]     |
[INFO] [stderr] 122 | fn compute_light_from_direction(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `closest_intersection`
[INFO] [stderr]    --> src/ray_tracing.rs:174:4
[INFO] [stderr]     |
[INFO] [stderr] 174 | fn closest_intersection(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `trace_ray`
[INFO] [stderr]    --> src/ray_tracing.rs:199:4
[INFO] [stderr]     |
[INFO] [stderr] 199 | fn trace_ray(
[INFO] [stderr]     |    ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `add_colors`
[INFO] [stderr]    --> src/ray_tracing.rs:271:4
[INFO] [stderr]     |
[INFO] [stderr] 271 | fn add_colors(color1: Color, color2: Color) -> Color {
[INFO] [stderr]     |    ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `contains`
[INFO] [stderr]    --> src/ray_tracing.rs:279:4
[INFO] [stderr]     |
[INFO] [stderr] 279 | fn contains(range: (f64, f64), n: f64) -> bool {
[INFO] [stderr]     |    ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `intersect_ray_with_sphere`
[INFO] [stderr]    --> src/ray_tracing.rs:284:4
[INFO] [stderr]     |
[INFO] [stderr] 284 | fn intersect_ray_with_sphere(origin: Vector3f, direction: Vector3f, sphere: Sphere) -> (f64, f64) {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `dot_product`
[INFO] [stderr]  --> src/vectors.rs:3:8
[INFO] [stderr]   |
[INFO] [stderr] 3 | pub fn dot_product(v1: Vector3f, v2: Vector3f) -> f64 {
[INFO] [stderr]   |        ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `sum`
[INFO] [stderr]   --> src/vectors.rs:27:8
[INFO] [stderr]    |
[INFO] [stderr] 27 | pub fn sum(v1: Vector3f, v2: Vector3f) -> Vector3f {
[INFO] [stderr]    |        ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `negate`
[INFO] [stderr]   --> src/vectors.rs:43:8
[INFO] [stderr]    |
[INFO] [stderr] 43 | pub fn negate(vector: Vector3f) -> Vector3f {
[INFO] [stderr]    |        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `reflect`
[INFO] [stderr]   --> src/vectors.rs:47:8
[INFO] [stderr]    |
[INFO] [stderr] 47 | pub fn reflect(v1: Vector3f, v2: Vector3f) -> Vector3f {
[INFO] [stderr]    |        ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `scale`
[INFO] [stderr]   --> src/vectors.rs:54:8
[INFO] [stderr]    |
[INFO] [stderr] 54 | pub fn scale(scalar: f64, vector: Vector3f) -> Vector3f {
[INFO] [stderr]    |        ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `rotation_around_y`
[INFO] [stderr]   --> src/vectors.rs:71:8
[INFO] [stderr]    |
[INFO] [stderr] 71 | pub fn rotation_around_y(d: f64) -> [[f64; 3]; 3] {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `project`
[INFO] [stderr]   --> src/projective_camera.rs:19:12
[INFO] [stderr]    |
[INFO] [stderr] 19 |     pub fn project(&self, point: Vector3f) -> Point2D {
[INFO] [stderr]    |            ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `project_vertex`
[INFO] [stderr]   --> src/projective_camera.rs:26:12
[INFO] [stderr]    |
[INFO] [stderr] 26 |     pub fn project_vertex(&self, vertex: Vector4f) -> Point2D {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `camera_transform`
[INFO] [stderr]   --> src/projective_camera.rs:33:12
[INFO] [stderr]    |
[INFO] [stderr] 33 |     pub fn camera_transform(&self) -> Matrix44f {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `clipping_planes`
[INFO] [stderr]   --> src/projective_camera.rs:38:12
[INFO] [stderr]    |
[INFO] [stderr] 38 |     pub fn clipping_planes(&self) -> Vec<Plane> {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `right_plane_normal`
[INFO] [stderr]   --> src/projective_camera.rs:70:8
[INFO] [stderr]    |
[INFO] [stderr] 70 |     fn right_plane_normal(&self, half_viewport_size: f64) -> Vector3f {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `top_plane_normal`
[INFO] [stderr]   --> src/projective_camera.rs:85:8
[INFO] [stderr]    |
[INFO] [stderr] 85 |     fn top_plane_normal(&self, half_viewport_size: f64) -> Vector3f {
[INFO] [stderr]    |        ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `left_plane_normal`
[INFO] [stderr]    --> src/projective_camera.rs:100:8
[INFO] [stderr]     |
[INFO] [stderr] 100 |     fn left_plane_normal(&self, half_viewport_size: f64) -> Vector3f {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `bottom_plane_normal`
[INFO] [stderr]    --> src/projective_camera.rs:115:8
[INFO] [stderr]     |
[INFO] [stderr] 115 |     fn bottom_plane_normal(&self, half_viewport_size: f64) -> Vector3f {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `viewport_to_canvas`
[INFO] [stderr]   --> src/buffer_canvas.rs:46:12
[INFO] [stderr]    |
[INFO] [stderr] 46 |     pub fn viewport_to_canvas(&self, vertex: Vector4f, camera: &ProjectiveCamera) -> Point {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `update_depth_buffer_if_closer`
[INFO] [stderr]   --> src/buffer_canvas.rs:71:12
[INFO] [stderr]    |
[INFO] [stderr] 71 |     pub fn update_depth_buffer_if_closer(&mut self, screen_x: usize, screen_y: usize, iz: f64) -> bool {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `screen_x`
[INFO] [stderr]   --> src/buffer_canvas.rs:82:12
[INFO] [stderr]    |
[INFO] [stderr] 82 |     pub fn screen_x(&self, x_canvas: i32) -> usize {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `screen_y`
[INFO] [stderr]   --> src/buffer_canvas.rs:93:12
[INFO] [stderr]    |
[INFO] [stderr] 93 |     pub fn screen_y(&self, y_canvas: i32) -> usize {
[INFO] [stderr]    |            ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `point_to_pixel`
[INFO] [stderr]    --> src/buffer_canvas.rs:104:8
[INFO] [stderr]     |
[INFO] [stderr] 104 |     fn point_to_pixel(&self, x: i32, y: i32, color: Color) -> Pixel {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `draw_line`
[INFO] [stderr]    --> src/buffer_canvas.rs:108:12
[INFO] [stderr]     |
[INFO] [stderr] 108 |     pub fn draw_line(&mut self, start: Point, end: Point, color: Color) {
[INFO] [stderr]     |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `rasterize_line`
[INFO] [stderr]    --> src/buffer_canvas.rs:121:8
[INFO] [stderr]     |
[INFO] [stderr] 121 |     fn rasterize_line(&mut self, start: Pixel, end: Pixel) {
[INFO] [stderr]     |        ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `transform`
[INFO] [stderr]   --> src/instance.rs:30:12
[INFO] [stderr]    |
[INFO] [stderr] 30 |     pub fn transform(&self) -> Matrix44f {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `rotation_transform`
[INFO] [stderr]   --> src/instance.rs:36:12
[INFO] [stderr]    |
[INFO] [stderr] 36 |     pub fn rotation_transform(&self) -> Matrix44f {
[INFO] [stderr]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant is never constructed: `Near`
[INFO] [stderr]  --> src/plane.rs:4:22
[INFO] [stderr]   |
[INFO] [stderr] 4 | pub enum PlaneType { Near, Left, Right, Top, Bottom }
[INFO] [stderr]   |                      ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant is never constructed: `Left`
[INFO] [stderr]  --> src/plane.rs:4:28
[INFO] [stderr]   |
[INFO] [stderr] 4 | pub enum PlaneType { Near, Left, Right, Top, Bottom }
[INFO] [stderr]   |                            ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant is never constructed: `Right`
[INFO] [stderr]  --> src/plane.rs:4:34
[INFO] [stderr]   |
[INFO] [stderr] 4 | pub enum PlaneType { Near, Left, Right, Top, Bottom }
[INFO] [stderr]   |                                  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant is never constructed: `Top`
[INFO] [stderr]  --> src/plane.rs:4:41
[INFO] [stderr]   |
[INFO] [stderr] 4 | pub enum PlaneType { Near, Left, Right, Top, Bottom }
[INFO] [stderr]   |                                         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: variant is never constructed: `Bottom`
[INFO] [stderr]  --> src/plane.rs:4:46
[INFO] [stderr]   |
[INFO] [stderr] 4 | pub enum PlaneType { Near, Left, Right, Top, Bottom }
[INFO] [stderr]   |                                              ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: struct is never constructed: `Plane`
[INFO] [stderr]  --> src/plane.rs:6:12
[INFO] [stderr]   |
[INFO] [stderr] 6 | pub struct Plane {
[INFO] [stderr]   |            ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field is never read: `img`
[INFO] [stderr]  --> src/texture.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 7 |     img: DynamicImage,
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field is never read: `width`
[INFO] [stderr]  --> src/texture.rs:8:5
[INFO] [stderr]   |
[INFO] [stderr] 8 |     width: u32,
[INFO] [stderr]   |     ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field is never read: `height`
[INFO] [stderr]  --> src/texture.rs:9:5
[INFO] [stderr]   |
[INFO] [stderr] 9 |     height: u32
[INFO] [stderr]   |     ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated function is never used: `get_texel`
[INFO] [stderr]   --> src/texture.rs:13:12
[INFO] [stderr]    |
[INFO] [stderr] 13 |     pub fn get_texel(&self, u: f64, v: f64) -> Color {
[INFO] [stderr]    |            ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field is never read: `x`
[INFO] [stderr]   --> src/main.rs:67:18
[INFO] [stderr]    |
[INFO] [stderr] 67 | struct Point2D { x: f64, y: f64 }
[INFO] [stderr]    |                  ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field is never read: `y`
[INFO] [stderr]   --> src/main.rs:67:26
[INFO] [stderr]    |
[INFO] [stderr] 67 | struct Point2D { x: f64, y: f64 }
[INFO] [stderr]    |                          ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field is never read: `x`
[INFO] [stderr]   --> src/main.rs:70:16
[INFO] [stderr]    |
[INFO] [stderr] 70 | struct Point { x: i32, y: i32, h: f64, z: f64 }
[INFO] [stderr]    |                ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field is never read: `y`
[INFO] [stderr]   --> src/main.rs:70:24
[INFO] [stderr]    |
[INFO] [stderr] 70 | struct Point { x: i32, y: i32, h: f64, z: f64 }
[INFO] [stderr]    |                        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field is never read: `h`
[INFO] [stderr]   --> src/main.rs:70:32
[INFO] [stderr]    |
[INFO] [stderr] 70 | struct Point { x: i32, y: i32, h: f64, z: f64 }
[INFO] [stderr]    |                                ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field is never read: `z`
[INFO] [stderr]   --> src/main.rs:70:40
[INFO] [stderr]    |
[INFO] [stderr] 70 | struct Point { x: i32, y: i32, h: f64, z: f64 }
[INFO] [stderr]    |                                        ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field is never read: `x_min`
[INFO] [stderr]   --> src/main.rs:73:16
[INFO] [stderr]    |
[INFO] [stderr] 73 | struct Frame { x_min: f64, x_max: f64, y_min: f64, y_max: f64 }
[INFO] [stderr]    |                ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field is never read: `x_max`
[INFO] [stderr]   --> src/main.rs:73:28
[INFO] [stderr]    |
[INFO] [stderr] 73 | struct Frame { x_min: f64, x_max: f64, y_min: f64, y_max: f64 }
[INFO] [stderr]    |                            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field is never read: `y_min`
[INFO] [stderr]   --> src/main.rs:73:40
[INFO] [stderr]    |
[INFO] [stderr] 73 | struct Frame { x_min: f64, x_max: f64, y_min: f64, y_max: f64 }
[INFO] [stderr]    |                                        ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: field is never read: `y_max`
[INFO] [stderr]   --> src/main.rs:73:52
[INFO] [stderr]    |
[INFO] [stderr] 73 | struct Frame { x_min: f64, x_max: f64, y_min: f64, y_max: f64 }
[INFO] [stderr]    |                                                    ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `project`
[INFO] [stderr]    --> src/main.rs:181:4
[INFO] [stderr]     |
[INFO] [stderr] 181 | fn project(point3d: Vector3f) -> Point2D {
[INFO] [stderr]     |    ^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `normalize`
[INFO] [stderr]    --> src/main.rs:185:4
[INFO] [stderr]     |
[INFO] [stderr] 185 | fn normalize(point2d: Point2D, frame: Frame) -> Point2D {
[INFO] [stderr]     |    ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `rasterize`
[INFO] [stderr]    --> src/main.rs:192:4
[INFO] [stderr]     |
[INFO] [stderr] 192 | fn rasterize(point: Point2D, size: usize) -> Pixel {
[INFO] [stderr]     |    ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `simple_line`
[INFO] [stderr]    --> src/main.rs:270:4
[INFO] [stderr]     |
[INFO] [stderr] 270 | fn simple_line(start: Pixel, end: Pixel, buffer: &mut [u8], size: usize) {
[INFO] [stderr]     |    ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `face_visible`
[INFO] [stderr]    --> src/main.rs:305:4
[INFO] [stderr]     |
[INFO] [stderr] 305 | fn face_visible(face: &Vec<i32>, vertices: &[Vector3f]) -> bool {
[INFO] [stderr]     |    ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `face_visible2`
[INFO] [stderr]    --> src/main.rs:316:4
[INFO] [stderr]     |
[INFO] [stderr] 316 | fn face_visible2(face: &Vec<i32>, vertices: &[Vector3f]) -> bool {
[INFO] [stderr]     |    ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `face_visible_4f`
[INFO] [stderr]    --> src/main.rs:327:4
[INFO] [stderr]     |
[INFO] [stderr] 327 | fn face_visible_4f(vertex: Vector3f, normal_direction: Vector3f) -> bool {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `draw_face`
[INFO] [stderr]    --> src/main.rs:331:4
[INFO] [stderr]     |
[INFO] [stderr] 331 | fn draw_face(face: &Vec<i32>,
[INFO] [stderr]     |    ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `transform`
[INFO] [stderr]    --> src/main.rs:353:4
[INFO] [stderr]     |
[INFO] [stderr] 353 | fn transform(vertices: &Vec<Vector3f>, vector: Vector3f) -> Vec<Vector3f> {
[INFO] [stderr]     |    ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `rotated_cube_vertices`
[INFO] [stderr]    --> src/main.rs:367:4
[INFO] [stderr]     |
[INFO] [stderr] 367 | fn rotated_cube_vertices(t: f64) -> [Vector3f; 8] {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `rotated_cube`
[INFO] [stderr]    --> src/main.rs:421:4
[INFO] [stderr]     |
[INFO] [stderr] 421 | fn rotated_cube(t: f64) -> (Vec<Vector3f>, Vec<Vec<i32>>) {
[INFO] [stderr]     |    ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `triangle`
[INFO] [stderr]    --> src/main.rs:438:4
[INFO] [stderr]     |
[INFO] [stderr] 438 | fn triangle<'a>(size: f64) -> Model<'a> {
[INFO] [stderr]     |    ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `two_unit_cube`
[INFO] [stderr]    --> src/main.rs:645:4
[INFO] [stderr]     |
[INFO] [stderr] 645 | fn two_unit_cube<'a>() -> Model<'a> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `enclosing_frame`
[INFO] [stderr]    --> src/main.rs:649:4
[INFO] [stderr]     |
[INFO] [stderr] 649 | fn enclosing_frame(vertices: &Vec<Vector3f>) -> Frame {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `find_z_transform`
[INFO] [stderr]    --> src/main.rs:700:4
[INFO] [stderr]     |
[INFO] [stderr] 700 | fn find_z_transform(vertices: &Vec<Vector3f>) -> f64 {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `render_model_to_buffer`
[INFO] [stderr]    --> src/main.rs:718:4
[INFO] [stderr]     |
[INFO] [stderr] 718 | fn render_model_to_buffer(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `show_buffer_in_window`
[INFO] [stderr]    --> src/main.rs:766:4
[INFO] [stderr]     |
[INFO] [stderr] 766 | fn show_buffer_in_window(buffer: &mut [u8], size: usize) {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `rotating_cube_window`
[INFO] [stderr]    --> src/main.rs:820:4
[INFO] [stderr]     |
[INFO] [stderr] 820 | fn rotating_cube_window(buffer: &mut [u8], size: usize) {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `three_spheres_window`
[INFO] [stderr]    --> src/main.rs:930:4
[INFO] [stderr]     |
[INFO] [stderr] 930 | fn three_spheres_window(buffer: &mut [u8], size: usize) {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `render_video`
[INFO] [stderr]     --> src/main.rs:1076:4
[INFO] [stderr]      |
[INFO] [stderr] 1076 | fn render_video() {
[INFO] [stderr]      |    ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `draw_wireframe_triangle`
[INFO] [stderr]     --> src/main.rs:1088:4
[INFO] [stderr]      |
[INFO] [stderr] 1088 | fn draw_wireframe_triangle(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `render_scene`
[INFO] [stderr]   --> src/rendering.rs:26:8
[INFO] [stderr]    |
[INFO] [stderr] 26 | pub fn render_scene(
[INFO] [stderr]    |        ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `render_instance`
[INFO] [stderr]   --> src/rendering.rs:50:4
[INFO] [stderr]    |
[INFO] [stderr] 50 | fn render_instance(
[INFO] [stderr]    |    ^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `face_normal_direction_in_right`
[INFO] [stderr]    --> src/rendering.rs:155:4
[INFO] [stderr]     |
[INFO] [stderr] 155 | fn face_normal_direction_in_right(face: &Vec<i32>, vertices: &[Vector4f]) -> Vector3f {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `face_normal_direction_in_left`
[INFO] [stderr]    --> src/rendering.rs:167:4
[INFO] [stderr]     |
[INFO] [stderr] 167 | fn face_normal_direction_in_left(triangle: &Triangle, vertices: &[Vector4f]) -> Vector3f {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `clip_triangles`
[INFO] [stderr]    --> src/rendering.rs:179:4
[INFO] [stderr]     |
[INFO] [stderr] 179 | fn clip_triangles(triangles: Vec<Triangle4f>, clipping_planes: &Vec<Plane>) -> Vec<Triangle4f> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `clip_triangles_against_plane`
[INFO] [stderr]    --> src/rendering.rs:193:4
[INFO] [stderr]     |
[INFO] [stderr] 193 | fn clip_triangles_against_plane(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `clip_triangle_against_plane`
[INFO] [stderr]    --> src/rendering.rs:208:4
[INFO] [stderr]     |
[INFO] [stderr] 208 | fn clip_triangle_against_plane(triangle: Triangle4f, clipping_plane: &Plane) -> Vec<Triangle4f> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `find_split_vertex`
[INFO] [stderr]    --> src/rendering.rs:288:4
[INFO] [stderr]     |
[INFO] [stderr] 288 | fn find_split_vertex(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `is_vertex_outside`
[INFO] [stderr]    --> src/rendering.rs:312:4
[INFO] [stderr]     |
[INFO] [stderr] 312 | fn is_vertex_outside(plane: &Plane, vertex: Vector4f) -> bool {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `is_vertex_inside`
[INFO] [stderr]    --> src/rendering.rs:318:4
[INFO] [stderr]     |
[INFO] [stderr] 318 | fn is_vertex_inside(plane: &Plane, vertex: Vector4f) -> bool {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `convert_face_to_triangles`
[INFO] [stderr]    --> src/rendering.rs:322:4
[INFO] [stderr]     |
[INFO] [stderr] 322 | fn convert_face_to_triangles(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `render_filled_triangle`
[INFO] [stderr]    --> src/rendering.rs:345:4
[INFO] [stderr]     |
[INFO] [stderr] 345 | fn render_filled_triangle(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `draw_normal_to_vertex`
[INFO] [stderr]    --> src/rendering.rs:385:4
[INFO] [stderr]     |
[INFO] [stderr] 385 | fn draw_normal_to_vertex(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `is_point_in_canvas`
[INFO] [stderr]    --> src/rendering.rs:404:4
[INFO] [stderr]     |
[INFO] [stderr] 404 | fn is_point_in_canvas(point: Point, canvas: &BufferCanvas) -> bool {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `compute_illumination`
[INFO] [stderr]    --> src/rendering.rs:414:4
[INFO] [stderr]     |
[INFO] [stderr] 414 | fn compute_illumination(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `light_from_direction`
[INFO] [stderr]    --> src/rendering.rs:438:4
[INFO] [stderr]     |
[INFO] [stderr] 438 | fn light_from_direction(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `render_wireframe_triangle`
[INFO] [stderr]    --> src/rendering.rs:475:4
[INFO] [stderr]     |
[INFO] [stderr] 475 | fn render_wireframe_triangle(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `flat_shaded_triangle`
[INFO] [stderr]    --> src/rendering.rs:489:4
[INFO] [stderr]     |
[INFO] [stderr] 489 | fn flat_shaded_triangle(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `gouraud_shaded_triangle`
[INFO] [stderr]    --> src/rendering.rs:605:4
[INFO] [stderr]     |
[INFO] [stderr] 605 | fn gouraud_shaded_triangle(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `phong_shaded_triangle`
[INFO] [stderr]    --> src/rendering.rs:762:4
[INFO] [stderr]     |
[INFO] [stderr] 762 | fn phong_shaded_triangle(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `textured_phong_shaded_triangle`
[INFO] [stderr]    --> src/rendering.rs:956:4
[INFO] [stderr]     |
[INFO] [stderr] 956 | fn textured_phong_shaded_triangle(
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `unproject_vertex`
[INFO] [stderr]     --> src/rendering.rs:1206:4
[INFO] [stderr]      |
[INFO] [stderr] 1206 | fn unproject_vertex(
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `vertex_to_canvas_point`
[INFO] [stderr]     --> src/rendering.rs:1224:4
[INFO] [stderr]      |
[INFO] [stderr] 1224 | fn vertex_to_canvas_point(vertex: Vector4f, camera: &ProjectiveCamera, canvas: &BufferCanvas)
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `multiply_color`
[INFO] [stderr]     --> src/rendering.rs:1271:8
[INFO] [stderr]      |
[INFO] [stderr] 1271 | pub fn multiply_color(k: f64, color: Color) -> Color {
[INFO] [stderr]      |        ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function is never used: `multiply_channel`
[INFO] [stderr]     --> src/rendering.rs:1279:4
[INFO] [stderr]      |
[INFO] [stderr] 1279 | fn multiply_channel(k: f64, channel: u8) -> u8 {
[INFO] [stderr]      |    ^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: comparison is useless due to type limits
[INFO] [stderr]   --> src/starfield.rs:46:17
[INFO] [stderr]    |
[INFO] [stderr] 46 |             if (screen_x < 0 || screen_x >= canvas.size) || (screen_y < 0 || screen_y >= canvas.size) {
[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/starfield.rs:46:62
[INFO] [stderr]    |
[INFO] [stderr] 46 |             if (screen_x < 0 || screen_x >= canvas.size) || (screen_y < 0 || screen_y >= canvas.size) {
[INFO] [stderr]    |                                                              ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: 198 warnings emitted
[INFO] [stderr] 
[INFO] [stderr]     Finished test [unoptimized + debuginfo] target(s) in 0.20s
[INFO] [stderr]      Running /opt/rustwide/target/debug/deps/durer-33b9ed685d9c9632
[INFO] [stdout] 
[INFO] [stdout] running 14 tests
[INFO] [stdout] test instance::test_new ... ok
[INFO] [stdout] test instance::test_new_with_scale ... ok
[INFO] [stdout] test instance::test_new_with_position ... ok
[INFO] [stdout] test matrix44f::test_transpose ... ok
[INFO] [stdout] test ray_tracing::test_canvas_to_viewport ... ok
[INFO] [stdout] test rendering::test_interpolate_float ... ok
[INFO] [stdout] test rendering::test_interpolate_int ... ok
[INFO] [stdout] test test_new_with_calculated_normal ... ok
[INFO] [stdout] test vector4f::test_transform ... ok
[INFO] [stdout] test vectors::test_normalize ... ok
[INFO] [stdout] test vectors::test_multiply_vec_and_mat ... ok
[INFO] [stdout] test starfield::test_init_star ... ok
[INFO] [stdout] test vectors::test_length ... ok
[INFO] [stdout] test instance::test_new_with_rotation ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "2cddb502049dc322f7a3e1ab58a2cc2f2909dc14fa75dae3ac5e315bb4eca569", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2cddb502049dc322f7a3e1ab58a2cc2f2909dc14fa75dae3ac5e315bb4eca569", kill_on_drop: false }`
[INFO] [stdout] 2cddb502049dc322f7a3e1ab58a2cc2f2909dc14fa75dae3ac5e315bb4eca569
