[INFO] updating cached repository ericlass/xtracer [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/ericlass/xtracer [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/ericlass/xtracer" "work/ex/clippy-test-run/sources/stable/gh/ericlass/xtracer"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/ericlass/xtracer'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/ericlass/xtracer" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/ericlass/xtracer"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/ericlass/xtracer'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 4a00897856ee4d6a0a041626852aead32c5a1b64 [INFO] sha for GitHub repo ericlass/xtracer: 4a00897856ee4d6a0a041626852aead32c5a1b64 [INFO] validating manifest of ericlass/xtracer 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 ericlass/xtracer 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 ericlass/xtracer [INFO] finished frobbing ericlass/xtracer [INFO] frobbed toml for ericlass/xtracer written to work/ex/clippy-test-run/sources/stable/gh/ericlass/xtracer/Cargo.toml [INFO] started frobbing ericlass/xtracer [INFO] finished frobbing ericlass/xtracer [INFO] frobbed toml for ericlass/xtracer written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/ericlass/xtracer/Cargo.toml [INFO] crate ericlass/xtracer 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 ericlass/xtracer against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-6/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/ericlass/xtracer:/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] 10ef30f359d40aae33f88cc6fa4be18c0eb11877237861aa39e35b3a66e89f36 [INFO] running `"docker" "start" "-a" "10ef30f359d40aae33f88cc6fa4be18c0eb11877237861aa39e35b3a66e89f36"` [INFO] [stderr] Checking xtracer v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/linear.rs:211:9 [INFO] [stderr] | [INFO] [stderr] 211 | let w = self.w; [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/linear.rs:358:7 [INFO] [stderr] | [INFO] [stderr] 358 | let a = Vector4F::dot(&e, &dnorm); [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/linear.rs:359:7 [INFO] [stderr] | [INFO] [stderr] 359 | let f = (r * r - le * le + a * a).sqrt(); [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/linear.rs:366:7 [INFO] [stderr] | [INFO] [stderr] 366 | let t = a - f; [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/linear.rs:383:5 [INFO] [stderr] | [INFO] [stderr] 383 | normal: normal, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `normal` [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/settings.rs:342:9 [INFO] [stderr] | [INFO] [stderr] 342 | center: center, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `center` [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/settings.rs:343:9 [INFO] [stderr] | [INFO] [stderr] 343 | radius: radius, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `radius` [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/shade.rs:78:7 [INFO] [stderr] | [INFO] [stderr] 78 | let x = 2.0 * ndoth / vdoth; [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/shade.rs:79:7 [INFO] [stderr] | [INFO] [stderr] 79 | let g = f64::min(1.0, f64::min(x * vdotn, x * ldotn)); [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/shade.rs:81:7 [INFO] [stderr] | [INFO] [stderr] 81 | let d = beckmann(ndoth, rough); [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: 8th binding whose name is just one char [INFO] [stderr] --> src/shade.rs:83:7 [INFO] [stderr] | [INFO] [stderr] 83 | let f = (1.0 - vdotn).powf(fresnel); [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/linear.rs:211:9 [INFO] [stderr] | [INFO] [stderr] 211 | let w = self.w; [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/linear.rs:358:7 [INFO] [stderr] | [INFO] [stderr] 358 | let a = Vector4F::dot(&e, &dnorm); [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/linear.rs:359:7 [INFO] [stderr] | [INFO] [stderr] 359 | let f = (r * r - le * le + a * a).sqrt(); [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/linear.rs:366:7 [INFO] [stderr] | [INFO] [stderr] 366 | let t = a - f; [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/linear.rs:383:5 [INFO] [stderr] | [INFO] [stderr] 383 | normal: normal, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `normal` [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/settings.rs:342:9 [INFO] [stderr] | [INFO] [stderr] 342 | center: center, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `center` [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/settings.rs:343:9 [INFO] [stderr] | [INFO] [stderr] 343 | radius: radius, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `radius` [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/shade.rs:78:7 [INFO] [stderr] | [INFO] [stderr] 78 | let x = 2.0 * ndoth / vdoth; [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/shade.rs:79:7 [INFO] [stderr] | [INFO] [stderr] 79 | let g = f64::min(1.0, f64::min(x * vdotn, x * ldotn)); [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/shade.rs:81:7 [INFO] [stderr] | [INFO] [stderr] 81 | let d = beckmann(ndoth, rough); [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: 8th binding whose name is just one char [INFO] [stderr] --> src/shade.rs:83:7 [INFO] [stderr] | [INFO] [stderr] 83 | let f = (1.0 - vdotn).powf(fresnel); [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: long literal lacking separators [INFO] [stderr] --> src/linear.rs:10:17 [INFO] [stderr] | [INFO] [stderr] 10 | const PI: f64 = 3.1415926535897932384626433; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider: `3.141_592_653_589_793_238_462_643_3` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/linear.rs:470:8 [INFO] [stderr] | [INFO] [stderr] 470 | else { [INFO] [stderr] | ________^ [INFO] [stderr] 471 | | if absy > absz { [INFO] [stderr] 472 | | u0 = p.x - p0.x; [INFO] [stderr] 473 | | u1 = p1.x - p0.x; [INFO] [stderr] ... | [INFO] [stderr] 488 | | } [INFO] [stderr] 489 | | } [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 470 | else if absy > absz { [INFO] [stderr] 471 | u0 = p.x - p0.x; [INFO] [stderr] 472 | u1 = p1.x - p0.x; [INFO] [stderr] 473 | u2 = p2.x - p0.x; [INFO] [stderr] 474 | [INFO] [stderr] 475 | v0 = p.z - p0.z; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/obj.rs:144:3 [INFO] [stderr] | [INFO] [stderr] 144 | / if parts.len() >= 2 { [INFO] [stderr] 145 | | if parts[1].len() > 0 { [INFO] [stderr] 146 | | ti = parts[1].parse().unwrap(); [INFO] [stderr] 147 | | } [INFO] [stderr] 148 | | } [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 144 | if parts.len() >= 2 && parts[1].len() > 0 { [INFO] [stderr] 145 | ti = parts[1].parse().unwrap(); [INFO] [stderr] 146 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/obj.rs:149:3 [INFO] [stderr] | [INFO] [stderr] 149 | / if parts.len() >= 3 { [INFO] [stderr] 150 | | if parts[2].len() > 0 { [INFO] [stderr] 151 | | ni = parts[2].parse().unwrap(); [INFO] [stderr] 152 | | } [INFO] [stderr] 153 | | } [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 149 | if parts.len() >= 3 && parts[2].len() > 0 { [INFO] [stderr] 150 | ni = parts[2].parse().unwrap(); [INFO] [stderr] 151 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/random.rs:4:17 [INFO] [stderr] | [INFO] [stderr] 4 | const PI: f64 = 3.1415926535897932384626433; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider: `3.141_592_653_589_793_238_462_643_3` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/shade.rs:3:17 [INFO] [stderr] | [INFO] [stderr] 3 | const PI: f64 = 3.1415926535897932384626433; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider: `3.141_592_653_589_793_238_462_643_3` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/shade.rs:4:16 [INFO] [stderr] | [INFO] [stderr] 4 | const E: f64 = 2.718281828459045; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider: `2.718_281_828_459_045` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/shade.rs:57:3 [INFO] [stderr] | [INFO] [stderr] 57 | dif [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/shade.rs:55:13 [INFO] [stderr] | [INFO] [stderr] 55 | let dif = ct_x * (on_x + on_y * don); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/shade.rs:77:24 [INFO] [stderr] | [INFO] [stderr] 77 | let vdoth = f64::max(0.000001, Vector4F::dot(v, &h)); [INFO] [stderr] | ^^^^^^^^ help: consider: `0.000_001` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/shade.rs:85:44 [INFO] [stderr] | [INFO] [stderr] 85 | g * f * d / f64::max(PI * vdotn * ldotn, 0.000001) [INFO] [stderr] | ^^^^^^^^ help: consider: `0.000_001` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/stopwatch.rs:23:38 [INFO] [stderr] | [INFO] [stderr] 23 | (self.end - self.start) as f64 / 1000000.0 [INFO] [stderr] | ^^^^^^^^^ help: consider: `1_000_000.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:28:26 [INFO] [stderr] | [INFO] [stderr] 28 | const HALF_SECOND: u64 = 500000000; [INFO] [stderr] | ^^^^^^^^^ help: consider: `500_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/linear.rs:10:17 [INFO] [stderr] | [INFO] [stderr] 10 | const PI: f64 = 3.1415926535897932384626433; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider: `3.141_592_653_589_793_238_462_643_3` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/linear.rs:470:8 [INFO] [stderr] | [INFO] [stderr] 470 | else { [INFO] [stderr] | ________^ [INFO] [stderr] 471 | | if absy > absz { [INFO] [stderr] 472 | | u0 = p.x - p0.x; [INFO] [stderr] 473 | | u1 = p1.x - p0.x; [INFO] [stderr] ... | [INFO] [stderr] 488 | | } [INFO] [stderr] 489 | | } [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 470 | else if absy > absz { [INFO] [stderr] 471 | u0 = p.x - p0.x; [INFO] [stderr] 472 | u1 = p1.x - p0.x; [INFO] [stderr] 473 | u2 = p2.x - p0.x; [INFO] [stderr] 474 | [INFO] [stderr] 475 | v0 = p.z - p0.z; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/obj.rs:144:3 [INFO] [stderr] | [INFO] [stderr] 144 | / if parts.len() >= 2 { [INFO] [stderr] 145 | | if parts[1].len() > 0 { [INFO] [stderr] 146 | | ti = parts[1].parse().unwrap(); [INFO] [stderr] 147 | | } [INFO] [stderr] 148 | | } [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 144 | if parts.len() >= 2 && parts[1].len() > 0 { [INFO] [stderr] 145 | ti = parts[1].parse().unwrap(); [INFO] [stderr] 146 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/obj.rs:149:3 [INFO] [stderr] | [INFO] [stderr] 149 | / if parts.len() >= 3 { [INFO] [stderr] 150 | | if parts[2].len() > 0 { [INFO] [stderr] 151 | | ni = parts[2].parse().unwrap(); [INFO] [stderr] 152 | | } [INFO] [stderr] 153 | | } [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 149 | if parts.len() >= 3 && parts[2].len() > 0 { [INFO] [stderr] 150 | ni = parts[2].parse().unwrap(); [INFO] [stderr] 151 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/random.rs:4:17 [INFO] [stderr] | [INFO] [stderr] 4 | const PI: f64 = 3.1415926535897932384626433; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider: `3.141_592_653_589_793_238_462_643_3` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/shade.rs:3:17 [INFO] [stderr] | [INFO] [stderr] 3 | const PI: f64 = 3.1415926535897932384626433; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider: `3.141_592_653_589_793_238_462_643_3` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/shade.rs:4:16 [INFO] [stderr] | [INFO] [stderr] 4 | const E: f64 = 2.718281828459045; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider: `2.718_281_828_459_045` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/shade.rs:57:3 [INFO] [stderr] | [INFO] [stderr] 57 | dif [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/shade.rs:55:13 [INFO] [stderr] | [INFO] [stderr] 55 | let dif = ct_x * (on_x + on_y * don); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/shade.rs:77:24 [INFO] [stderr] | [INFO] [stderr] 77 | let vdoth = f64::max(0.000001, Vector4F::dot(v, &h)); [INFO] [stderr] | ^^^^^^^^ help: consider: `0.000_001` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/shade.rs:85:44 [INFO] [stderr] | [INFO] [stderr] 85 | g * f * d / f64::max(PI * vdotn * ldotn, 0.000001) [INFO] [stderr] | ^^^^^^^^ help: consider: `0.000_001` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/stopwatch.rs:23:38 [INFO] [stderr] | [INFO] [stderr] 23 | (self.end - self.start) as f64 / 1000000.0 [INFO] [stderr] | ^^^^^^^^^ help: consider: `1_000_000.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:28:26 [INFO] [stderr] | [INFO] [stderr] 28 | const HALF_SECOND: u64 = 500000000; [INFO] [stderr] | ^^^^^^^^^ help: consider: `500_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unused variable: `alb` [INFO] [stderr] --> src/shade.rs:23:79 [INFO] [stderr] | [INFO] [stderr] 23 | pub fn shade_oren_nayar(l: &Vector4F, n: &Vector4F, v: &Vector4F, rough: f64, alb: f64) -> f64 { [INFO] [stderr] | ^^^ help: consider using `_alb` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: field is never used: `rand_seed` [INFO] [stderr] --> src/random.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | rand_seed: u32 [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `random` [INFO] [stderr] --> src/random.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | pub fn random (&mut self) -> u32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `shade_lambert` [INFO] [stderr] --> src/shade.rs:6:1 [INFO] [stderr] | [INFO] [stderr] 6 | pub fn shade_lambert(l: &Vector4F, n: &Vector4F) -> f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/json.rs:38:5 [INFO] [stderr] | [INFO] [stderr] 38 | self.position = self.position + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.position += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/json.rs:55:22 [INFO] [stderr] | [INFO] [stderr] 55 | fn is_white_space(c: &char) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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: length comparison to zero [INFO] [stderr] --> src/json.rs:88:6 [INFO] [stderr] | [INFO] [stderr] 88 | if number.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!number.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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/json.rs:271:20 [INFO] [stderr] | [INFO] [stderr] 271 | fn is_bool_char(c: &char) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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/json.rs:275:20 [INFO] [stderr] | [INFO] [stderr] 275 | fn is_null_char(c: &char) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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/json.rs:279:22 [INFO] [stderr] | [INFO] [stderr] 279 | fn is_string_char(c: &char) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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/json.rs:283:22 [INFO] [stderr] | [INFO] [stderr] 283 | fn is_number_char(c: &char) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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/json.rs:298:21 [INFO] [stderr] | [INFO] [stderr] 298 | fn is_array_char(c: &char) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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/json.rs:302:22 [INFO] [stderr] | [INFO] [stderr] 302 | fn is_object_char(c: &char) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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: float has excessive precision [INFO] [stderr] --> src/linear.rs:10:17 [INFO] [stderr] | [INFO] [stderr] 10 | const PI: f64 = 3.1415926535897932384626433; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider changing the type or truncating it to: `3.141_592_653_589_793` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::excessive_precision)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#excessive_precision [INFO] [stderr] [INFO] [stderr] warning: The use of negated comparison operators on partially ordered types produces code that is hard to read and refactor. Please consider using the `partial_cmp` method instead, to make it clear that the two values could be incomparable. [INFO] [stderr] --> src/linear.rs:411:6 [INFO] [stderr] | [INFO] [stderr] 411 | if !(dot < 0.0) { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::neg_cmp_op_on_partial_ord)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_cmp_op_on_partial_ord [INFO] [stderr] [INFO] [stderr] warning: The use of negated comparison operators on partially ordered types produces code that is hard to read and refactor. Please consider using the `partial_cmp` method instead, to make it clear that the two values could be incomparable. [INFO] [stderr] --> src/linear.rs:418:6 [INFO] [stderr] | [INFO] [stderr] 418 | if !(t <= 0.0) { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_cmp_op_on_partial_ord [INFO] [stderr] [INFO] [stderr] warning: The use of negated comparison operators on partially ordered types produces code that is hard to read and refactor. Please consider using the `partial_cmp` method instead, to make it clear that the two values could be incomparable. [INFO] [stderr] --> src/linear.rs:422:6 [INFO] [stderr] | [INFO] [stderr] 422 | if !(t >= dot * min_t) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_cmp_op_on_partial_ord [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/linear.rs:426:3 [INFO] [stderr] | [INFO] [stderr] 426 | t = t / dot; [INFO] [stderr] | ^^^^^^^^^^^ help: replace it with: `t /= dot` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: The use of negated comparison operators on partially ordered types produces code that is hard to read and refactor. Please consider using the `partial_cmp` method instead, to make it clear that the two values could be incomparable. [INFO] [stderr] --> src/linear.rs:500:6 [INFO] [stderr] | [INFO] [stderr] 500 | if !(alpha >= 0.0) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_cmp_op_on_partial_ord [INFO] [stderr] [INFO] [stderr] warning: The use of negated comparison operators on partially ordered types produces code that is hard to read and refactor. Please consider using the `partial_cmp` method instead, to make it clear that the two values could be incomparable. [INFO] [stderr] --> src/linear.rs:505:6 [INFO] [stderr] | [INFO] [stderr] 505 | if !(beta >= 0.0) { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_cmp_op_on_partial_ord [INFO] [stderr] [INFO] [stderr] warning: The use of negated comparison operators on partially ordered types produces code that is hard to read and refactor. Please consider using the `partial_cmp` method instead, to make it clear that the two values could be incomparable. [INFO] [stderr] --> src/linear.rs:510:6 [INFO] [stderr] | [INFO] [stderr] 510 | if !(gamma >= 0.0) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_cmp_op_on_partial_ord [INFO] [stderr] [INFO] [stderr] warning: this looks like you are swapping `tmin` and `tmax` manually [INFO] [stderr] --> src/linear.rs:543:5 [INFO] [stderr] | [INFO] [stderr] 543 | / let tmp = tmin; [INFO] [stderr] 544 | | tmin = tmax; [INFO] [stderr] 545 | | tmax = tmp; [INFO] [stderr] | |______________^ help: try: `std::mem::swap(&mut tmin, &mut tmax)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_swap)] on by default [INFO] [stderr] = note: or maybe you should use `std::mem::replace`? [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_swap [INFO] [stderr] [INFO] [stderr] warning: this looks like you are swapping `tymin` and `tymax` manually [INFO] [stderr] --> src/linear.rs:552:5 [INFO] [stderr] | [INFO] [stderr] 552 | / let tmp = tymin; [INFO] [stderr] 553 | | tymin = tymax; [INFO] [stderr] 554 | | tymax = tmp; [INFO] [stderr] | |_______________^ help: try: `std::mem::swap(&mut tymin, &mut tymax)` [INFO] [stderr] | [INFO] [stderr] = note: or maybe you should use `std::mem::replace`? [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_swap [INFO] [stderr] [INFO] [stderr] warning: this looks like you are swapping `tzmin` and `tzmax` manually [INFO] [stderr] --> src/linear.rs:573:5 [INFO] [stderr] | [INFO] [stderr] 573 | / let tmp = tzmin; [INFO] [stderr] 574 | | tzmin = tzmax; [INFO] [stderr] 575 | | tzmax = tmp; [INFO] [stderr] | |_______________^ help: try: `std::mem::swap(&mut tzmin, &mut tzmax)` [INFO] [stderr] | [INFO] [stderr] = note: or maybe you should use `std::mem::replace`? [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_swap [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/obj.rs:34:31 [INFO] [stderr] | [INFO] [stderr] 34 | } else if l.starts_with("f") { [INFO] [stderr] | ^^^ help: try using a char instead: `'f'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/obj.rs:127:28 [INFO] [stderr] | [INFO] [stderr] 127 | fn read_face_vertex(token: &String) -> Vertex { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/obj.rs:130:6 [INFO] [stderr] | [INFO] [stderr] 130 | if parts.len() <= 0 || parts.len() > 3 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::absurd_extreme_comparisons)] on by default [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using parts.len() == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/obj.rs:141:6 [INFO] [stderr] | [INFO] [stderr] 141 | if parts.len() >= 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!parts.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: length comparison to zero [INFO] [stderr] --> src/obj.rs:145:8 [INFO] [stderr] | [INFO] [stderr] 145 | if parts[1].len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!parts[1].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: length comparison to zero [INFO] [stderr] --> src/obj.rs:150:8 [INFO] [stderr] | [INFO] [stderr] 150 | if parts[2].len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!parts[2].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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/obj.rs:158:21 [INFO] [stderr] | [INFO] [stderr] 158 | fn split_line(line: &String) -> Vec { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/octree.rs:30:10 [INFO] [stderr] | [INFO] [stderr] 30 | if self.children.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.children.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/octree.rs:52:32 [INFO] [stderr] | [INFO] [stderr] 52 | pub fn build_octree(triangles: &Vec) -> OctreeNode { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Triangle]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/octree.rs:86:55 [INFO] [stderr] | [INFO] [stderr] 86 | fn build_octree_rec(node: &mut OctreeNode, triangles: &Vec, depth: u32, max_depth: u32) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Triangle]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `t` is used to index `triangles` [INFO] [stderr] --> src/octree.rs:93:14 [INFO] [stderr] | [INFO] [stderr] 93 | for t in 0..triangles.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] 93 | for (t, ) in triangles.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: float has excessive precision [INFO] [stderr] --> src/random.rs:4:17 [INFO] [stderr] | [INFO] [stderr] 4 | const PI: f64 = 3.1415926535897932384626433; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider changing the type or truncating it to: `3.141_592_653_589_793` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#excessive_precision [INFO] [stderr] [INFO] [stderr] warning: float has excessive precision [INFO] [stderr] --> src/shade.rs:3:17 [INFO] [stderr] | [INFO] [stderr] 3 | const PI: f64 = 3.1415926535897932384626433; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider changing the type or truncating it to: `3.141_592_653_589_793` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#excessive_precision [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::E` found. Consider using it directly [INFO] [stderr] --> src/shade.rs:4:16 [INFO] [stderr] | [INFO] [stderr] 4 | const E: f64 = 2.718281828459045; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::approx_constant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] warning: unused variable: `alb` [INFO] [stderr] --> src/shade.rs:23:79 [INFO] [stderr] | [INFO] [stderr] 23 | pub fn shade_oren_nayar(l: &Vector4F, n: &Vector4F, v: &Vector4F, rough: f64, alb: f64) -> f64 { [INFO] [stderr] | ^^^ help: consider using `_alb` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:55:21 [INFO] [stderr] | [INFO] [stderr] 55 | let img_ratio = img_w as f64 / img_h as f64; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(img_w)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:55:36 [INFO] [stderr] | [INFO] [stderr] 55 | let img_ratio = img_w as f64 / img_h as f64; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(img_h)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:62:39 [INFO] [stderr] | [INFO] [stderr] 62 | let img_pix_inc_h = img_plane_w / img_w as f64; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(img_w)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:63:39 [INFO] [stderr] | [INFO] [stderr] 63 | let img_pix_inc_v = img_plane_h / img_h as f64; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(img_h)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:67:19 [INFO] [stderr] | [INFO] [stderr] 67 | let samples = samplesi as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f64::from(samplesi)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:145:21 [INFO] [stderr] | [INFO] [stderr] 145 | pix_color.r = pix_color.r / samples2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `pix_color.r /= samples2` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:146:21 [INFO] [stderr] | [INFO] [stderr] 146 | pix_color.g = pix_color.g / samples2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `pix_color.g /= samples2` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:147:21 [INFO] [stderr] | [INFO] [stderr] 147 | pix_color.b = pix_color.b / samples2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `pix_color.b /= samples2` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:173:17 [INFO] [stderr] | [INFO] [stderr] 173 | oc.r = oc.r + nc.r; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `oc.r += nc.r` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:174:17 [INFO] [stderr] | [INFO] [stderr] 174 | oc.g = oc.g + nc.g; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `oc.g += nc.g` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:175:17 [INFO] [stderr] | [INFO] [stderr] 175 | oc.b = oc.b + nc.b; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `oc.b += nc.b` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:186:32 [INFO] [stderr] | [INFO] [stderr] 186 | let mut percent = (lines_done as f64 / img_h as f64) * 100.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(lines_done)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:186:52 [INFO] [stderr] | [INFO] [stderr] 186 | let mut percent = (lines_done as f64 / img_h as f64) * 100.0; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(img_h)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:205:13 [INFO] [stderr] | [INFO] [stderr] 205 | oc.r = oc.r + nc.r; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `oc.r += nc.r` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:206:13 [INFO] [stderr] | [INFO] [stderr] 206 | oc.g = oc.g + nc.g; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `oc.g += nc.g` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:207:13 [INFO] [stderr] | [INFO] [stderr] 207 | oc.b = oc.b + nc.b; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `oc.b += nc.b` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:324:29 [INFO] [stderr] | [INFO] [stderr] 324 | v = v + 1.0; [INFO] [stderr] | ^^^^^^^^^^^ help: replace it with: `v += 1.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:328:40 [INFO] [stderr] | [INFO] [stderr] 328 | light_intens = v / (light.samples as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(light.samples)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:341:17 [INFO] [stderr] | [INFO] [stderr] 341 | lcolor.r = lcolor.r + (light.color.r * light_total); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `lcolor.r += (light.color.r * light_total)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:342:17 [INFO] [stderr] | [INFO] [stderr] 342 | lcolor.g = lcolor.g + (light.color.g * light_total); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `lcolor.g += (light.color.g * light_total)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:343:17 [INFO] [stderr] | [INFO] [stderr] 343 | lcolor.b = lcolor.b + (light.color.b * light_total); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `lcolor.b += (light.color.b * light_total)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:359:28 [INFO] [stderr] | [INFO] [stderr] 359 | let ps = 1.0 / (scene.path_samples as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(scene.path_samples)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:398:5 [INFO] [stderr] | [INFO] [stderr] 398 | / let mut filename = "settings.json"; [INFO] [stderr] 399 | | if args.len() > 1 { [INFO] [stderr] 400 | | filename = args[1].as_str(); [INFO] [stderr] 401 | | } [INFO] [stderr] | |_____^ help: it is more idiomatic to write: `let filename = if args.len() > 1 { args[1].as_str() } else { "settings.json" };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [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: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:420:5 [INFO] [stderr] | [INFO] [stderr] 420 | result = result + (r * (1.0 / 512.0)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `result += (r * (1.0 / 512.0))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:429:5 [INFO] [stderr] | [INFO] [stderr] 429 | result = result * 255.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `result *= 255.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `xtracer`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: field is never used: `rand_seed` [INFO] [stderr] --> src/random.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | rand_seed: u32 [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `random` [INFO] [stderr] --> src/random.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | pub fn random (&mut self) -> u32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `shade_lambert` [INFO] [stderr] --> src/shade.rs:6:1 [INFO] [stderr] | [INFO] [stderr] 6 | pub fn shade_lambert(l: &Vector4F, n: &Vector4F) -> f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/json.rs:38:5 [INFO] [stderr] | [INFO] [stderr] 38 | self.position = self.position + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.position += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/json.rs:55:22 [INFO] [stderr] | [INFO] [stderr] 55 | fn is_white_space(c: &char) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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: length comparison to zero [INFO] [stderr] --> src/json.rs:88:6 [INFO] [stderr] | [INFO] [stderr] 88 | if number.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!number.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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/json.rs:271:20 [INFO] [stderr] | [INFO] [stderr] 271 | fn is_bool_char(c: &char) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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/json.rs:275:20 [INFO] [stderr] | [INFO] [stderr] 275 | fn is_null_char(c: &char) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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/json.rs:279:22 [INFO] [stderr] | [INFO] [stderr] 279 | fn is_string_char(c: &char) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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/json.rs:283:22 [INFO] [stderr] | [INFO] [stderr] 283 | fn is_number_char(c: &char) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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/json.rs:298:21 [INFO] [stderr] | [INFO] [stderr] 298 | fn is_array_char(c: &char) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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/json.rs:302:22 [INFO] [stderr] | [INFO] [stderr] 302 | fn is_object_char(c: &char) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `char` [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: float has excessive precision [INFO] [stderr] --> src/linear.rs:10:17 [INFO] [stderr] | [INFO] [stderr] 10 | const PI: f64 = 3.1415926535897932384626433; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider changing the type or truncating it to: `3.141_592_653_589_793` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::excessive_precision)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#excessive_precision [INFO] [stderr] [INFO] [stderr] warning: The use of negated comparison operators on partially ordered types produces code that is hard to read and refactor. Please consider using the `partial_cmp` method instead, to make it clear that the two values could be incomparable. [INFO] [stderr] --> src/linear.rs:411:6 [INFO] [stderr] | [INFO] [stderr] 411 | if !(dot < 0.0) { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::neg_cmp_op_on_partial_ord)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_cmp_op_on_partial_ord [INFO] [stderr] [INFO] [stderr] warning: The use of negated comparison operators on partially ordered types produces code that is hard to read and refactor. Please consider using the `partial_cmp` method instead, to make it clear that the two values could be incomparable. [INFO] [stderr] --> src/linear.rs:418:6 [INFO] [stderr] | [INFO] [stderr] 418 | if !(t <= 0.0) { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_cmp_op_on_partial_ord [INFO] [stderr] [INFO] [stderr] warning: The use of negated comparison operators on partially ordered types produces code that is hard to read and refactor. Please consider using the `partial_cmp` method instead, to make it clear that the two values could be incomparable. [INFO] [stderr] --> src/linear.rs:422:6 [INFO] [stderr] | [INFO] [stderr] 422 | if !(t >= dot * min_t) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_cmp_op_on_partial_ord [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/linear.rs:426:3 [INFO] [stderr] | [INFO] [stderr] 426 | t = t / dot; [INFO] [stderr] | ^^^^^^^^^^^ help: replace it with: `t /= dot` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: The use of negated comparison operators on partially ordered types produces code that is hard to read and refactor. Please consider using the `partial_cmp` method instead, to make it clear that the two values could be incomparable. [INFO] [stderr] --> src/linear.rs:500:6 [INFO] [stderr] | [INFO] [stderr] 500 | if !(alpha >= 0.0) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_cmp_op_on_partial_ord [INFO] [stderr] [INFO] [stderr] warning: The use of negated comparison operators on partially ordered types produces code that is hard to read and refactor. Please consider using the `partial_cmp` method instead, to make it clear that the two values could be incomparable. [INFO] [stderr] --> src/linear.rs:505:6 [INFO] [stderr] | [INFO] [stderr] 505 | if !(beta >= 0.0) { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_cmp_op_on_partial_ord [INFO] [stderr] [INFO] [stderr] warning: The use of negated comparison operators on partially ordered types produces code that is hard to read and refactor. Please consider using the `partial_cmp` method instead, to make it clear that the two values could be incomparable. [INFO] [stderr] --> src/linear.rs:510:6 [INFO] [stderr] | [INFO] [stderr] 510 | if !(gamma >= 0.0) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_cmp_op_on_partial_ord [INFO] [stderr] [INFO] [stderr] warning: this looks like you are swapping `tmin` and `tmax` manually [INFO] [stderr] --> src/linear.rs:543:5 [INFO] [stderr] | [INFO] [stderr] 543 | / let tmp = tmin; [INFO] [stderr] 544 | | tmin = tmax; [INFO] [stderr] 545 | | tmax = tmp; [INFO] [stderr] | |______________^ help: try: `std::mem::swap(&mut tmin, &mut tmax)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_swap)] on by default [INFO] [stderr] = note: or maybe you should use `std::mem::replace`? [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_swap [INFO] [stderr] [INFO] [stderr] warning: this looks like you are swapping `tymin` and `tymax` manually [INFO] [stderr] --> src/linear.rs:552:5 [INFO] [stderr] | [INFO] [stderr] 552 | / let tmp = tymin; [INFO] [stderr] 553 | | tymin = tymax; [INFO] [stderr] 554 | | tymax = tmp; [INFO] [stderr] | |_______________^ help: try: `std::mem::swap(&mut tymin, &mut tymax)` [INFO] [stderr] | [INFO] [stderr] = note: or maybe you should use `std::mem::replace`? [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_swap [INFO] [stderr] [INFO] [stderr] warning: this looks like you are swapping `tzmin` and `tzmax` manually [INFO] [stderr] --> src/linear.rs:573:5 [INFO] [stderr] | [INFO] [stderr] 573 | / let tmp = tzmin; [INFO] [stderr] 574 | | tzmin = tzmax; [INFO] [stderr] 575 | | tzmax = tmp; [INFO] [stderr] | |_______________^ help: try: `std::mem::swap(&mut tzmin, &mut tzmax)` [INFO] [stderr] | [INFO] [stderr] = note: or maybe you should use `std::mem::replace`? [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_swap [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/obj.rs:34:31 [INFO] [stderr] | [INFO] [stderr] 34 | } else if l.starts_with("f") { [INFO] [stderr] | ^^^ help: try using a char instead: `'f'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/obj.rs:127:28 [INFO] [stderr] | [INFO] [stderr] 127 | fn read_face_vertex(token: &String) -> Vertex { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/obj.rs:130:6 [INFO] [stderr] | [INFO] [stderr] 130 | if parts.len() <= 0 || parts.len() > 3 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::absurd_extreme_comparisons)] on by default [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using parts.len() == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/obj.rs:141:6 [INFO] [stderr] | [INFO] [stderr] 141 | if parts.len() >= 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!parts.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: length comparison to zero [INFO] [stderr] --> src/obj.rs:145:8 [INFO] [stderr] | [INFO] [stderr] 145 | if parts[1].len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!parts[1].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: length comparison to zero [INFO] [stderr] --> src/obj.rs:150:8 [INFO] [stderr] | [INFO] [stderr] 150 | if parts[2].len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!parts[2].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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/obj.rs:158:21 [INFO] [stderr] | [INFO] [stderr] 158 | fn split_line(line: &String) -> Vec { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/octree.rs:30:10 [INFO] [stderr] | [INFO] [stderr] 30 | if self.children.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.children.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/octree.rs:52:32 [INFO] [stderr] | [INFO] [stderr] 52 | pub fn build_octree(triangles: &Vec) -> OctreeNode { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Triangle]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/octree.rs:86:55 [INFO] [stderr] | [INFO] [stderr] 86 | fn build_octree_rec(node: &mut OctreeNode, triangles: &Vec, depth: u32, max_depth: u32) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Triangle]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `t` is used to index `triangles` [INFO] [stderr] --> src/octree.rs:93:14 [INFO] [stderr] | [INFO] [stderr] 93 | for t in 0..triangles.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] 93 | for (t, ) in triangles.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: float has excessive precision [INFO] [stderr] --> src/random.rs:4:17 [INFO] [stderr] | [INFO] [stderr] 4 | const PI: f64 = 3.1415926535897932384626433; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider changing the type or truncating it to: `3.141_592_653_589_793` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#excessive_precision [INFO] [stderr] [INFO] [stderr] warning: float has excessive precision [INFO] [stderr] --> src/shade.rs:3:17 [INFO] [stderr] | [INFO] [stderr] 3 | const PI: f64 = 3.1415926535897932384626433; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider changing the type or truncating it to: `3.141_592_653_589_793` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#excessive_precision [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::E` found. Consider using it directly [INFO] [stderr] --> src/shade.rs:4:16 [INFO] [stderr] | [INFO] [stderr] 4 | const E: f64 = 2.718281828459045; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::approx_constant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:55:21 [INFO] [stderr] | [INFO] [stderr] 55 | let img_ratio = img_w as f64 / img_h as f64; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(img_w)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:55:36 [INFO] [stderr] | [INFO] [stderr] 55 | let img_ratio = img_w as f64 / img_h as f64; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(img_h)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:62:39 [INFO] [stderr] | [INFO] [stderr] 62 | let img_pix_inc_h = img_plane_w / img_w as f64; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(img_w)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:63:39 [INFO] [stderr] | [INFO] [stderr] 63 | let img_pix_inc_v = img_plane_h / img_h as f64; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(img_h)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:67:19 [INFO] [stderr] | [INFO] [stderr] 67 | let samples = samplesi as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f64::from(samplesi)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:145:21 [INFO] [stderr] | [INFO] [stderr] 145 | pix_color.r = pix_color.r / samples2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `pix_color.r /= samples2` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:146:21 [INFO] [stderr] | [INFO] [stderr] 146 | pix_color.g = pix_color.g / samples2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `pix_color.g /= samples2` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:147:21 [INFO] [stderr] | [INFO] [stderr] 147 | pix_color.b = pix_color.b / samples2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `pix_color.b /= samples2` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:173:17 [INFO] [stderr] | [INFO] [stderr] 173 | oc.r = oc.r + nc.r; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `oc.r += nc.r` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:174:17 [INFO] [stderr] | [INFO] [stderr] 174 | oc.g = oc.g + nc.g; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `oc.g += nc.g` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:175:17 [INFO] [stderr] | [INFO] [stderr] 175 | oc.b = oc.b + nc.b; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `oc.b += nc.b` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:186:32 [INFO] [stderr] | [INFO] [stderr] 186 | let mut percent = (lines_done as f64 / img_h as f64) * 100.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(lines_done)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:186:52 [INFO] [stderr] | [INFO] [stderr] 186 | let mut percent = (lines_done as f64 / img_h as f64) * 100.0; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(img_h)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:205:13 [INFO] [stderr] | [INFO] [stderr] 205 | oc.r = oc.r + nc.r; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `oc.r += nc.r` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:206:13 [INFO] [stderr] | [INFO] [stderr] 206 | oc.g = oc.g + nc.g; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `oc.g += nc.g` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:207:13 [INFO] [stderr] | [INFO] [stderr] 207 | oc.b = oc.b + nc.b; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `oc.b += nc.b` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:324:29 [INFO] [stderr] | [INFO] [stderr] 324 | v = v + 1.0; [INFO] [stderr] | ^^^^^^^^^^^ help: replace it with: `v += 1.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:328:40 [INFO] [stderr] | [INFO] [stderr] 328 | light_intens = v / (light.samples as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(light.samples)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:341:17 [INFO] [stderr] | [INFO] [stderr] 341 | lcolor.r = lcolor.r + (light.color.r * light_total); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `lcolor.r += (light.color.r * light_total)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:342:17 [INFO] [stderr] | [INFO] [stderr] 342 | lcolor.g = lcolor.g + (light.color.g * light_total); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `lcolor.g += (light.color.g * light_total)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:343:17 [INFO] [stderr] | [INFO] [stderr] 343 | lcolor.b = lcolor.b + (light.color.b * light_total); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `lcolor.b += (light.color.b * light_total)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:359:28 [INFO] [stderr] | [INFO] [stderr] 359 | let ps = 1.0 / (scene.path_samples as f64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(scene.path_samples)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:398:5 [INFO] [stderr] | [INFO] [stderr] 398 | / let mut filename = "settings.json"; [INFO] [stderr] 399 | | if args.len() > 1 { [INFO] [stderr] 400 | | filename = args[1].as_str(); [INFO] [stderr] 401 | | } [INFO] [stderr] | |_____^ help: it is more idiomatic to write: `let filename = if args.len() > 1 { args[1].as_str() } else { "settings.json" };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [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: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:420:5 [INFO] [stderr] | [INFO] [stderr] 420 | result = result + (r * (1.0 / 512.0)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `result += (r * (1.0 / 512.0))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/main.rs:429:5 [INFO] [stderr] | [INFO] [stderr] 429 | result = result * 255.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `result *= 255.0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `xtracer`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "10ef30f359d40aae33f88cc6fa4be18c0eb11877237861aa39e35b3a66e89f36"` [INFO] running `"docker" "rm" "-f" "10ef30f359d40aae33f88cc6fa4be18c0eb11877237861aa39e35b3a66e89f36"` [INFO] [stdout] 10ef30f359d40aae33f88cc6fa4be18c0eb11877237861aa39e35b3a66e89f36