[INFO] updating cached repository HibikineKage/ray-trace [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/HibikineKage/ray-trace [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/HibikineKage/ray-trace" "work/ex/clippy-test-run/sources/stable/gh/HibikineKage/ray-trace"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/HibikineKage/ray-trace'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/HibikineKage/ray-trace" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/HibikineKage/ray-trace"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/HibikineKage/ray-trace'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 056d0d96e9b6c6eb91ff1cb5a21d05ecd3fcc3ad [INFO] sha for GitHub repo HibikineKage/ray-trace: 056d0d96e9b6c6eb91ff1cb5a21d05ecd3fcc3ad [INFO] validating manifest of HibikineKage/ray-trace on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of HibikineKage/ray-trace on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing HibikineKage/ray-trace [INFO] finished frobbing HibikineKage/ray-trace [INFO] frobbed toml for HibikineKage/ray-trace written to work/ex/clippy-test-run/sources/stable/gh/HibikineKage/ray-trace/Cargo.toml [INFO] started frobbing HibikineKage/ray-trace [INFO] finished frobbing HibikineKage/ray-trace [INFO] frobbed toml for HibikineKage/ray-trace written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/HibikineKage/ray-trace/Cargo.toml [INFO] crate HibikineKage/ray-trace has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting HibikineKage/ray-trace against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/HibikineKage/ray-trace:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] c3906130114f9a6d9f71e9d3ceb1d42b393d92df272166f6d80af82fc73ad80e [INFO] running `"docker" "start" "-a" "c3906130114f9a6d9f71e9d3ceb1d42b393d92df272166f6d80af82fc73ad80e"` [INFO] [stderr] Checking rayon-core v1.4.0 [INFO] [stderr] Checking nalgebra v0.14.0 [INFO] [stderr] Checking rayon v1.0.0 [INFO] [stderr] Checking jpeg-decoder v0.1.14 [INFO] [stderr] Checking image v0.18.0 [INFO] [stderr] Checking ray-trace v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ray.rs:11:16 [INFO] [stderr] | [INFO] [stderr] 11 | Self { t: t, p: p, n: n } [INFO] [stderr] | ^^^^ help: replace it with: `t` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ray.rs:11:22 [INFO] [stderr] | [INFO] [stderr] 11 | Self { t: t, p: p, n: n } [INFO] [stderr] | ^^^^ help: replace it with: `p` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ray.rs:11:28 [INFO] [stderr] | [INFO] [stderr] 11 | Self { t: t, p: p, n: n } [INFO] [stderr] | ^^^^ help: replace it with: `n` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ray.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | origin: origin, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `origin` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ray.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | direction: direction, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `direction` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/sphere.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | let d = b * b - 4f32 * a * c; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/sphere.rs:33:25 [INFO] [stderr] | [INFO] [stderr] 33 | let t = (-b - root) / (2.0f32 * a); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/sphere.rs:35:29 [INFO] [stderr] | [INFO] [stderr] 35 | let p = r.at(&t); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/sphere.rs:40:25 [INFO] [stderr] | [INFO] [stderr] 40 | let t = (-b + root) / (2.0f32 * a); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/sphere.rs:42:29 [INFO] [stderr] | [INFO] [stderr] 42 | let p = r.at(&t); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:126:13 [INFO] [stderr] | [INFO] [stderr] 126 | camera: camera, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `camera` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:165:13 [INFO] [stderr] | [INFO] [stderr] 165 | samples: samples, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `samples` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ray.rs:11:16 [INFO] [stderr] | [INFO] [stderr] 11 | Self { t: t, p: p, n: n } [INFO] [stderr] | ^^^^ help: replace it with: `t` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ray.rs:11:22 [INFO] [stderr] | [INFO] [stderr] 11 | Self { t: t, p: p, n: n } [INFO] [stderr] | ^^^^ help: replace it with: `p` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ray.rs:11:28 [INFO] [stderr] | [INFO] [stderr] 11 | Self { t: t, p: p, n: n } [INFO] [stderr] | ^^^^ help: replace it with: `n` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ray.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | origin: origin, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `origin` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ray.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | direction: direction, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `direction` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/sphere.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | let d = b * b - 4f32 * a * c; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/sphere.rs:33:25 [INFO] [stderr] | [INFO] [stderr] 33 | let t = (-b - root) / (2.0f32 * a); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/sphere.rs:35:29 [INFO] [stderr] | [INFO] [stderr] 35 | let p = r.at(&t); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/sphere.rs:40:25 [INFO] [stderr] | [INFO] [stderr] 40 | let t = (-b + root) / (2.0f32 * a); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 7th binding whose name is just one char [INFO] [stderr] --> src/sphere.rs:42:29 [INFO] [stderr] | [INFO] [stderr] 42 | let p = r.at(&t); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:126:13 [INFO] [stderr] | [INFO] [stderr] 126 | camera: camera, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `camera` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:165:13 [INFO] [stderr] | [INFO] [stderr] 165 | samples: samples, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `samples` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::f32::consts::LOG2_E as LOG2` [INFO] [stderr] --> src/main.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | use std::f32::consts::LOG2_E as LOG2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::f32::MAX as F32_MAX` [INFO] [stderr] --> src/main.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | use std::f32::MAX as F32_MAX; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::f32::MIN as F32_MIN` [INFO] [stderr] --> src/main.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | use std::f32::MIN as F32_MIN; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `rayon::prelude::*` [INFO] [stderr] --> src/main.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | use rayon::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `PI2` [INFO] [stderr] --> src/main.rs:18:1 [INFO] [stderr] | [INFO] [stderr] 18 | const PI2: f32 = PI * 2f32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `RECIP_PI2` [INFO] [stderr] --> src/main.rs:19:1 [INFO] [stderr] | [INFO] [stderr] 19 | const RECIP_PI2: f32 = RECIP_PI / 2f32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `EPSILON` [INFO] [stderr] --> src/main.rs:20:1 [INFO] [stderr] | [INFO] [stderr] 20 | const EPSILON: f32 = 1e-6; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `GAMMA_FACTOR` [INFO] [stderr] --> src/main.rs:21:1 [INFO] [stderr] | [INFO] [stderr] 21 | const GAMMA_FACTOR: f32 = 2.2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `origin` [INFO] [stderr] --> src/camera.rs:46:5 [INFO] [stderr] | [INFO] [stderr] 46 | pub fn origin(&mut self, origin: Vector3) -> &mut CameraUVWBuilder { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `CameraLookAtBuilder` [INFO] [stderr] --> src/camera.rs:57:1 [INFO] [stderr] | [INFO] [stderr] 57 | pub struct CameraLookAtBuilder { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/camera.rs:66:5 [INFO] [stderr] | [INFO] [stderr] 66 | pub fn new() -> CameraLookAtBuilder { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `lookfrom` [INFO] [stderr] --> src/camera.rs:75:5 [INFO] [stderr] | [INFO] [stderr] 75 | pub fn lookfrom(&mut self, lookfrom: Vector3) -> &mut Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `lookat` [INFO] [stderr] --> src/camera.rs:79:5 [INFO] [stderr] | [INFO] [stderr] 79 | pub fn lookat(&mut self, lookat: Vector3) -> &mut Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `vup` [INFO] [stderr] --> src/camera.rs:83:5 [INFO] [stderr] | [INFO] [stderr] 83 | pub fn vup(&mut self, vup: Vector3) -> &mut Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `vfov` [INFO] [stderr] --> src/camera.rs:87:5 [INFO] [stderr] | [INFO] [stderr] 87 | pub fn vfov(&mut self, vfov: f32) -> &mut Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `aspect` [INFO] [stderr] --> src/camera.rs:91:5 [INFO] [stderr] | [INFO] [stderr] 91 | pub fn aspect(&mut self, aspect: f32) -> &mut Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `finalize` [INFO] [stderr] --> src/camera.rs:95:5 [INFO] [stderr] | [INFO] [stderr] 95 | pub fn finalize(&self) -> Camera { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `pow3` [INFO] [stderr] --> src/main.rs:38:1 [INFO] [stderr] | [INFO] [stderr] 38 | fn pow3(x: &f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `pow4` [INFO] [stderr] --> src/main.rs:42:1 [INFO] [stderr] | [INFO] [stderr] 42 | fn pow4(x: &f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `pow5` [INFO] [stderr] --> src/main.rs:46:1 [INFO] [stderr] | [INFO] [stderr] 46 | fn pow5(x: &f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `clamp` [INFO] [stderr] --> src/main.rs:50:1 [INFO] [stderr] | [INFO] [stderr] 50 | fn clamp(x: &f32, min: &f32, max: &f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `saturate` [INFO] [stderr] --> src/main.rs:58:1 [INFO] [stderr] | [INFO] [stderr] 58 | fn saturate(x: &f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `recip` [INFO] [stderr] --> src/main.rs:62:1 [INFO] [stderr] | [INFO] [stderr] 62 | fn recip(x: &f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `mix` [INFO] [stderr] --> src/main.rs:66:1 [INFO] [stderr] | [INFO] [stderr] 66 | fn mix(a: &f32, b: &f32, t: &f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `step` [INFO] [stderr] --> src/main.rs:70:1 [INFO] [stderr] | [INFO] [stderr] 70 | fn step(edge: &f32, x: &f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `smoothstep` [INFO] [stderr] --> src/main.rs:77:1 [INFO] [stderr] | [INFO] [stderr] 77 | fn smoothstep(a: &f32, b: &f32, t: &f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `radians` [INFO] [stderr] --> src/main.rs:87:1 [INFO] [stderr] | [INFO] [stderr] 87 | fn radians(deg: &f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `degrees` [INFO] [stderr] --> src/main.rs:91:1 [INFO] [stderr] | [INFO] [stderr] 91 | fn degrees(rad: &f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/camera.rs:10:30 [INFO] [stderr] | [INFO] [stderr] 10 | pub fn get_ray(&self, u: &f32, v: &f32) -> Ray { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/camera.rs:10:39 [INFO] [stderr] | [INFO] [stderr] 10 | pub fn get_ray(&self, u: &f32, v: &f32) -> Ray { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: variable `halfH` should have a snake case name such as `half_h` [INFO] [stderr] --> src/camera.rs:96:13 [INFO] [stderr] | [INFO] [stderr] 96 | let halfH = (self.vfov.to_radians() / 2f32).tan(); [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable `halfW` should have a snake case name such as `half_w` [INFO] [stderr] --> src/camera.rs:97:13 [INFO] [stderr] | [INFO] [stderr] 97 | let halfW = self.aspect * halfH; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ray.rs:27:25 [INFO] [stderr] | [INFO] [stderr] 27 | pub fn at(&self, t: &f32) -> Vector3 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/sphere.rs:28:9 [INFO] [stderr] | [INFO] [stderr] 28 | / match d > 0f32 { [INFO] [stderr] 29 | | false => None, [INFO] [stderr] 30 | | true => { [INFO] [stderr] 31 | | let root = d.sqrt(); [INFO] [stderr] ... | [INFO] [stderr] 47 | | } [INFO] [stderr] 48 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 28 | if d > 0f32 { [INFO] [stderr] 29 | let root = d.sqrt(); [INFO] [stderr] 30 | { [INFO] [stderr] 31 | let t = (-b - root) / (2.0f32 * a); [INFO] [stderr] 32 | if t < t1 && t > t0 { [INFO] [stderr] 33 | let p = r.at(&t); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:34:12 [INFO] [stderr] | [INFO] [stderr] 34 | fn pow2(x: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:38:12 [INFO] [stderr] | [INFO] [stderr] 38 | fn pow3(x: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:42:12 [INFO] [stderr] | [INFO] [stderr] 42 | fn pow4(x: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:46:12 [INFO] [stderr] | [INFO] [stderr] 46 | fn pow5(x: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:50:13 [INFO] [stderr] | [INFO] [stderr] 50 | fn clamp(x: &f32, min: &f32, max: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:50:24 [INFO] [stderr] | [INFO] [stderr] 50 | fn clamp(x: &f32, min: &f32, max: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:50:35 [INFO] [stderr] | [INFO] [stderr] 50 | fn clamp(x: &f32, min: &f32, max: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/main.rs:52:25 [INFO] [stderr] | [INFO] [stderr] 52 | _ if x > min => min.clone(), [INFO] [stderr] | ^^^^^^^^^^^ help: try dereferencing it: `*min` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/main.rs:53:25 [INFO] [stderr] | [INFO] [stderr] 53 | _ if x < max => max.clone(), [INFO] [stderr] | ^^^^^^^^^^^ help: try dereferencing it: `*max` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/main.rs:54:14 [INFO] [stderr] | [INFO] [stderr] 54 | _ => x.clone(), [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:58:16 [INFO] [stderr] | [INFO] [stderr] 58 | fn saturate(x: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | fn recip(x: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:66:11 [INFO] [stderr] | [INFO] [stderr] 66 | fn mix(a: &f32, b: &f32, t: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:66:20 [INFO] [stderr] | [INFO] [stderr] 66 | fn mix(a: &f32, b: &f32, t: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:66:29 [INFO] [stderr] | [INFO] [stderr] 66 | fn mix(a: &f32, b: &f32, t: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:70:15 [INFO] [stderr] | [INFO] [stderr] 70 | fn step(edge: &f32, x: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:70:24 [INFO] [stderr] | [INFO] [stderr] 70 | fn step(edge: &f32, x: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/main.rs:71:5 [INFO] [stderr] | [INFO] [stderr] 71 | / match x < edge { [INFO] [stderr] 72 | | true => 0f32, [INFO] [stderr] 73 | | false => 1f32, [INFO] [stderr] 74 | | } [INFO] [stderr] | |_____^ help: consider using an if/else expression: `if x < edge { 0f32 } else { 1f32 }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:77:18 [INFO] [stderr] | [INFO] [stderr] 77 | fn smoothstep(a: &f32, b: &f32, t: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:77:27 [INFO] [stderr] | [INFO] [stderr] 77 | fn smoothstep(a: &f32, b: &f32, t: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:77:36 [INFO] [stderr] | [INFO] [stderr] 77 | fn smoothstep(a: &f32, b: &f32, t: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/main.rs:78:5 [INFO] [stderr] | [INFO] [stderr] 78 | / match a >= b { [INFO] [stderr] 79 | | true => 0f32, [INFO] [stderr] 80 | | false => { [INFO] [stderr] 81 | | let x = saturate(&((t - a) / (b - a))); [INFO] [stderr] 82 | | x * x * (3f32 - 2f32 * t) [INFO] [stderr] 83 | | } [INFO] [stderr] 84 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 78 | if a >= b { 0f32 } else { [INFO] [stderr] 79 | let x = saturate(&((t - a) / (b - a))); [INFO] [stderr] 80 | x * x * (3f32 - 2f32 * t) [INFO] [stderr] 81 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:87:17 [INFO] [stderr] | [INFO] [stderr] 87 | fn radians(deg: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:91:17 [INFO] [stderr] | [INFO] [stderr] 91 | fn degrees(rad: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:95:12 [INFO] [stderr] | [INFO] [stderr] 95 | fn lerp(t: &f32, a: &Vector3, b: &Vector3) -> Vector3 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/main.rs:186:13 [INFO] [stderr] | [INFO] [stderr] 186 | let ref mut f = File::create("image.png").unwrap(); [INFO] [stderr] | ----^^^^^^^^^-------------------------------------- help: try: `let f = &mut File::create("image.png").unwrap();` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::f32::consts::LOG2_E as LOG2` [INFO] [stderr] --> src/main.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | use std::f32::consts::LOG2_E as LOG2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::f32::MAX as F32_MAX` [INFO] [stderr] --> src/main.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | use std::f32::MAX as F32_MAX; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::f32::MIN as F32_MIN` [INFO] [stderr] --> src/main.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | use std::f32::MIN as F32_MIN; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `rayon::prelude::*` [INFO] [stderr] --> src/main.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | use rayon::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `PI2` [INFO] [stderr] --> src/main.rs:18:1 [INFO] [stderr] | [INFO] [stderr] 18 | const PI2: f32 = PI * 2f32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `RECIP_PI2` [INFO] [stderr] --> src/main.rs:19:1 [INFO] [stderr] | [INFO] [stderr] 19 | const RECIP_PI2: f32 = RECIP_PI / 2f32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `EPSILON` [INFO] [stderr] --> src/main.rs:20:1 [INFO] [stderr] | [INFO] [stderr] 20 | const EPSILON: f32 = 1e-6; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `GAMMA_FACTOR` [INFO] [stderr] --> src/main.rs:21:1 [INFO] [stderr] | [INFO] [stderr] 21 | const GAMMA_FACTOR: f32 = 2.2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `origin` [INFO] [stderr] --> src/camera.rs:46:5 [INFO] [stderr] | [INFO] [stderr] 46 | pub fn origin(&mut self, origin: Vector3) -> &mut CameraUVWBuilder { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `CameraLookAtBuilder` [INFO] [stderr] --> src/camera.rs:57:1 [INFO] [stderr] | [INFO] [stderr] 57 | pub struct CameraLookAtBuilder { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/camera.rs:66:5 [INFO] [stderr] | [INFO] [stderr] 66 | pub fn new() -> CameraLookAtBuilder { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `lookfrom` [INFO] [stderr] --> src/camera.rs:75:5 [INFO] [stderr] | [INFO] [stderr] 75 | pub fn lookfrom(&mut self, lookfrom: Vector3) -> &mut Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `lookat` [INFO] [stderr] --> src/camera.rs:79:5 [INFO] [stderr] | [INFO] [stderr] 79 | pub fn lookat(&mut self, lookat: Vector3) -> &mut Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `vup` [INFO] [stderr] --> src/camera.rs:83:5 [INFO] [stderr] | [INFO] [stderr] 83 | pub fn vup(&mut self, vup: Vector3) -> &mut Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `vfov` [INFO] [stderr] --> src/camera.rs:87:5 [INFO] [stderr] | [INFO] [stderr] 87 | pub fn vfov(&mut self, vfov: f32) -> &mut Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `aspect` [INFO] [stderr] --> src/camera.rs:91:5 [INFO] [stderr] | [INFO] [stderr] 91 | pub fn aspect(&mut self, aspect: f32) -> &mut Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `finalize` [INFO] [stderr] --> src/camera.rs:95:5 [INFO] [stderr] | [INFO] [stderr] 95 | pub fn finalize(&self) -> Camera { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `pow3` [INFO] [stderr] --> src/main.rs:38:1 [INFO] [stderr] | [INFO] [stderr] 38 | fn pow3(x: &f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `pow4` [INFO] [stderr] --> src/main.rs:42:1 [INFO] [stderr] | [INFO] [stderr] 42 | fn pow4(x: &f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `pow5` [INFO] [stderr] --> src/main.rs:46:1 [INFO] [stderr] | [INFO] [stderr] 46 | fn pow5(x: &f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `clamp` [INFO] [stderr] --> src/main.rs:50:1 [INFO] [stderr] | [INFO] [stderr] 50 | fn clamp(x: &f32, min: &f32, max: &f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `saturate` [INFO] [stderr] --> src/main.rs:58:1 [INFO] [stderr] | [INFO] [stderr] 58 | fn saturate(x: &f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `recip` [INFO] [stderr] --> src/main.rs:62:1 [INFO] [stderr] | [INFO] [stderr] 62 | fn recip(x: &f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `mix` [INFO] [stderr] --> src/main.rs:66:1 [INFO] [stderr] | [INFO] [stderr] 66 | fn mix(a: &f32, b: &f32, t: &f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `step` [INFO] [stderr] --> src/main.rs:70:1 [INFO] [stderr] | [INFO] [stderr] 70 | fn step(edge: &f32, x: &f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `smoothstep` [INFO] [stderr] --> src/main.rs:77:1 [INFO] [stderr] | [INFO] [stderr] 77 | fn smoothstep(a: &f32, b: &f32, t: &f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `radians` [INFO] [stderr] --> src/main.rs:87:1 [INFO] [stderr] | [INFO] [stderr] 87 | fn radians(deg: &f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `degrees` [INFO] [stderr] --> src/main.rs:91:1 [INFO] [stderr] | [INFO] [stderr] 91 | fn degrees(rad: &f32) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/camera.rs:10:30 [INFO] [stderr] | [INFO] [stderr] 10 | pub fn get_ray(&self, u: &f32, v: &f32) -> Ray { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/camera.rs:10:39 [INFO] [stderr] | [INFO] [stderr] 10 | pub fn get_ray(&self, u: &f32, v: &f32) -> Ray { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: variable `halfH` should have a snake case name such as `half_h` [INFO] [stderr] --> src/camera.rs:96:13 [INFO] [stderr] | [INFO] [stderr] 96 | let halfH = (self.vfov.to_radians() / 2f32).tan(); [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable `halfW` should have a snake case name such as `half_w` [INFO] [stderr] --> src/camera.rs:97:13 [INFO] [stderr] | [INFO] [stderr] 97 | let halfW = self.aspect * halfH; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ray.rs:27:25 [INFO] [stderr] | [INFO] [stderr] 27 | pub fn at(&self, t: &f32) -> Vector3 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/sphere.rs:28:9 [INFO] [stderr] | [INFO] [stderr] 28 | / match d > 0f32 { [INFO] [stderr] 29 | | false => None, [INFO] [stderr] 30 | | true => { [INFO] [stderr] 31 | | let root = d.sqrt(); [INFO] [stderr] ... | [INFO] [stderr] 47 | | } [INFO] [stderr] 48 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 28 | if d > 0f32 { [INFO] [stderr] 29 | let root = d.sqrt(); [INFO] [stderr] 30 | { [INFO] [stderr] 31 | let t = (-b - root) / (2.0f32 * a); [INFO] [stderr] 32 | if t < t1 && t > t0 { [INFO] [stderr] 33 | let p = r.at(&t); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:34:12 [INFO] [stderr] | [INFO] [stderr] 34 | fn pow2(x: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:38:12 [INFO] [stderr] | [INFO] [stderr] 38 | fn pow3(x: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:42:12 [INFO] [stderr] | [INFO] [stderr] 42 | fn pow4(x: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:46:12 [INFO] [stderr] | [INFO] [stderr] 46 | fn pow5(x: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:50:13 [INFO] [stderr] | [INFO] [stderr] 50 | fn clamp(x: &f32, min: &f32, max: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:50:24 [INFO] [stderr] | [INFO] [stderr] 50 | fn clamp(x: &f32, min: &f32, max: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:50:35 [INFO] [stderr] | [INFO] [stderr] 50 | fn clamp(x: &f32, min: &f32, max: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/main.rs:52:25 [INFO] [stderr] | [INFO] [stderr] 52 | _ if x > min => min.clone(), [INFO] [stderr] | ^^^^^^^^^^^ help: try dereferencing it: `*min` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/main.rs:53:25 [INFO] [stderr] | [INFO] [stderr] 53 | _ if x < max => max.clone(), [INFO] [stderr] | ^^^^^^^^^^^ help: try dereferencing it: `*max` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/main.rs:54:14 [INFO] [stderr] | [INFO] [stderr] 54 | _ => x.clone(), [INFO] [stderr] | ^^^^^^^^^ help: try dereferencing it: `*x` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:58:16 [INFO] [stderr] | [INFO] [stderr] 58 | fn saturate(x: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | fn recip(x: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:66:11 [INFO] [stderr] | [INFO] [stderr] 66 | fn mix(a: &f32, b: &f32, t: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:66:20 [INFO] [stderr] | [INFO] [stderr] 66 | fn mix(a: &f32, b: &f32, t: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:66:29 [INFO] [stderr] | [INFO] [stderr] 66 | fn mix(a: &f32, b: &f32, t: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:70:15 [INFO] [stderr] | [INFO] [stderr] 70 | fn step(edge: &f32, x: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:70:24 [INFO] [stderr] | [INFO] [stderr] 70 | fn step(edge: &f32, x: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/main.rs:71:5 [INFO] [stderr] | [INFO] [stderr] 71 | / match x < edge { [INFO] [stderr] 72 | | true => 0f32, [INFO] [stderr] 73 | | false => 1f32, [INFO] [stderr] 74 | | } [INFO] [stderr] | |_____^ help: consider using an if/else expression: `if x < edge { 0f32 } else { 1f32 }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:77:18 [INFO] [stderr] | [INFO] [stderr] 77 | fn smoothstep(a: &f32, b: &f32, t: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:77:27 [INFO] [stderr] | [INFO] [stderr] 77 | fn smoothstep(a: &f32, b: &f32, t: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:77:36 [INFO] [stderr] | [INFO] [stderr] 77 | fn smoothstep(a: &f32, b: &f32, t: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/main.rs:78:5 [INFO] [stderr] | [INFO] [stderr] 78 | / match a >= b { [INFO] [stderr] 79 | | true => 0f32, [INFO] [stderr] 80 | | false => { [INFO] [stderr] 81 | | let x = saturate(&((t - a) / (b - a))); [INFO] [stderr] 82 | | x * x * (3f32 - 2f32 * t) [INFO] [stderr] 83 | | } [INFO] [stderr] 84 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 78 | if a >= b { 0f32 } else { [INFO] [stderr] 79 | let x = saturate(&((t - a) / (b - a))); [INFO] [stderr] 80 | x * x * (3f32 - 2f32 * t) [INFO] [stderr] 81 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:87:17 [INFO] [stderr] | [INFO] [stderr] 87 | fn radians(deg: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:91:17 [INFO] [stderr] | [INFO] [stderr] 91 | fn degrees(rad: &f32) -> f32 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:95:12 [INFO] [stderr] | [INFO] [stderr] 95 | fn lerp(t: &f32, a: &Vector3, b: &Vector3) -> Vector3 { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/main.rs:186:13 [INFO] [stderr] | [INFO] [stderr] 186 | let ref mut f = File::create("image.png").unwrap(); [INFO] [stderr] | ----^^^^^^^^^-------------------------------------- help: try: `let f = &mut File::create("image.png").unwrap();` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 34.89s [INFO] running `"docker" "inspect" "c3906130114f9a6d9f71e9d3ceb1d42b393d92df272166f6d80af82fc73ad80e"` [INFO] running `"docker" "rm" "-f" "c3906130114f9a6d9f71e9d3ceb1d42b393d92df272166f6d80af82fc73ad80e"` [INFO] [stdout] c3906130114f9a6d9f71e9d3ceb1d42b393d92df272166f6d80af82fc73ad80e