[INFO] updating cached repository derekerdmann/rusttracer [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/derekerdmann/rusttracer [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/derekerdmann/rusttracer" "work/ex/clippy-test-run/sources/stable/gh/derekerdmann/rusttracer"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/derekerdmann/rusttracer'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/derekerdmann/rusttracer" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/derekerdmann/rusttracer"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/derekerdmann/rusttracer'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 162050ba867926bf4eb2bc004f102555c74515d7 [INFO] sha for GitHub repo derekerdmann/rusttracer: 162050ba867926bf4eb2bc004f102555c74515d7 [INFO] validating manifest of derekerdmann/rusttracer 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 derekerdmann/rusttracer 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 derekerdmann/rusttracer [INFO] finished frobbing derekerdmann/rusttracer [INFO] frobbed toml for derekerdmann/rusttracer written to work/ex/clippy-test-run/sources/stable/gh/derekerdmann/rusttracer/Cargo.toml [INFO] started frobbing derekerdmann/rusttracer [INFO] finished frobbing derekerdmann/rusttracer [INFO] frobbed toml for derekerdmann/rusttracer written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/derekerdmann/rusttracer/Cargo.toml [INFO] crate derekerdmann/rusttracer 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 derekerdmann/rusttracer 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/derekerdmann/rusttracer:/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] 5d2258f4e2a7b2bd9bb1ea4e133575800e558545e82bb085a96bdf9f50e57549 [INFO] running `"docker" "start" "-a" "5d2258f4e2a7b2bd9bb1ea4e133575800e558545e82bb085a96bdf9f50e57549"` [INFO] [stderr] Checking cgmath v0.15.0 [INFO] [stderr] Checking chan v0.1.19 [INFO] [stderr] Checking png v0.7.0 [INFO] [stderr] Compiling glutin v0.8.1 [INFO] [stderr] Checking jpeg-decoder v0.1.13 [INFO] [stderr] Checking gfx_device_gl v0.14.3 [INFO] [stderr] Checking wayland-sys v0.8.7 [INFO] [stderr] Checking wayland-client v0.8.7 [INFO] [stderr] Checking image v0.13.0 [INFO] [stderr] Checking wayland-kbd v0.8.0 [INFO] [stderr] Checking wayland-window v0.5.0 [INFO] [stderr] Checking winit v0.6.4 [INFO] [stderr] Checking piston-gfx_texture v0.24.0 [INFO] [stderr] Checking piston2d-gfx_graphics v0.40.0 [INFO] [stderr] Checking pistoncore-glutin_window v0.37.0 [INFO] [stderr] Checking piston_window v0.66.0 [INFO] [stderr] Checking rusttracer v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ray.rs:15:13 [INFO] [stderr] | [INFO] [stderr] 15 | origin: origin, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `origin` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ray.rs:15:13 [INFO] [stderr] | [INFO] [stderr] 15 | origin: origin, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `origin` [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: long literal lacking separators [INFO] [stderr] --> src/main.rs:165:67 [INFO] [stderr] | [INFO] [stderr] 165 | println!("Time to compute pixels: {} ms", (compute - start) / 1000000); [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [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: long literal lacking separators [INFO] [stderr] --> src/main.rs:166:67 [INFO] [stderr] | [INFO] [stderr] 166 | println!("Time to render pixels: {} ms", (render - compute) / 1000000); [INFO] [stderr] | ^^^^^^^ help: consider: `1_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/main.rs:167:68 [INFO] [stderr] | [INFO] [stderr] 167 | println!("Time to display result: {} ms", (display - render) / 1000000); [INFO] [stderr] | ^^^^^^^ help: consider: `1_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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/tracer.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | shapes: &'a Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [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] warning: needlessly taken reference of both operands [INFO] [stderr] --> src/tracer.rs:66:17 [INFO] [stderr] | [INFO] [stderr] 66 | &e != &s [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] help: use the values directly [INFO] [stderr] | [INFO] [stderr] 66 | e != s [INFO] [stderr] | ^ ^ [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/tracer.rs:80:13 [INFO] [stderr] | [INFO] [stderr] 80 | shapes: &Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [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/tracer.rs:81:13 [INFO] [stderr] | [INFO] [stderr] 81 | lights: &Vec, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Light]` [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/tracer.rs:123:13 [INFO] [stderr] | [INFO] [stderr] 123 | shapes: &Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [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/tracer.rs:124:13 [INFO] [stderr] | [INFO] [stderr] 124 | lights: &Vec, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Light]` [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/tracer.rs:147:13 [INFO] [stderr] | [INFO] [stderr] 147 | shapes: &Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [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/tracer.rs:148:13 [INFO] [stderr] | [INFO] [stderr] 148 | lights: &Vec, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Light]` [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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/light.rs:41:18 [INFO] [stderr] | [INFO] [stderr] 41 | ((c1 as u16) * (c2 as u16) / u8::MAX as u16) as u8 [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u16::from(c1)` [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 u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/light.rs:41:32 [INFO] [stderr] | [INFO] [stderr] 41 | ((c1 as u16) * (c2 as u16) / u8::MAX as u16) as u8 [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u16::from(c2)` [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 u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/light.rs:41:46 [INFO] [stderr] | [INFO] [stderr] 41 | ((c1 as u16) * (c2 as u16) / u8::MAX as u16) as u8 [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(u8::MAX)` [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 u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/light.rs:74:26 [INFO] [stderr] | [INFO] [stderr] 74 | cmp::min((c1 as u16) + (c2 as u16), u8::MAX as u16) as u8 [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u16::from(c1)` [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 u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/light.rs:74:40 [INFO] [stderr] | [INFO] [stderr] 74 | cmp::min((c1 as u16) + (c2 as u16), u8::MAX as u16) as u8 [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u16::from(c2)` [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 u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/light.rs:74:53 [INFO] [stderr] | [INFO] [stderr] 74 | cmp::min((c1 as u16) + (c2 as u16), u8::MAX as u16) as u8 [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(u8::MAX)` [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 u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/light.rs:107:36 [INFO] [stderr] | [INFO] [stderr] 107 | .map(|c| cmp::min((c as f64 * rhs) as u16, u8::MAX as u16) as u8), [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(c)` [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 u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/light.rs:107:60 [INFO] [stderr] | [INFO] [stderr] 107 | .map(|c| cmp::min((c as f64 * rhs) as u16, u8::MAX as u16) as u8), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(u8::MAX)` [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 u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/light.rs:115:16 [INFO] [stderr] | [INFO] [stderr] 115 | self * rhs as f64 [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(rhs)` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/light.rs:223:13 [INFO] [stderr] | [INFO] [stderr] 223 | shapes: &Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [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/light.rs:224:13 [INFO] [stderr] | [INFO] [stderr] 224 | lights: &Vec, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Light]` [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/light.rs:275:13 [INFO] [stderr] | [INFO] [stderr] 275 | shapes: &Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [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: casting u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/light.rs:297:47 [INFO] [stderr] | [INFO] [stderr] 297 | .map(|channel| u8::MAX - ((u8::MAX - channel) as f64 * k_d) as u8), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(u8::MAX - channel)` [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:77:20 [INFO] [stderr] | [INFO] [stderr] 77 | let dx = 1.0 / image.width() as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(image.width())` [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:78:20 [INFO] [stderr] | [INFO] [stderr] 78 | let dy = 1.0 / image.height() as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(image.height())` [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:98:24 [INFO] [stderr] | [INFO] [stderr] 98 | let x = -0.5 + (xpixel as f64) * dx; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f64::from(xpixel)` [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:99:24 [INFO] [stderr] | [INFO] [stderr] 99 | let y = -0.5 + (ypixel as f64) * dy; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f64::from(ypixel)` [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: this loop could be written as a `while let` loop [INFO] [stderr] --> src/main.rs:116:44 [INFO] [stderr] | [INFO] [stderr] 116 | workers.push(thread::spawn(move || loop { [INFO] [stderr] | ____________________________________________^ [INFO] [stderr] 117 | | match rx.recv() { [INFO] [stderr] 118 | | Some((xpixel, ypixel, r)) => { [INFO] [stderr] 119 | | let color = tracer::illuminate(r, &s, &l, &bg, None, 1).color; [INFO] [stderr] ... | [INFO] [stderr] 123 | | } [INFO] [stderr] 124 | | })); [INFO] [stderr] | |_________^ help: try: `while let Some((xpixel, ypixel, r)) = rx.recv() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/main.rs:137:5 [INFO] [stderr] | [INFO] [stderr] 137 | / loop { [INFO] [stderr] 138 | | match color_rx.try_recv() { [INFO] [stderr] 139 | | Ok((xpixel, ypixel, color)) => { [INFO] [stderr] 140 | | *image.get_pixel_mut(xpixel, ypixel) = color; [INFO] [stderr] ... | [INFO] [stderr] 143 | | } [INFO] [stderr] 144 | | } [INFO] [stderr] | |_____^ help: try: `while let Ok((xpixel, ypixel, color)) = color_rx.try_recv() { .. }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:165:67 [INFO] [stderr] | [INFO] [stderr] 165 | println!("Time to compute pixels: {} ms", (compute - start) / 1000000); [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [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: long literal lacking separators [INFO] [stderr] --> src/main.rs:166:67 [INFO] [stderr] | [INFO] [stderr] 166 | println!("Time to render pixels: {} ms", (render - compute) / 1000000); [INFO] [stderr] | ^^^^^^^ help: consider: `1_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/main.rs:167:68 [INFO] [stderr] | [INFO] [stderr] 167 | println!("Time to display result: {} ms", (display - render) / 1000000); [INFO] [stderr] | ^^^^^^^ help: consider: `1_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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/tracer.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | shapes: &'a Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [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] warning: needlessly taken reference of both operands [INFO] [stderr] --> src/tracer.rs:66:17 [INFO] [stderr] | [INFO] [stderr] 66 | &e != &s [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::op_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#op_ref [INFO] [stderr] help: use the values directly [INFO] [stderr] | [INFO] [stderr] 66 | e != s [INFO] [stderr] | ^ ^ [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/tracer.rs:80:13 [INFO] [stderr] | [INFO] [stderr] 80 | shapes: &Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [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/tracer.rs:81:13 [INFO] [stderr] | [INFO] [stderr] 81 | lights: &Vec, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Light]` [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/tracer.rs:123:13 [INFO] [stderr] | [INFO] [stderr] 123 | shapes: &Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [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/tracer.rs:124:13 [INFO] [stderr] | [INFO] [stderr] 124 | lights: &Vec, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Light]` [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/tracer.rs:147:13 [INFO] [stderr] | [INFO] [stderr] 147 | shapes: &Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [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/tracer.rs:148:13 [INFO] [stderr] | [INFO] [stderr] 148 | lights: &Vec, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Light]` [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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/light.rs:41:18 [INFO] [stderr] | [INFO] [stderr] 41 | ((c1 as u16) * (c2 as u16) / u8::MAX as u16) as u8 [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u16::from(c1)` [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 u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/light.rs:41:32 [INFO] [stderr] | [INFO] [stderr] 41 | ((c1 as u16) * (c2 as u16) / u8::MAX as u16) as u8 [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u16::from(c2)` [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 u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/light.rs:41:46 [INFO] [stderr] | [INFO] [stderr] 41 | ((c1 as u16) * (c2 as u16) / u8::MAX as u16) as u8 [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(u8::MAX)` [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 u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/light.rs:74:26 [INFO] [stderr] | [INFO] [stderr] 74 | cmp::min((c1 as u16) + (c2 as u16), u8::MAX as u16) as u8 [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u16::from(c1)` [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 u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/light.rs:74:40 [INFO] [stderr] | [INFO] [stderr] 74 | cmp::min((c1 as u16) + (c2 as u16), u8::MAX as u16) as u8 [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u16::from(c2)` [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 u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/light.rs:74:53 [INFO] [stderr] | [INFO] [stderr] 74 | cmp::min((c1 as u16) + (c2 as u16), u8::MAX as u16) as u8 [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(u8::MAX)` [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 u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/light.rs:107:36 [INFO] [stderr] | [INFO] [stderr] 107 | .map(|c| cmp::min((c as f64 * rhs) as u16, u8::MAX as u16) as u8), [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(c)` [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 u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/light.rs:107:60 [INFO] [stderr] | [INFO] [stderr] 107 | .map(|c| cmp::min((c as f64 * rhs) as u16, u8::MAX as u16) as u8), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(u8::MAX)` [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 u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/light.rs:115:16 [INFO] [stderr] | [INFO] [stderr] 115 | self * rhs as f64 [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(rhs)` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/light.rs:223:13 [INFO] [stderr] | [INFO] [stderr] 223 | shapes: &Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [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/light.rs:224:13 [INFO] [stderr] | [INFO] [stderr] 224 | lights: &Vec, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Light]` [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/light.rs:275:13 [INFO] [stderr] | [INFO] [stderr] 275 | shapes: &Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [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: casting u8 to f64 may become silently lossy if types change [INFO] [stderr] --> src/light.rs:297:47 [INFO] [stderr] | [INFO] [stderr] 297 | .map(|channel| u8::MAX - ((u8::MAX - channel) as f64 * k_d) as u8), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(u8::MAX - channel)` [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:77:20 [INFO] [stderr] | [INFO] [stderr] 77 | let dx = 1.0 / image.width() as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(image.width())` [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:78:20 [INFO] [stderr] | [INFO] [stderr] 78 | let dy = 1.0 / image.height() as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(image.height())` [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:98:24 [INFO] [stderr] | [INFO] [stderr] 98 | let x = -0.5 + (xpixel as f64) * dx; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f64::from(xpixel)` [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:99:24 [INFO] [stderr] | [INFO] [stderr] 99 | let y = -0.5 + (ypixel as f64) * dy; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f64::from(ypixel)` [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: this loop could be written as a `while let` loop [INFO] [stderr] --> src/main.rs:116:44 [INFO] [stderr] | [INFO] [stderr] 116 | workers.push(thread::spawn(move || loop { [INFO] [stderr] | ____________________________________________^ [INFO] [stderr] 117 | | match rx.recv() { [INFO] [stderr] 118 | | Some((xpixel, ypixel, r)) => { [INFO] [stderr] 119 | | let color = tracer::illuminate(r, &s, &l, &bg, None, 1).color; [INFO] [stderr] ... | [INFO] [stderr] 123 | | } [INFO] [stderr] 124 | | })); [INFO] [stderr] | |_________^ help: try: `while let Some((xpixel, ypixel, r)) = rx.recv() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/main.rs:137:5 [INFO] [stderr] | [INFO] [stderr] 137 | / loop { [INFO] [stderr] 138 | | match color_rx.try_recv() { [INFO] [stderr] 139 | | Ok((xpixel, ypixel, color)) => { [INFO] [stderr] 140 | | *image.get_pixel_mut(xpixel, ypixel) = color; [INFO] [stderr] ... | [INFO] [stderr] 143 | | } [INFO] [stderr] 144 | | } [INFO] [stderr] | |_____^ help: try: `while let Ok((xpixel, ypixel, color)) = color_rx.try_recv() { .. }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 33.83s [INFO] running `"docker" "inspect" "5d2258f4e2a7b2bd9bb1ea4e133575800e558545e82bb085a96bdf9f50e57549"` [INFO] running `"docker" "rm" "-f" "5d2258f4e2a7b2bd9bb1ea4e133575800e558545e82bb085a96bdf9f50e57549"` [INFO] [stdout] 5d2258f4e2a7b2bd9bb1ea4e133575800e558545e82bb085a96bdf9f50e57549