[INFO] updating cached repository perliedman/raytracing-in-one-weekend [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/perliedman/raytracing-in-one-weekend [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/perliedman/raytracing-in-one-weekend" "work/ex/clippy-test-run/sources/stable/gh/perliedman/raytracing-in-one-weekend"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/perliedman/raytracing-in-one-weekend'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/perliedman/raytracing-in-one-weekend" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/perliedman/raytracing-in-one-weekend"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/perliedman/raytracing-in-one-weekend'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] aa641d43e1540b05d2cfb500f8c4a0a64ec9f9f9 [INFO] sha for GitHub repo perliedman/raytracing-in-one-weekend: aa641d43e1540b05d2cfb500f8c4a0a64ec9f9f9 [INFO] validating manifest of perliedman/raytracing-in-one-weekend 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 perliedman/raytracing-in-one-weekend 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 perliedman/raytracing-in-one-weekend [INFO] finished frobbing perliedman/raytracing-in-one-weekend [INFO] frobbed toml for perliedman/raytracing-in-one-weekend written to work/ex/clippy-test-run/sources/stable/gh/perliedman/raytracing-in-one-weekend/Cargo.toml [INFO] started frobbing perliedman/raytracing-in-one-weekend [INFO] finished frobbing perliedman/raytracing-in-one-weekend [INFO] frobbed toml for perliedman/raytracing-in-one-weekend written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/perliedman/raytracing-in-one-weekend/Cargo.toml [INFO] crate perliedman/raytracing-in-one-weekend 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 perliedman/raytracing-in-one-weekend against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/perliedman/raytracing-in-one-weekend:/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] e7359695b5dc6d534d60916c64ee8d1a3b140f7c47ad54aabedce40edc6c0d1e [INFO] running `"docker" "start" "-a" "e7359695b5dc6d534d60916c64ee8d1a3b140f7c47ad54aabedce40edc6c0d1e"` [INFO] [stderr] Checking tobj v0.1.6 [INFO] [stderr] Checking termios v0.2.2 [INFO] [stderr] Checking clicolors-control v0.2.0 [INFO] [stderr] Checking num-iter v0.1.35 [INFO] [stderr] Checking clap v2.31.2 [INFO] [stderr] Checking rayon-core v1.4.0 [INFO] [stderr] Checking console v0.6.1 [INFO] [stderr] Checking png v0.11.0 [INFO] [stderr] Checking rayon v1.0.1 [INFO] [stderr] Checking indicatif v0.9.0 [INFO] [stderr] Checking rt-in-1-week v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/geometry/triangle.rs:70:9 [INFO] [stderr] | [INFO] [stderr] 70 | let p = r.point_at_parameter(t); [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: 5th binding whose name is just one char [INFO] [stderr] --> src/geometry/mod.rs:89:15 [INFO] [stderr] | [INFO] [stderr] 89 | let mut t = (-b - discriminant.sqrt()) / 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: 6th binding whose name is just one char [INFO] [stderr] --> src/geometry/mod.rs:92:13 [INFO] [stderr] | [INFO] [stderr] 92 | let p = r.point_at_parameter(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/geometry/mod.rs:107:13 [INFO] [stderr] | [INFO] [stderr] 107 | let p = r.point_at_parameter(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: 5th binding whose name is just one char [INFO] [stderr] --> src/geometry/triangle.rs:70:9 [INFO] [stderr] | [INFO] [stderr] 70 | let p = r.point_at_parameter(t); [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: 5th binding whose name is just one char [INFO] [stderr] --> src/geometry/mod.rs:89:15 [INFO] [stderr] | [INFO] [stderr] 89 | let mut t = (-b - discriminant.sqrt()) / 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: 6th binding whose name is just one char [INFO] [stderr] --> src/geometry/mod.rs:92:13 [INFO] [stderr] | [INFO] [stderr] 92 | let p = r.point_at_parameter(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/geometry/mod.rs:107:13 [INFO] [stderr] | [INFO] [stderr] 107 | let p = r.point_at_parameter(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: unneeded return statement [INFO] [stderr] --> src/geometry/triangle.rs:72:5 [INFO] [stderr] | [INFO] [stderr] 72 | / return Some(HitRecord { [INFO] [stderr] 73 | | u, [INFO] [stderr] 74 | | v, [INFO] [stderr] 75 | | t, [INFO] [stderr] ... | [INFO] [stderr] 78 | | material: &*self.material [INFO] [stderr] 79 | | }) [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 72 | Some(HitRecord { [INFO] [stderr] 73 | u, [INFO] [stderr] 74 | v, [INFO] [stderr] 75 | t, [INFO] [stderr] 76 | p, [INFO] [stderr] 77 | normal: self.normal, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/geometry/mod.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/geometry/mod.rs:161:5 [INFO] [stderr] | [INFO] [stderr] 161 | / return Some(HitRecord { [INFO] [stderr] 162 | | u: (x - self.x0) / (self.x1 - self.x0), [INFO] [stderr] 163 | | v: (y - self.y0) / (self.y1 - self.y0), [INFO] [stderr] 164 | | t, [INFO] [stderr] ... | [INFO] [stderr] 167 | | normal: Vec3::new(0.0, 0.0, 1.0) [INFO] [stderr] 168 | | }) [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 161 | Some(HitRecord { [INFO] [stderr] 162 | u: (x - self.x0) / (self.x1 - self.x0), [INFO] [stderr] 163 | v: (y - self.y0) / (self.y1 - self.y0), [INFO] [stderr] 164 | t, [INFO] [stderr] 165 | material: &*self.material, [INFO] [stderr] 166 | p: r.point_at_parameter(t), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/geometry/mod.rs:201:5 [INFO] [stderr] | [INFO] [stderr] 201 | / return Some(HitRecord { [INFO] [stderr] 202 | | u: (x - self.x0) / (self.x1 - self.x0), [INFO] [stderr] 203 | | v: (z - self.z0) / (self.z1 - self.z0), [INFO] [stderr] 204 | | t, [INFO] [stderr] ... | [INFO] [stderr] 207 | | normal: Vec3::new(0.0, 1.0, 0.0) [INFO] [stderr] 208 | | }) [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 201 | Some(HitRecord { [INFO] [stderr] 202 | u: (x - self.x0) / (self.x1 - self.x0), [INFO] [stderr] 203 | v: (z - self.z0) / (self.z1 - self.z0), [INFO] [stderr] 204 | t, [INFO] [stderr] 205 | material: &*self.material, [INFO] [stderr] 206 | p: r.point_at_parameter(t), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/geometry/mod.rs:241:5 [INFO] [stderr] | [INFO] [stderr] 241 | / return Some(HitRecord { [INFO] [stderr] 242 | | u: (y - self.y0) / (self.y1 - self.y0), [INFO] [stderr] 243 | | v: (z - self.z0) / (self.z1 - self.z0), [INFO] [stderr] 244 | | t, [INFO] [stderr] ... | [INFO] [stderr] 247 | | normal: Vec3::new(1.0, 0.0, 0.0) [INFO] [stderr] 248 | | }) [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 241 | Some(HitRecord { [INFO] [stderr] 242 | u: (y - self.y0) / (self.y1 - self.y0), [INFO] [stderr] 243 | v: (z - self.z0) / (self.z1 - self.z0), [INFO] [stderr] 244 | t, [INFO] [stderr] 245 | material: &*self.material, [INFO] [stderr] 246 | p: r.point_at_parameter(t), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/geometry/mod.rs:265:9 [INFO] [stderr] | [INFO] [stderr] 265 | return Some(hit); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(hit)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/geometry/mod.rs:326:9 [INFO] [stderr] | [INFO] [stderr] 326 | return Some(Aabb { min, max }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(Aabb { min, max })` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/bvh.rs:134:5 [INFO] [stderr] | [INFO] [stderr] 134 | return NodeId { index: next_index }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `NodeId { index: next_index }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/bvh.rs:147:5 [INFO] [stderr] | [INFO] [stderr] 147 | return NodeId { index: next_index }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `NodeId { index: next_index }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/renderer.rs:33:24 [INFO] [stderr] | [INFO] [stderr] 33 | col += color(&r, *&scene, 0); [INFO] [stderr] | ^^^^^^^ help: try this: `scene` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::deref_addrof)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/renderer.rs:70:7 [INFO] [stderr] | [INFO] [stderr] 70 | return emitted; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `emitted` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/renderer.rs:72:13 [INFO] [stderr] | [INFO] [stderr] 72 | None => return scene.environment.color(&r) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `scene.environment.color(&r)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/material.rs:75:7 [INFO] [stderr] | [INFO] [stderr] 75 | / return Some(Scatter { [INFO] [stderr] 76 | | color: self.albedo.value(0.0, 0.0, &rec.p), [INFO] [stderr] 77 | | ray: Some(Ray::new(rec.p, target - rec.p)) [INFO] [stderr] 78 | | }); [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 75 | Some(Scatter { [INFO] [stderr] 76 | color: self.albedo.value(0.0, 0.0, &rec.p), [INFO] [stderr] 77 | ray: Some(Ray::new(rec.p, target - rec.p)) [INFO] [stderr] 78 | }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/material.rs:91:5 [INFO] [stderr] | [INFO] [stderr] 91 | / return Some(Scatter { [INFO] [stderr] 92 | | color: self.albedo, [INFO] [stderr] 93 | | ray: if scattered.direction.dot(rec.normal) > 0.0 { Some(scattered) } else { None } [INFO] [stderr] 94 | | }) [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 91 | Some(Scatter { [INFO] [stderr] 92 | color: self.albedo, [INFO] [stderr] 93 | ray: if scattered.direction.dot(rec.normal) > 0.0 { Some(scattered) } else { None } [INFO] [stderr] 94 | }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `unit_vector` [INFO] [stderr] --> src/main.rs:25:18 [INFO] [stderr] | [INFO] [stderr] 25 | use vec3::{Vec3, unit_vector}; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ray::Ray` [INFO] [stderr] --> src/main.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | use ray::Ray; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/geometry/triangle.rs:72:5 [INFO] [stderr] | [INFO] [stderr] 72 | / return Some(HitRecord { [INFO] [stderr] 73 | | u, [INFO] [stderr] 74 | | v, [INFO] [stderr] 75 | | t, [INFO] [stderr] ... | [INFO] [stderr] 78 | | material: &*self.material [INFO] [stderr] 79 | | }) [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 72 | Some(HitRecord { [INFO] [stderr] 73 | u, [INFO] [stderr] 74 | v, [INFO] [stderr] 75 | t, [INFO] [stderr] 76 | p, [INFO] [stderr] 77 | normal: self.normal, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/geometry/mod.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/geometry/mod.rs:161:5 [INFO] [stderr] | [INFO] [stderr] 161 | / return Some(HitRecord { [INFO] [stderr] 162 | | u: (x - self.x0) / (self.x1 - self.x0), [INFO] [stderr] 163 | | v: (y - self.y0) / (self.y1 - self.y0), [INFO] [stderr] 164 | | t, [INFO] [stderr] ... | [INFO] [stderr] 167 | | normal: Vec3::new(0.0, 0.0, 1.0) [INFO] [stderr] 168 | | }) [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 161 | Some(HitRecord { [INFO] [stderr] 162 | u: (x - self.x0) / (self.x1 - self.x0), [INFO] [stderr] 163 | v: (y - self.y0) / (self.y1 - self.y0), [INFO] [stderr] 164 | t, [INFO] [stderr] 165 | material: &*self.material, [INFO] [stderr] 166 | p: r.point_at_parameter(t), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/geometry/mod.rs:201:5 [INFO] [stderr] | [INFO] [stderr] 201 | / return Some(HitRecord { [INFO] [stderr] 202 | | u: (x - self.x0) / (self.x1 - self.x0), [INFO] [stderr] 203 | | v: (z - self.z0) / (self.z1 - self.z0), [INFO] [stderr] 204 | | t, [INFO] [stderr] ... | [INFO] [stderr] 207 | | normal: Vec3::new(0.0, 1.0, 0.0) [INFO] [stderr] 208 | | }) [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 201 | Some(HitRecord { [INFO] [stderr] 202 | u: (x - self.x0) / (self.x1 - self.x0), [INFO] [stderr] 203 | v: (z - self.z0) / (self.z1 - self.z0), [INFO] [stderr] 204 | t, [INFO] [stderr] 205 | material: &*self.material, [INFO] [stderr] 206 | p: r.point_at_parameter(t), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/geometry/mod.rs:241:5 [INFO] [stderr] | [INFO] [stderr] 241 | / return Some(HitRecord { [INFO] [stderr] 242 | | u: (y - self.y0) / (self.y1 - self.y0), [INFO] [stderr] 243 | | v: (z - self.z0) / (self.z1 - self.z0), [INFO] [stderr] 244 | | t, [INFO] [stderr] ... | [INFO] [stderr] 247 | | normal: Vec3::new(1.0, 0.0, 0.0) [INFO] [stderr] 248 | | }) [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 241 | Some(HitRecord { [INFO] [stderr] 242 | u: (y - self.y0) / (self.y1 - self.y0), [INFO] [stderr] 243 | v: (z - self.z0) / (self.z1 - self.z0), [INFO] [stderr] 244 | t, [INFO] [stderr] 245 | material: &*self.material, [INFO] [stderr] 246 | p: r.point_at_parameter(t), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/geometry/mod.rs:265:9 [INFO] [stderr] | [INFO] [stderr] 265 | return Some(hit); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(hit)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/geometry/mod.rs:326:9 [INFO] [stderr] | [INFO] [stderr] 326 | return Some(Aabb { min, max }) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(Aabb { min, max })` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/bvh.rs:134:5 [INFO] [stderr] | [INFO] [stderr] 134 | return NodeId { index: next_index }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `NodeId { index: next_index }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/bvh.rs:147:5 [INFO] [stderr] | [INFO] [stderr] 147 | return NodeId { index: next_index }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `NodeId { index: next_index }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/renderer.rs:33:24 [INFO] [stderr] | [INFO] [stderr] 33 | col += color(&r, *&scene, 0); [INFO] [stderr] | ^^^^^^^ help: try this: `scene` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::deref_addrof)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/renderer.rs:70:7 [INFO] [stderr] | [INFO] [stderr] 70 | return emitted; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `emitted` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/renderer.rs:72:13 [INFO] [stderr] | [INFO] [stderr] 72 | None => return scene.environment.color(&r) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `scene.environment.color(&r)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/material.rs:75:7 [INFO] [stderr] | [INFO] [stderr] 75 | / return Some(Scatter { [INFO] [stderr] 76 | | color: self.albedo.value(0.0, 0.0, &rec.p), [INFO] [stderr] 77 | | ray: Some(Ray::new(rec.p, target - rec.p)) [INFO] [stderr] 78 | | }); [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 75 | Some(Scatter { [INFO] [stderr] 76 | color: self.albedo.value(0.0, 0.0, &rec.p), [INFO] [stderr] 77 | ray: Some(Ray::new(rec.p, target - rec.p)) [INFO] [stderr] 78 | }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/material.rs:91:5 [INFO] [stderr] | [INFO] [stderr] 91 | / return Some(Scatter { [INFO] [stderr] 92 | | color: self.albedo, [INFO] [stderr] 93 | | ray: if scattered.direction.dot(rec.normal) > 0.0 { Some(scattered) } else { None } [INFO] [stderr] 94 | | }) [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 91 | Some(Scatter { [INFO] [stderr] 92 | color: self.albedo, [INFO] [stderr] 93 | ray: if scattered.direction.dot(rec.normal) > 0.0 { Some(scattered) } else { None } [INFO] [stderr] 94 | }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `unit_vector` [INFO] [stderr] --> src/main.rs:25:18 [INFO] [stderr] | [INFO] [stderr] 25 | use vec3::{Vec3, unit_vector}; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ray::Ray` [INFO] [stderr] --> src/main.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | use ray::Ray; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `r_in` [INFO] [stderr] --> src/material.rs:154:21 [INFO] [stderr] | [INFO] [stderr] 154 | fn scatter(&self, r_in: &Ray, rec: &HitRecord) -> Option { [INFO] [stderr] | ^^^^ help: consider using `_r_in` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `identity` [INFO] [stderr] --> src/mat44.rs:9:3 [INFO] [stderr] | [INFO] [stderr] 9 | pub fn identity() -> Mat44 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `translate` [INFO] [stderr] --> src/mat44.rs:17:3 [INFO] [stderr] | [INFO] [stderr] 17 | pub fn translate(displacement: Vec3) -> Mat44 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `rotate` [INFO] [stderr] --> src/mat44.rs:25:3 [INFO] [stderr] | [INFO] [stderr] 25 | pub fn rotate(angle: f32, axis: Vec3) -> Mat44 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `inverse` [INFO] [stderr] --> src/mat44.rs:39:3 [INFO] [stderr] | [INFO] [stderr] 39 | pub fn inverse(&self) -> Mat44 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `XyRect` [INFO] [stderr] --> src/geometry/mod.rs:132:1 [INFO] [stderr] | [INFO] [stderr] 132 | pub struct XyRect { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `XzRect` [INFO] [stderr] --> src/geometry/mod.rs:172:1 [INFO] [stderr] | [INFO] [stderr] 172 | pub struct XzRect { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `YzRect` [INFO] [stderr] --> src/geometry/mod.rs:212:1 [INFO] [stderr] | [INFO] [stderr] 212 | pub struct YzRect { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `FlipNormals` [INFO] [stderr] --> src/geometry/mod.rs:252:1 [INFO] [stderr] | [INFO] [stderr] 252 | pub struct FlipNormals { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `new_box` [INFO] [stderr] --> src/geometry/mod.rs:272:1 [INFO] [stderr] | [INFO] [stderr] 272 | pub fn new_box(p0: Vec3, p1: Vec3, material: Arc) -> Vec> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Transform` [INFO] [stderr] --> src/geometry/mod.rs:283:1 [INFO] [stderr] | [INFO] [stderr] 283 | pub struct Transform { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/geometry/mod.rs:290:3 [INFO] [stderr] | [INFO] [stderr] 290 | pub fn new(hitable: Box, transform: Mat44) -> Transform { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `ConstantMedium` [INFO] [stderr] --> src/geometry/mod.rs:349:1 [INFO] [stderr] | [INFO] [stderr] 349 | pub struct ConstantMedium { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/geometry/mod.rs:356:3 [INFO] [stderr] | [INFO] [stderr] 356 | pub fn new(boundary: Box, density: f32, a: Box) -> ConstantMedium { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `DiffuseLight` [INFO] [stderr] --> src/material.rs:135:1 [INFO] [stderr] | [INFO] [stderr] 135 | pub struct DiffuseLight { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Isotropic` [INFO] [stderr] --> src/material.rs:149:1 [INFO] [stderr] | [INFO] [stderr] 149 | pub struct Isotropic { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Void` [INFO] [stderr] --> src/scene.rs:20:1 [INFO] [stderr] | [INFO] [stderr] 20 | pub struct Void { } [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `render_cornell` [INFO] [stderr] --> src/main.rs:145:1 [INFO] [stderr] | [INFO] [stderr] 145 | fn render_cornell(nx: usize, ny: usize, ns: usize, max_ray_depth: i32) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `cornell_box` [INFO] [stderr] --> src/main.rs:214:1 [INFO] [stderr] | [INFO] [stderr] 214 | fn cornell_box() -> Vec> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/mat44.rs:41:19 [INFO] [stderr] | [INFO] [stderr] 41 | let mut tmp = self.clone(); [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*self` [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: unused variable: `r_in` [INFO] [stderr] --> src/material.rs:154:21 [INFO] [stderr] | [INFO] [stderr] 154 | fn scatter(&self, r_in: &Ray, rec: &HitRecord) -> Option { [INFO] [stderr] | ^^^^ help: consider using `_r_in` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/geometry/mod.rs:51:8 [INFO] [stderr] | [INFO] [stderr] 51 | if self.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `self`. [INFO] [stderr] --> src/geometry/mod.rs:62:14 [INFO] [stderr] | [INFO] [stderr] 62 | for i in 1..self.len() { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 62 | for in self.iter().skip(1) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/geometry/mod.rs:442:10 [INFO] [stderr] | [INFO] [stderr] 442 | if mesh.normals.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!mesh.normals.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/bvh.rs:22:19 [INFO] [stderr] | [INFO] [stderr] 22 | hitable: Option<&'a Box> [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `&'a Hitable` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/bvh.rs:35:7 [INFO] [stderr] | [INFO] [stderr] 35 | / match node.hitable { [INFO] [stderr] 36 | | Some(ref hitable) => return hitable.hit(r, tmin, tmax), [INFO] [stderr] 37 | | None => { } [INFO] [stderr] 38 | | } [INFO] [stderr] | |_______^ help: try this: `if let Some(ref hitable) = node.hitable { return hitable.hit(r, tmin, tmax) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/bvh.rs:51:7 [INFO] [stderr] | [INFO] [stderr] 51 | / match hit_left { [INFO] [stderr] 52 | | Some(left) => { [INFO] [stderr] 53 | | match hit_right { [INFO] [stderr] 54 | | Some(right) => if left.t < right.t { return hit_left; } else { return hit_right; }, [INFO] [stderr] ... | [INFO] [stderr] 58 | | None => {} [INFO] [stderr] 59 | | } [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 51 | if let Some(left) = hit_left { [INFO] [stderr] 52 | match hit_right { [INFO] [stderr] 53 | Some(right) => if left.t < right.t { return hit_left; } else { return hit_right; }, [INFO] [stderr] 54 | None => return hit_left [INFO] [stderr] 55 | } [INFO] [stderr] 56 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/bvh.rs:61:7 [INFO] [stderr] | [INFO] [stderr] 61 | / match hit_right { [INFO] [stderr] 62 | | Some(_right) => return hit_right, [INFO] [stderr] 63 | | None => {} [INFO] [stderr] 64 | | } [INFO] [stderr] | |_______^ help: try this: `if let Some(_right) = hit_right { return hit_right }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/bvh.rs:124:35 [INFO] [stderr] | [INFO] [stderr] 124 | fn new_leaf(&mut self, hitable: &'a Box) -> NodeId { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `&'a Hitable` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/bvh.rs:166:21 [INFO] [stderr] | [INFO] [stderr] 166 | fn box_x_compare(a: &Box, b: &Box) -> Ordering { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Hitable` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/bvh.rs:166:39 [INFO] [stderr] | [INFO] [stderr] 166 | fn box_x_compare(a: &Box, b: &Box) -> Ordering { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Hitable` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/bvh.rs:180:21 [INFO] [stderr] | [INFO] [stderr] 180 | fn box_y_compare(a: &Box, b: &Box) -> Ordering { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Hitable` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/bvh.rs:180:39 [INFO] [stderr] | [INFO] [stderr] 180 | fn box_y_compare(a: &Box, b: &Box) -> Ordering { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Hitable` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/bvh.rs:194:21 [INFO] [stderr] | [INFO] [stderr] 194 | fn box_z_compare(a: &Box, b: &Box) -> Ordering { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Hitable` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/bvh.rs:194:39 [INFO] [stderr] | [INFO] [stderr] 194 | fn box_z_compare(a: &Box, b: &Box) -> Ordering { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Hitable` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: use of a blacklisted/placeholder name `bar` [INFO] [stderr] --> src/renderer.rs:19:7 [INFO] [stderr] | [INFO] [stderr] 19 | let bar = &Box::new(ProgressBar::new((nx * ny / 64) as u64)); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::blacklisted_name)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blacklisted_name [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/renderer.rs:60:9 [INFO] [stderr] | [INFO] [stderr] 60 | / match rec.material.scatter(&r, &rec) { [INFO] [stderr] 61 | | Some(scatter) => { [INFO] [stderr] 62 | | if let Some(bounce) = scatter.ray { [INFO] [stderr] 63 | | return emitted + scatter.color * color(&bounce, scene, depth + 1) [INFO] [stderr] ... | [INFO] [stderr] 66 | | None => {} [INFO] [stderr] 67 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 60 | if let Some(scatter) = rec.material.scatter(&r, &rec) { [INFO] [stderr] 61 | if let Some(bounce) = scatter.ray { [INFO] [stderr] 62 | return emitted + scatter.color * color(&bounce, scene, depth + 1) [INFO] [stderr] 63 | } [INFO] [stderr] 64 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/material.rs:106:5 [INFO] [stderr] | [INFO] [stderr] 106 | / let cosine: f32; [INFO] [stderr] 107 | | [INFO] [stderr] 108 | | if r_in.direction.dot(rec.normal) > 0.0 { [INFO] [stderr] 109 | | outward_normal = -rec.normal; [INFO] [stderr] ... | [INFO] [stderr] 115 | | cosine = -r_in.direction.dot(rec.normal) / r_in.direction.length(); [INFO] [stderr] 116 | | } [INFO] [stderr] | |_____^ help: it is more idiomatic to write: `let cosine = if r_in.direction.dot(rec.normal) > 0.0 { ..; self.ref_idx * r_in.direction.dot(rec.normal) / r_in.direction.length() } else { ..; -r_in.direction.dot(rec.normal) / r_in.direction.length() };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/material.rs:120:5 [INFO] [stderr] | [INFO] [stderr] 120 | / match refract(&r_in.direction, &outward_normal, ni_over_nt) { [INFO] [stderr] 121 | | Some(refraction) => { [INFO] [stderr] 122 | | // eprintln!("refraction"); [INFO] [stderr] 123 | | if rand::random::() > schlick(cosine, self.ref_idx) { [INFO] [stderr] ... | [INFO] [stderr] 127 | | None => { } [INFO] [stderr] 128 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 120 | if let Some(refraction) = refract(&r_in.direction, &outward_normal, ni_over_nt) { [INFO] [stderr] 121 | // eprintln!("refraction"); [INFO] [stderr] 122 | if rand::random::() > schlick(cosine, self.ref_idx) { [INFO] [stderr] 123 | return Some(Scatter { color: albedo, ray: Some(Ray::new(rec.p, refraction)) }); [INFO] [stderr] 124 | } [INFO] [stderr] 125 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/main.rs:90:7 [INFO] [stderr] | [INFO] [stderr] 90 | let ref mut w = BufWriter::new(file); [INFO] [stderr] | ----^^^^^^^^^------------------------ help: try: `let w = &mut BufWriter::new(file);` [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: method is never used: `identity` [INFO] [stderr] --> src/mat44.rs:9:3 [INFO] [stderr] | [INFO] [stderr] 9 | pub fn identity() -> Mat44 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `translate` [INFO] [stderr] --> src/mat44.rs:17:3 [INFO] [stderr] | [INFO] [stderr] 17 | pub fn translate(displacement: Vec3) -> Mat44 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `rotate` [INFO] [stderr] --> src/mat44.rs:25:3 [INFO] [stderr] | [INFO] [stderr] 25 | pub fn rotate(angle: f32, axis: Vec3) -> Mat44 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `inverse` [INFO] [stderr] --> src/mat44.rs:39:3 [INFO] [stderr] | [INFO] [stderr] 39 | pub fn inverse(&self) -> Mat44 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `XyRect` [INFO] [stderr] --> src/geometry/mod.rs:132:1 [INFO] [stderr] | [INFO] [stderr] 132 | pub struct XyRect { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `XzRect` [INFO] [stderr] --> src/geometry/mod.rs:172:1 [INFO] [stderr] | [INFO] [stderr] 172 | pub struct XzRect { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `YzRect` [INFO] [stderr] --> src/geometry/mod.rs:212:1 [INFO] [stderr] | [INFO] [stderr] 212 | pub struct YzRect { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `FlipNormals` [INFO] [stderr] --> src/geometry/mod.rs:252:1 [INFO] [stderr] | [INFO] [stderr] 252 | pub struct FlipNormals { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `new_box` [INFO] [stderr] --> src/geometry/mod.rs:272:1 [INFO] [stderr] | [INFO] [stderr] 272 | pub fn new_box(p0: Vec3, p1: Vec3, material: Arc) -> Vec> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Transform` [INFO] [stderr] --> src/geometry/mod.rs:283:1 [INFO] [stderr] | [INFO] [stderr] 283 | pub struct Transform { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/geometry/mod.rs:290:3 [INFO] [stderr] | [INFO] [stderr] 290 | pub fn new(hitable: Box, transform: Mat44) -> Transform { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `ConstantMedium` [INFO] [stderr] --> src/geometry/mod.rs:349:1 [INFO] [stderr] | [INFO] [stderr] 349 | pub struct ConstantMedium { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/geometry/mod.rs:356:3 [INFO] [stderr] | [INFO] [stderr] 356 | pub fn new(boundary: Box, density: f32, a: Box) -> ConstantMedium { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `DiffuseLight` [INFO] [stderr] --> src/material.rs:135:1 [INFO] [stderr] | [INFO] [stderr] 135 | pub struct DiffuseLight { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Isotropic` [INFO] [stderr] --> src/material.rs:149:1 [INFO] [stderr] | [INFO] [stderr] 149 | pub struct Isotropic { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Void` [INFO] [stderr] --> src/scene.rs:20:1 [INFO] [stderr] | [INFO] [stderr] 20 | pub struct Void { } [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `render_cornell` [INFO] [stderr] --> src/main.rs:145:1 [INFO] [stderr] | [INFO] [stderr] 145 | fn render_cornell(nx: usize, ny: usize, ns: usize, max_ray_depth: i32) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `cornell_box` [INFO] [stderr] --> src/main.rs:214:1 [INFO] [stderr] | [INFO] [stderr] 214 | fn cornell_box() -> Vec> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/vec3.rs:202:5 [INFO] [stderr] | [INFO] [stderr] 202 | assert_eq!(0.0, c.x()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/vec3.rs:202:5 [INFO] [stderr] | [INFO] [stderr] 202 | assert_eq!(0.0, c.x()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/vec3.rs:203:5 [INFO] [stderr] | [INFO] [stderr] 203 | assert_eq!(0.0, c.y()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/vec3.rs:203:5 [INFO] [stderr] | [INFO] [stderr] 203 | assert_eq!(0.0, c.y()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/vec3.rs:204:5 [INFO] [stderr] | [INFO] [stderr] 204 | assert_eq!(1.0, c.z()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/vec3.rs:204:5 [INFO] [stderr] | [INFO] [stderr] 204 | assert_eq!(1.0, c.z()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/vec3.rs:213:5 [INFO] [stderr] | [INFO] [stderr] 213 | assert_eq!(-3.0, c.x()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/vec3.rs:213:5 [INFO] [stderr] | [INFO] [stderr] 213 | assert_eq!(-3.0, c.x()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/vec3.rs:214:5 [INFO] [stderr] | [INFO] [stderr] 214 | assert_eq!(6.0, c.y()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/vec3.rs:214:5 [INFO] [stderr] | [INFO] [stderr] 214 | assert_eq!(6.0, c.y()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/vec3.rs:215:5 [INFO] [stderr] | [INFO] [stderr] 215 | assert_eq!(-3.0, c.z()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/vec3.rs:215:5 [INFO] [stderr] | [INFO] [stderr] 215 | assert_eq!(-3.0, c.z()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/mat44.rs:41:19 [INFO] [stderr] | [INFO] [stderr] 41 | let mut tmp = self.clone(); [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*self` [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] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/mat44.rs:149:9 [INFO] [stderr] | [INFO] [stderr] 149 | assert_eq!(expected.0[i][j], result.0[i][j]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/mat44.rs:149:9 [INFO] [stderr] | [INFO] [stderr] 149 | assert_eq!(expected.0[i][j], result.0[i][j]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/geometry/mod.rs:51:8 [INFO] [stderr] | [INFO] [stderr] 51 | if self.len() < 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `self`. [INFO] [stderr] --> src/geometry/mod.rs:62:14 [INFO] [stderr] | [INFO] [stderr] 62 | for i in 1..self.len() { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 62 | for in self.iter().skip(1) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/geometry/mod.rs:442:10 [INFO] [stderr] | [INFO] [stderr] 442 | if mesh.normals.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!mesh.normals.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/bvh.rs:22:19 [INFO] [stderr] | [INFO] [stderr] 22 | hitable: Option<&'a Box> [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `&'a Hitable` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/bvh.rs:35:7 [INFO] [stderr] | [INFO] [stderr] 35 | / match node.hitable { [INFO] [stderr] 36 | | Some(ref hitable) => return hitable.hit(r, tmin, tmax), [INFO] [stderr] 37 | | None => { } [INFO] [stderr] 38 | | } [INFO] [stderr] | |_______^ help: try this: `if let Some(ref hitable) = node.hitable { return hitable.hit(r, tmin, tmax) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/bvh.rs:51:7 [INFO] [stderr] | [INFO] [stderr] 51 | / match hit_left { [INFO] [stderr] 52 | | Some(left) => { [INFO] [stderr] 53 | | match hit_right { [INFO] [stderr] 54 | | Some(right) => if left.t < right.t { return hit_left; } else { return hit_right; }, [INFO] [stderr] ... | [INFO] [stderr] 58 | | None => {} [INFO] [stderr] 59 | | } [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 51 | if let Some(left) = hit_left { [INFO] [stderr] 52 | match hit_right { [INFO] [stderr] 53 | Some(right) => if left.t < right.t { return hit_left; } else { return hit_right; }, [INFO] [stderr] 54 | None => return hit_left [INFO] [stderr] 55 | } [INFO] [stderr] 56 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/bvh.rs:61:7 [INFO] [stderr] | [INFO] [stderr] 61 | / match hit_right { [INFO] [stderr] 62 | | Some(_right) => return hit_right, [INFO] [stderr] 63 | | None => {} [INFO] [stderr] 64 | | } [INFO] [stderr] | |_______^ help: try this: `if let Some(_right) = hit_right { return hit_right }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/bvh.rs:124:35 [INFO] [stderr] | [INFO] [stderr] 124 | fn new_leaf(&mut self, hitable: &'a Box) -> NodeId { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `&'a Hitable` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/bvh.rs:166:21 [INFO] [stderr] | [INFO] [stderr] 166 | fn box_x_compare(a: &Box, b: &Box) -> Ordering { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Hitable` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/bvh.rs:166:39 [INFO] [stderr] | [INFO] [stderr] 166 | fn box_x_compare(a: &Box, b: &Box) -> Ordering { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Hitable` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/bvh.rs:180:21 [INFO] [stderr] | [INFO] [stderr] 180 | fn box_y_compare(a: &Box, b: &Box) -> Ordering { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Hitable` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/bvh.rs:180:39 [INFO] [stderr] | [INFO] [stderr] 180 | fn box_y_compare(a: &Box, b: &Box) -> Ordering { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Hitable` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/bvh.rs:194:21 [INFO] [stderr] | [INFO] [stderr] 194 | fn box_z_compare(a: &Box, b: &Box) -> Ordering { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Hitable` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/bvh.rs:194:39 [INFO] [stderr] | [INFO] [stderr] 194 | fn box_z_compare(a: &Box, b: &Box) -> Ordering { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&Hitable` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: use of a blacklisted/placeholder name `bar` [INFO] [stderr] --> src/renderer.rs:19:7 [INFO] [stderr] | [INFO] [stderr] 19 | let bar = &Box::new(ProgressBar::new((nx * ny / 64) as u64)); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::blacklisted_name)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#blacklisted_name [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/renderer.rs:60:9 [INFO] [stderr] | [INFO] [stderr] 60 | / match rec.material.scatter(&r, &rec) { [INFO] [stderr] 61 | | Some(scatter) => { [INFO] [stderr] 62 | | if let Some(bounce) = scatter.ray { [INFO] [stderr] 63 | | return emitted + scatter.color * color(&bounce, scene, depth + 1) [INFO] [stderr] ... | [INFO] [stderr] 66 | | None => {} [INFO] [stderr] 67 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 60 | if let Some(scatter) = rec.material.scatter(&r, &rec) { [INFO] [stderr] 61 | if let Some(bounce) = scatter.ray { [INFO] [stderr] 62 | return emitted + scatter.color * color(&bounce, scene, depth + 1) [INFO] [stderr] 63 | } [INFO] [stderr] 64 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/material.rs:106:5 [INFO] [stderr] | [INFO] [stderr] 106 | / let cosine: f32; [INFO] [stderr] 107 | | [INFO] [stderr] 108 | | if r_in.direction.dot(rec.normal) > 0.0 { [INFO] [stderr] 109 | | outward_normal = -rec.normal; [INFO] [stderr] ... | [INFO] [stderr] 115 | | cosine = -r_in.direction.dot(rec.normal) / r_in.direction.length(); [INFO] [stderr] 116 | | } [INFO] [stderr] | |_____^ help: it is more idiomatic to write: `let cosine = if r_in.direction.dot(rec.normal) > 0.0 { ..; self.ref_idx * r_in.direction.dot(rec.normal) / r_in.direction.length() } else { ..; -r_in.direction.dot(rec.normal) / r_in.direction.length() };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/material.rs:120:5 [INFO] [stderr] | [INFO] [stderr] 120 | / match refract(&r_in.direction, &outward_normal, ni_over_nt) { [INFO] [stderr] 121 | | Some(refraction) => { [INFO] [stderr] 122 | | // eprintln!("refraction"); [INFO] [stderr] 123 | | if rand::random::() > schlick(cosine, self.ref_idx) { [INFO] [stderr] ... | [INFO] [stderr] 127 | | None => { } [INFO] [stderr] 128 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 120 | if let Some(refraction) = refract(&r_in.direction, &outward_normal, ni_over_nt) { [INFO] [stderr] 121 | // eprintln!("refraction"); [INFO] [stderr] 122 | if rand::random::() > schlick(cosine, self.ref_idx) { [INFO] [stderr] 123 | return Some(Scatter { color: albedo, ray: Some(Ray::new(rec.p, refraction)) }); [INFO] [stderr] 124 | } [INFO] [stderr] 125 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/main.rs:90:7 [INFO] [stderr] | [INFO] [stderr] 90 | let ref mut w = BufWriter::new(file); [INFO] [stderr] | ----^^^^^^^^^------------------------ help: try: `let w = &mut BufWriter::new(file);` [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] error: aborting due to 7 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `rt-in-1-week`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "e7359695b5dc6d534d60916c64ee8d1a3b140f7c47ad54aabedce40edc6c0d1e"` [INFO] running `"docker" "rm" "-f" "e7359695b5dc6d534d60916c64ee8d1a3b140f7c47ad54aabedce40edc6c0d1e"` [INFO] [stdout] e7359695b5dc6d534d60916c64ee8d1a3b140f7c47ad54aabedce40edc6c0d1e