[INFO] cloning repository https://github.com/Itbiodev/cpu_renderer
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Itbiodev/cpu_renderer" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FItbiodev%2Fcpu_renderer", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FItbiodev%2Fcpu_renderer'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 92a263153d420fe04e62bfbdaad04a10651414d0
[INFO] checking Itbiodev/cpu_renderer against 1.95.0 for pr-155915
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FItbiodev%2Fcpu_renderer" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Itbiodev/cpu_renderer
[INFO] finished tweaking git repo https://github.com/Itbiodev/cpu_renderer
[INFO] tweaked toml for git repo https://github.com/Itbiodev/cpu_renderer written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Itbiodev/cpu_renderer on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Itbiodev/cpu_renderer already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded getrandom v0.2.7
[INFO] [stderr]   Downloaded simba v0.7.2
[INFO] [stderr]   Downloaded wavefront v0.2.3
[INFO] [stderr]   Downloaded forward_ref_generic v0.2.1
[INFO] [stderr]   Downloaded num-complex v0.4.2
[INFO] [stderr]   Downloaded unicode-ident v1.0.4
[INFO] [stderr]   Downloaded ahash v0.4.7
[INFO] [stderr]   Downloaded hashbrown v0.9.1
[INFO] [stderr]   Downloaded safe_arch v0.6.0
[INFO] [stderr]   Downloaded libm v0.2.5
[INFO] [stderr]   Downloaded wide v0.7.4
[INFO] [stderr]   Downloaded syn v1.0.101
[INFO] [stderr]   Downloaded nalgebra v0.31.1
[INFO] [stderr]   Downloaded libc v0.2.134
[INFO] [stderr]   Downloaded tgaimage v0.1.1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] e55cc23b028e6fa73c5e47f3ce4fab8f78cab43d37b9212a60c86f8ccf54faa1
[INFO] running `Command { std: "docker" "start" "-a" "e55cc23b028e6fa73c5e47f3ce4fab8f78cab43d37b9212a60c86f8ccf54faa1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "e55cc23b028e6fa73c5e47f3ce4fab8f78cab43d37b9212a60c86f8ccf54faa1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "e55cc23b028e6fa73c5e47f3ce4fab8f78cab43d37b9212a60c86f8ccf54faa1", kill_on_drop: false }`
[INFO] [stdout] e55cc23b028e6fa73c5e47f3ce4fab8f78cab43d37b9212a60c86f8ccf54faa1
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 11cb10e22e3679c94cc106b461fe366249910c2a74cfb557a84704d148a91d1b
[INFO] running `Command { std: "docker" "start" "-a" "11cb10e22e3679c94cc106b461fe366249910c2a74cfb557a84704d148a91d1b", kill_on_drop: false }`
[INFO] [stderr]    Compiling num-traits v0.2.15
[INFO] [stderr]    Compiling libc v0.2.134
[INFO] [stderr]    Compiling proc-macro2 v1.0.46
[INFO] [stderr]    Compiling quote v1.0.21
[INFO] [stderr]    Compiling unicode-ident v1.0.4
[INFO] [stderr]    Compiling num-integer v0.1.45
[INFO] [stderr]     Checking bytemuck v1.12.1
[INFO] [stderr]    Compiling syn v1.0.101
[INFO] [stderr]    Compiling num-rational v0.4.1
[INFO] [stderr]    Compiling typenum v1.15.0
[INFO] [stderr]     Checking safe_arch v0.6.0
[INFO] [stderr]     Checking ppv-lite86 v0.2.16
[INFO] [stderr]     Checking ahash v0.4.7
[INFO] [stderr]    Compiling paste v1.0.9
[INFO] [stderr]     Checking rawpointer v0.2.1
[INFO] [stderr]    Compiling libm v0.2.5
[INFO] [stderr]     Checking matrixmultiply v0.3.2
[INFO] [stderr]     Checking wide v0.7.4
[INFO] [stderr]     Checking hashbrown v0.9.1
[INFO] [stderr]     Checking forward_ref_generic v0.2.1
[INFO] [stderr]     Checking tgaimage v0.1.1
[INFO] [stderr]     Checking getrandom v0.2.7
[INFO] [stderr]     Checking wavefront v0.2.3
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking approx v0.5.1
[INFO] [stderr]     Checking num-complex v0.4.2
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking simba v0.7.2
[INFO] [stderr]    Compiling nalgebra-macros v0.1.0
[INFO] [stderr]     Checking nalgebra v0.31.1
[INFO] [stderr]     Checking r_tinyrenderer v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `libm`
[INFO] [stdout]  --> src/geometry.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use libm;
[INFO] [stdout]   |     ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `libm`
[INFO] [stdout]  --> src/geometry.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use libm;
[INFO] [stdout]   |     ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `geometry::Vec3`
[INFO] [stdout]  --> src/main.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use geometry::Vec3;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `geometry::Vec3`
[INFO] [stdout]  --> src/main.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use geometry::Vec3;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dim`
[INFO] [stdout]    --> src/geometry.rs:179:21
[INFO] [stdout]     |
[INFO] [stdout] 179 |     pub fn identity(dim: usize) -> Self {
[INFO] [stdout]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_dim`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dim`
[INFO] [stdout]    --> src/geometry.rs:179:21
[INFO] [stdout]     |
[INFO] [stdout] 179 |     pub fn identity(dim: usize) -> Self {
[INFO] [stdout]     |                     ^^^ help: if this is intentional, prefix it with an underscore: `_dim`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vertex_shader`
[INFO] [stdout]    --> src/main.rs:231:5
[INFO] [stdout]     |
[INFO] [stdout] 231 |     vertex_shader: &fn(&Vertex),
[INFO] [stdout]     |     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_vertex_shader`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fragment_shader`
[INFO] [stdout]    --> src/main.rs:232:5
[INFO] [stdout]     |
[INFO] [stdout] 232 |     fragment_shader: &fn(&Vector3<f64>,&TGAColor)
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_fragment_shader`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vertex_shader`
[INFO] [stdout]    --> src/main.rs:231:5
[INFO] [stdout]     |
[INFO] [stdout] 231 |     vertex_shader: &fn(&Vertex),
[INFO] [stdout]     |     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_vertex_shader`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `fragment_shader`
[INFO] [stdout]    --> src/main.rs:232:5
[INFO] [stdout]     |
[INFO] [stdout] 232 |     fragment_shader: &fn(&Vector3<f64>,&TGAColor)
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_fragment_shader`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Point` is never constructed
[INFO] [stdout]   --> src/main.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | struct Point<T> {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/main.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | / impl<T> Point<T>
[INFO] [stdout] 23 | | where
[INFO] [stdout] 24 | |     T: Copy,
[INFO] [stdout]    | |____________- associated function in this implementation
[INFO] [stdout] 25 |   {
[INFO] [stdout] 26 |       fn new(x: T, y: T) -> Self {
[INFO] [stdout]    |          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `line` is never used
[INFO] [stdout]   --> src/main.rs:31:4
[INFO] [stdout]    |
[INFO] [stdout] 31 | fn line(p0: &Point<usize>, p1: &Point<usize>, image: &mut TGAImage, color: &TGAColor) {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_triangle_with_lines` is never used
[INFO] [stdout]   --> src/main.rs:78:4
[INFO] [stdout]    |
[INFO] [stdout] 78 | fn draw_triangle_with_lines(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Triangle` is never used
[INFO] [stdout]   --> src/main.rs:90:6
[INFO] [stdout]    |
[INFO] [stdout] 90 | type Triangle<T> = Vec<Point<T>>; //[Point<T>; 3];
[INFO] [stdout]    |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `BoxCorners` is never used
[INFO] [stdout]   --> src/main.rs:91:6
[INFO] [stdout]    |
[INFO] [stdout] 91 | type BoxCorners<T> = [Point<T>; 2];
[INFO] [stdout]    |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bounding_box` is never used
[INFO] [stdout]   --> src/main.rs:93:4
[INFO] [stdout]    |
[INFO] [stdout] 93 | fn bounding_box(triangle: &Triangle<usize>) -> BoxCorners<usize> {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `barycentric_coords` is never used
[INFO] [stdout]    --> src/main.rs:114:4
[INFO] [stdout]     |
[INFO] [stdout] 114 | fn barycentric_coords(triangle: &Triangle<usize>, point: &Point<usize>) -> [f32; 3] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_triangle_barycentric` is never used
[INFO] [stdout]    --> src/main.rs:132:4
[INFO] [stdout]     |
[INFO] [stdout] 132 | fn draw_triangle_barycentric(triangle: &Triangle<usize>, image: &mut TGAImage, color: &TGAColor) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `barycentric3d` is never used
[INFO] [stdout]    --> src/main.rs:146:4
[INFO] [stdout]     |
[INFO] [stdout] 146 | fn barycentric3d(triangle: &Triangle3d, point: &Vector3<f64>) -> [f64; 3] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_triangle3d_with_shader` is never used
[INFO] [stdout]    --> src/main.rs:226:4
[INFO] [stdout]     |
[INFO] [stdout] 226 | fn draw_triangle3d_with_shader(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Interval` is never constructed
[INFO] [stdout]    --> src/geometry.rs:148:8
[INFO] [stdout]     |
[INFO] [stdout] 148 | struct Interval {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `transform` are never used
[INFO] [stdout]    --> src/geometry.rs:154:8
[INFO] [stdout]     |
[INFO] [stdout] 153 | impl Interval {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] 154 |     fn new(a: f32, b: f32) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     fn transform(&self, x: f32, J: &Interval) -> Result<f32, String> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Matrix` is never constructed
[INFO] [stdout]    --> src/geometry.rs:172:12
[INFO] [stdout]     |
[INFO] [stdout] 172 | pub struct Matrix<const N: usize, const M: usize> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `identity` is never used
[INFO] [stdout]    --> src/geometry.rs:179:12
[INFO] [stdout]     |
[INFO] [stdout] 178 | impl<const N: usize, const M: usize> Matrix<N, M> {
[INFO] [stdout]     | ------------------------------------------------- associated function in this implementation
[INFO] [stdout] 179 |     pub fn identity(dim: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Shader` is never used
[INFO] [stdout]  --> src/shaders.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub trait Shader {
[INFO] [stdout]   |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GouradShader` is never constructed
[INFO] [stdout]  --> src/shaders.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct GouradShader {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `J` should have a snake case name
[INFO] [stdout]    --> src/geometry.rs:158:33
[INFO] [stdout]     |
[INFO] [stdout] 158 |     fn transform(&self, x: f32, J: &Interval) -> Result<f32, String> {
[INFO] [stdout]     |                                 ^ help: convert the identifier to snake case: `j`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Point` is never constructed
[INFO] [stdout]   --> src/main.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | struct Point<T> {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/main.rs:26:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | / impl<T> Point<T>
[INFO] [stdout] 23 | | where
[INFO] [stdout] 24 | |     T: Copy,
[INFO] [stdout]    | |____________- associated function in this implementation
[INFO] [stdout] 25 |   {
[INFO] [stdout] 26 |       fn new(x: T, y: T) -> Self {
[INFO] [stdout]    |          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `line` is never used
[INFO] [stdout]   --> src/main.rs:31:4
[INFO] [stdout]    |
[INFO] [stdout] 31 | fn line(p0: &Point<usize>, p1: &Point<usize>, image: &mut TGAImage, color: &TGAColor) {
[INFO] [stdout]    |    ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_triangle_with_lines` is never used
[INFO] [stdout]   --> src/main.rs:78:4
[INFO] [stdout]    |
[INFO] [stdout] 78 | fn draw_triangle_with_lines(
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `Triangle` is never used
[INFO] [stdout]   --> src/main.rs:90:6
[INFO] [stdout]    |
[INFO] [stdout] 90 | type Triangle<T> = Vec<Point<T>>; //[Point<T>; 3];
[INFO] [stdout]    |      ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `BoxCorners` is never used
[INFO] [stdout]   --> src/main.rs:91:6
[INFO] [stdout]    |
[INFO] [stdout] 91 | type BoxCorners<T> = [Point<T>; 2];
[INFO] [stdout]    |      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bounding_box` is never used
[INFO] [stdout]   --> src/main.rs:93:4
[INFO] [stdout]    |
[INFO] [stdout] 93 | fn bounding_box(triangle: &Triangle<usize>) -> BoxCorners<usize> {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `barycentric_coords` is never used
[INFO] [stdout]    --> src/main.rs:114:4
[INFO] [stdout]     |
[INFO] [stdout] 114 | fn barycentric_coords(triangle: &Triangle<usize>, point: &Point<usize>) -> [f32; 3] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_triangle_barycentric` is never used
[INFO] [stdout]    --> src/main.rs:132:4
[INFO] [stdout]     |
[INFO] [stdout] 132 | fn draw_triangle_barycentric(triangle: &Triangle<usize>, image: &mut TGAImage, color: &TGAColor) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `barycentric3d` is never used
[INFO] [stdout]    --> src/main.rs:146:4
[INFO] [stdout]     |
[INFO] [stdout] 146 | fn barycentric3d(triangle: &Triangle3d, point: &Vector3<f64>) -> [f64; 3] {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `draw_triangle3d_with_shader` is never used
[INFO] [stdout]    --> src/main.rs:226:4
[INFO] [stdout]     |
[INFO] [stdout] 226 | fn draw_triangle3d_with_shader(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Interval` is never constructed
[INFO] [stdout]    --> src/geometry.rs:148:8
[INFO] [stdout]     |
[INFO] [stdout] 148 | struct Interval {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `transform` are never used
[INFO] [stdout]    --> src/geometry.rs:154:8
[INFO] [stdout]     |
[INFO] [stdout] 153 | impl Interval {
[INFO] [stdout]     | ------------- associated items in this implementation
[INFO] [stdout] 154 |     fn new(a: f32, b: f32) -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 158 |     fn transform(&self, x: f32, J: &Interval) -> Result<f32, String> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Matrix` is never constructed
[INFO] [stdout]    --> src/geometry.rs:172:12
[INFO] [stdout]     |
[INFO] [stdout] 172 | pub struct Matrix<const N: usize, const M: usize> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `identity` is never used
[INFO] [stdout]    --> src/geometry.rs:179:12
[INFO] [stdout]     |
[INFO] [stdout] 178 | impl<const N: usize, const M: usize> Matrix<N, M> {
[INFO] [stdout]     | ------------------------------------------------- associated function in this implementation
[INFO] [stdout] 179 |     pub fn identity(dim: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Shader` is never used
[INFO] [stdout]  --> src/shaders.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub trait Shader {
[INFO] [stdout]   |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GouradShader` is never constructed
[INFO] [stdout]  --> src/shaders.rs:9:12
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub struct GouradShader {
[INFO] [stdout]   |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `J` should have a snake case name
[INFO] [stdout]    --> src/geometry.rs:158:33
[INFO] [stdout]     |
[INFO] [stdout] 158 |     fn transform(&self, x: f32, J: &Interval) -> Result<f32, String> {
[INFO] [stdout]     |                                 ^ help: convert the identifier to snake case: `j`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 23.60s
[INFO] running `Command { std: "docker" "inspect" "11cb10e22e3679c94cc106b461fe366249910c2a74cfb557a84704d148a91d1b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "11cb10e22e3679c94cc106b461fe366249910c2a74cfb557a84704d148a91d1b", kill_on_drop: false }`
[INFO] [stdout] 11cb10e22e3679c94cc106b461fe366249910c2a74cfb557a84704d148a91d1b
