[INFO] updating cached repository leighpauls/rust_tetris [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/leighpauls/rust_tetris [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/leighpauls/rust_tetris" "work/ex/clippy-test-run/sources/stable/gh/leighpauls/rust_tetris"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/leighpauls/rust_tetris'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/leighpauls/rust_tetris" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/leighpauls/rust_tetris"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/leighpauls/rust_tetris'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] b018515780aecd1f2b4aa03ae10955895d7850f8 [INFO] sha for GitHub repo leighpauls/rust_tetris: b018515780aecd1f2b4aa03ae10955895d7850f8 [INFO] validating manifest of leighpauls/rust_tetris 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 leighpauls/rust_tetris 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 leighpauls/rust_tetris [INFO] finished frobbing leighpauls/rust_tetris [INFO] frobbed toml for leighpauls/rust_tetris written to work/ex/clippy-test-run/sources/stable/gh/leighpauls/rust_tetris/Cargo.toml [INFO] started frobbing leighpauls/rust_tetris [INFO] finished frobbing leighpauls/rust_tetris [INFO] frobbed toml for leighpauls/rust_tetris written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/leighpauls/rust_tetris/Cargo.toml [INFO] crate leighpauls/rust_tetris 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 leighpauls/rust_tetris 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/leighpauls/rust_tetris:/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] 2a327d47057522bd6559160a2173d12c1022d2a530bbeb77f8e0b248c9c73f03 [INFO] running `"docker" "start" "-a" "2a327d47057522bd6559160a2173d12c1022d2a530bbeb77f8e0b248c9c73f03"` [INFO] [stderr] Compiling libc v0.2.23 [INFO] [stderr] Compiling rayon-core v1.0.2 [INFO] [stderr] Compiling serde_json v0.9.10 [INFO] [stderr] Checking shared_library v0.1.5 [INFO] [stderr] Checking deflate v0.7.11 [INFO] [stderr] Compiling wayland-scanner v0.8.7 [INFO] [stderr] Compiling gl_generator v0.5.3 [INFO] [stderr] Checking x11-dl v2.14.0 [INFO] [stderr] Checking fs2 v0.2.5 [INFO] [stderr] Checking tempfile v2.1.5 [INFO] [stderr] Checking osmesa-sys v0.1.2 [INFO] [stderr] Compiling rand v0.3.15 [INFO] [stderr] Checking memmap v0.4.0 [INFO] [stderr] Checking png v0.7.0 [INFO] [stderr] Checking rayon v0.7.1 [INFO] [stderr] Compiling wayland-client v0.8.7 [INFO] [stderr] Compiling phf_generator v0.7.21 [INFO] [stderr] Compiling gl v0.6.2 [INFO] [stderr] Compiling glutin v0.8.1 [INFO] [stderr] Compiling phf_codegen v0.7.21 [INFO] [stderr] Compiling target_build_utils v0.3.1 [INFO] [stderr] Checking jpeg-decoder v0.1.12 [INFO] [stderr] Checking image v0.13.0 [INFO] [stderr] Checking piston2d-opengl_graphics v0.43.1 [INFO] [stderr] Compiling libloading v0.3.4 [INFO] [stderr] Checking dlib v0.3.1 [INFO] [stderr] Checking wayland-sys v0.8.7 [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 pistoncore-glutin_window v0.37.0 [INFO] [stderr] Checking tetris v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/app.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | field: field, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `field` [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/block.rs:22:13 [INFO] [stderr] | [INFO] [stderr] 22 | pos : pos, [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `pos` [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/field.rs:40:13 [INFO] [stderr] | [INFO] [stderr] 40 | block_size: block_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `block_size` [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/field.rs:41:13 [INFO] [stderr] | [INFO] [stderr] 41 | cols: cols, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `cols` [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/field.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | over_rows: over_rows, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `over_rows` [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/field.rs:43:13 [INFO] [stderr] | [INFO] [stderr] 43 | body_rows: body_rows, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `body_rows` [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/tetronimo.rs:122:13 [INFO] [stderr] | [INFO] [stderr] 122 | shape: shape, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `shape` [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/tetronimo.rs:123:13 [INFO] [stderr] | [INFO] [stderr] 123 | rot: rot, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `rot` [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/trans2d.rs:10:19 [INFO] [stderr] | [INFO] [stderr] 10 | Trans2D { x: x, y: y } [INFO] [stderr] | ^^^^ help: replace it with: `x` [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/trans2d.rs:10:25 [INFO] [stderr] | [INFO] [stderr] 10 | Trans2D { x: x, y: y } [INFO] [stderr] | ^^^^ help: replace it with: `y` [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/app.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | field: field, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `field` [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/block.rs:22:13 [INFO] [stderr] | [INFO] [stderr] 22 | pos : pos, [INFO] [stderr] | ^^^^^^^^^ help: replace it with: `pos` [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/field.rs:40:13 [INFO] [stderr] | [INFO] [stderr] 40 | block_size: block_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `block_size` [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/field.rs:41:13 [INFO] [stderr] | [INFO] [stderr] 41 | cols: cols, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `cols` [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/field.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | over_rows: over_rows, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `over_rows` [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/field.rs:43:13 [INFO] [stderr] | [INFO] [stderr] 43 | body_rows: body_rows, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `body_rows` [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/tetronimo.rs:122:13 [INFO] [stderr] | [INFO] [stderr] 122 | shape: shape, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `shape` [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/tetronimo.rs:123:13 [INFO] [stderr] | [INFO] [stderr] 123 | rot: rot, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `rot` [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/trans2d.rs:10:19 [INFO] [stderr] | [INFO] [stderr] 10 | Trans2D { x: x, y: y } [INFO] [stderr] | ^^^^ help: replace it with: `x` [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/trans2d.rs:10:25 [INFO] [stderr] | [INFO] [stderr] 10 | Trans2D { x: x, y: y } [INFO] [stderr] | ^^^^ help: replace it with: `y` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/app.rs:46:9 [INFO] [stderr] | [INFO] [stderr] 46 | / if let &Keyboard(ref key) = button { [INFO] [stderr] 47 | | [INFO] [stderr] 48 | | match key { [INFO] [stderr] 49 | | &Key::Space => self.field.new_cur_tetromino(), [INFO] [stderr] ... | [INFO] [stderr] 58 | | } [INFO] [stderr] 59 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 46 | if let Keyboard(ref key) = *button { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/app.rs:48:13 [INFO] [stderr] | [INFO] [stderr] 48 | / match key { [INFO] [stderr] 49 | | &Key::Space => self.field.new_cur_tetromino(), [INFO] [stderr] 50 | | &Key::Up => self.field.move_tetromino(&Trans2D::new(0, -1)), [INFO] [stderr] 51 | | &Key::Down => self.field.move_tetromino(&Trans2D::new(0, 1)), [INFO] [stderr] ... | [INFO] [stderr] 57 | | _ => (), [INFO] [stderr] 58 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 48 | match *key { [INFO] [stderr] 49 | Key::Space => self.field.new_cur_tetromino(), [INFO] [stderr] 50 | Key::Up => self.field.move_tetromino(&Trans2D::new(0, -1)), [INFO] [stderr] 51 | Key::Down => self.field.move_tetromino(&Trans2D::new(0, 1)), [INFO] [stderr] 52 | Key::Left => self.field.move_tetromino(&Trans2D::new(-1, 0)), [INFO] [stderr] 53 | Key::Right => self.field.move_tetromino(&Trans2D::new(1, 0)), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/app.rs:62:33 [INFO] [stderr] | [INFO] [stderr] 62 | pub fn update(&mut self, _: &UpdateArgs) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [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: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/block.rs:32:30 [INFO] [stderr] | [INFO] [stderr] 32 | .trans(self.pos.x as f64 * params.block_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.pos.x)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/block.rs:33:30 [INFO] [stderr] | [INFO] [stderr] 33 | self.pos.y as f64 * params.block_size), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.pos.y)` [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/field.rs:32:26 [INFO] [stderr] | [INFO] [stderr] 32 | let block_size = args.height as f64 / 25.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(args.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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/field.rs:33:27 [INFO] [stderr] | [INFO] [stderr] 33 | let field_width = cols as f64 * block_size; [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(cols)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/field.rs:34:28 [INFO] [stderr] | [INFO] [stderr] 34 | let field_height = (over_rows + body_rows) as f64 * block_size; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(over_rows + body_rows)` [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/field.rs:37:16 [INFO] [stderr] | [INFO] [stderr] 37 | x: args.width as f64 / 2.0 - field_width / 2.0 + center_x_blocks * block_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(args.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/field.rs:38:16 [INFO] [stderr] | [INFO] [stderr] 38 | y: args.height as f64 / 2.0 - field_height / 2.0 + center_y_blocks * block_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(args.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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/field.rs:56:46 [INFO] [stderr] | [INFO] [stderr] 56 | Self::new(args, 4, 0, 2, 7.5, -9.5 + idx as f64 * 3.0) [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(idx)` [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: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/field.rs:161:9 [INFO] [stderr] | [INFO] [stderr] 161 | / if let &Some(ref t) = &self.cur_tet { [INFO] [stderr] 162 | | t.draw(c, &main_params, gl); [INFO] [stderr] 163 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 161 | if let Some(ref t) = self.cur_tet { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/field.rs:167:9 [INFO] [stderr] | [INFO] [stderr] 167 | / if let &Some(ref t) = &self.stash_tet { [INFO] [stderr] 168 | | t.draw(c, &stash_params, gl); [INFO] [stderr] 169 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 167 | if let Some(ref t) = self.stash_tet { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/field.rs:183:41 [INFO] [stderr] | [INFO] [stderr] 183 | let width = params.block_size * params.cols as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(params.cols)` [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: an inclusive range would be more readable [INFO] [stderr] --> src/field.rs:184:22 [INFO] [stderr] | [INFO] [stderr] 184 | for y_idx in params.over_rows..params.over_rows + params.body_rows + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `params.over_rows..=params.over_rows + params.body_rows` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/field.rs:189:39 [INFO] [stderr] | [INFO] [stderr] 189 | .trans(0.0, y_idx as f64 * params.block_size), [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(y_idx)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/field.rs:193:42 [INFO] [stderr] | [INFO] [stderr] 193 | let height = params.block_size * params.body_rows as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(params.body_rows)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/field.rs:194:54 [INFO] [stderr] | [INFO] [stderr] 194 | let start_y = params.y + params.block_size * params.over_rows as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(params.over_rows)` [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: an inclusive range would be more readable [INFO] [stderr] --> src/field.rs:195:22 [INFO] [stderr] | [INFO] [stderr] 195 | for x_idx in 0..params.cols + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: use: `0..=params.cols` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/field.rs:200:34 [INFO] [stderr] | [INFO] [stderr] 200 | .trans(x_idx as f64 * params.block_size, 0.0), [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(x_idx)` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tetronimo.rs:24:17 [INFO] [stderr] | [INFO] [stderr] 24 | / match self { [INFO] [stderr] 25 | | &Rot4::Start => Rot4::CW, [INFO] [stderr] 26 | | &Rot4::CW => Rot4::Reverse, [INFO] [stderr] 27 | | &Rot4::Reverse => Rot4::CCW, [INFO] [stderr] 28 | | &Rot4::CCW => Rot4::Start, [INFO] [stderr] 29 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 24 | match *self { [INFO] [stderr] 25 | Rot4::Start => Rot4::CW, [INFO] [stderr] 26 | Rot4::CW => Rot4::Reverse, [INFO] [stderr] 27 | Rot4::Reverse => Rot4::CCW, [INFO] [stderr] 28 | Rot4::CCW => Rot4::Start, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tetronimo.rs:32:17 [INFO] [stderr] | [INFO] [stderr] 32 | / match self { [INFO] [stderr] 33 | | &Rot4::Start => Rot4::CCW, [INFO] [stderr] 34 | | &Rot4::CCW => Rot4::Reverse, [INFO] [stderr] 35 | | &Rot4::Reverse => Rot4::CW, [INFO] [stderr] 36 | | &Rot4::CW => Rot4::Start, [INFO] [stderr] 37 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 32 | match *self { [INFO] [stderr] 33 | Rot4::Start => Rot4::CCW, [INFO] [stderr] 34 | Rot4::CCW => Rot4::Reverse, [INFO] [stderr] 35 | Rot4::Reverse => Rot4::CW, [INFO] [stderr] 36 | Rot4::CW => Rot4::Start, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `new_offsets` [INFO] [stderr] --> src/tetronimo.rs:167:18 [INFO] [stderr] | [INFO] [stderr] 167 | for i in 0..4 { [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] 167 | for (i, ) in new_offsets.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/app.rs:46:9 [INFO] [stderr] | [INFO] [stderr] 46 | / if let &Keyboard(ref key) = button { [INFO] [stderr] 47 | | [INFO] [stderr] 48 | | match key { [INFO] [stderr] 49 | | &Key::Space => self.field.new_cur_tetromino(), [INFO] [stderr] ... | [INFO] [stderr] 58 | | } [INFO] [stderr] 59 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 46 | if let Keyboard(ref key) = *button { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/app.rs:48:13 [INFO] [stderr] | [INFO] [stderr] 48 | / match key { [INFO] [stderr] 49 | | &Key::Space => self.field.new_cur_tetromino(), [INFO] [stderr] 50 | | &Key::Up => self.field.move_tetromino(&Trans2D::new(0, -1)), [INFO] [stderr] 51 | | &Key::Down => self.field.move_tetromino(&Trans2D::new(0, 1)), [INFO] [stderr] ... | [INFO] [stderr] 57 | | _ => (), [INFO] [stderr] 58 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 48 | match *key { [INFO] [stderr] 49 | Key::Space => self.field.new_cur_tetromino(), [INFO] [stderr] 50 | Key::Up => self.field.move_tetromino(&Trans2D::new(0, -1)), [INFO] [stderr] 51 | Key::Down => self.field.move_tetromino(&Trans2D::new(0, 1)), [INFO] [stderr] 52 | Key::Left => self.field.move_tetromino(&Trans2D::new(-1, 0)), [INFO] [stderr] 53 | Key::Right => self.field.move_tetromino(&Trans2D::new(1, 0)), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/app.rs:62:33 [INFO] [stderr] | [INFO] [stderr] 62 | pub fn update(&mut self, _: &UpdateArgs) { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `UpdateArgs` [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: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/block.rs:32:30 [INFO] [stderr] | [INFO] [stderr] 32 | .trans(self.pos.x as f64 * params.block_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.pos.x)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/block.rs:33:30 [INFO] [stderr] | [INFO] [stderr] 33 | self.pos.y as f64 * params.block_size), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(self.pos.y)` [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/field.rs:32:26 [INFO] [stderr] | [INFO] [stderr] 32 | let block_size = args.height as f64 / 25.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(args.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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/field.rs:33:27 [INFO] [stderr] | [INFO] [stderr] 33 | let field_width = cols as f64 * block_size; [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(cols)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/field.rs:34:28 [INFO] [stderr] | [INFO] [stderr] 34 | let field_height = (over_rows + body_rows) as f64 * block_size; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(over_rows + body_rows)` [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/field.rs:37:16 [INFO] [stderr] | [INFO] [stderr] 37 | x: args.width as f64 / 2.0 - field_width / 2.0 + center_x_blocks * block_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `f64::from(args.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/field.rs:38:16 [INFO] [stderr] | [INFO] [stderr] 38 | y: args.height as f64 / 2.0 - field_height / 2.0 + center_y_blocks * block_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(args.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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/field.rs:56:46 [INFO] [stderr] | [INFO] [stderr] 56 | Self::new(args, 4, 0, 2, 7.5, -9.5 + idx as f64 * 3.0) [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(idx)` [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: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/field.rs:161:9 [INFO] [stderr] | [INFO] [stderr] 161 | / if let &Some(ref t) = &self.cur_tet { [INFO] [stderr] 162 | | t.draw(c, &main_params, gl); [INFO] [stderr] 163 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 161 | if let Some(ref t) = self.cur_tet { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/field.rs:167:9 [INFO] [stderr] | [INFO] [stderr] 167 | / if let &Some(ref t) = &self.stash_tet { [INFO] [stderr] 168 | | t.draw(c, &stash_params, gl); [INFO] [stderr] 169 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 167 | if let Some(ref t) = self.stash_tet { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/field.rs:183:41 [INFO] [stderr] | [INFO] [stderr] 183 | let width = params.block_size * params.cols as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f64::from(params.cols)` [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: an inclusive range would be more readable [INFO] [stderr] --> src/field.rs:184:22 [INFO] [stderr] | [INFO] [stderr] 184 | for y_idx in params.over_rows..params.over_rows + params.body_rows + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `params.over_rows..=params.over_rows + params.body_rows` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/field.rs:189:39 [INFO] [stderr] | [INFO] [stderr] 189 | .trans(0.0, y_idx as f64 * params.block_size), [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(y_idx)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/field.rs:193:42 [INFO] [stderr] | [INFO] [stderr] 193 | let height = params.block_size * params.body_rows as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(params.body_rows)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/field.rs:194:54 [INFO] [stderr] | [INFO] [stderr] 194 | let start_y = params.y + params.block_size * params.over_rows as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(params.over_rows)` [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: an inclusive range would be more readable [INFO] [stderr] --> src/field.rs:195:22 [INFO] [stderr] | [INFO] [stderr] 195 | for x_idx in 0..params.cols + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: use: `0..=params.cols` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/field.rs:200:34 [INFO] [stderr] | [INFO] [stderr] 200 | .trans(x_idx as f64 * params.block_size, 0.0), [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(x_idx)` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tetronimo.rs:24:17 [INFO] [stderr] | [INFO] [stderr] 24 | / match self { [INFO] [stderr] 25 | | &Rot4::Start => Rot4::CW, [INFO] [stderr] 26 | | &Rot4::CW => Rot4::Reverse, [INFO] [stderr] 27 | | &Rot4::Reverse => Rot4::CCW, [INFO] [stderr] 28 | | &Rot4::CCW => Rot4::Start, [INFO] [stderr] 29 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 24 | match *self { [INFO] [stderr] 25 | Rot4::Start => Rot4::CW, [INFO] [stderr] 26 | Rot4::CW => Rot4::Reverse, [INFO] [stderr] 27 | Rot4::Reverse => Rot4::CCW, [INFO] [stderr] 28 | Rot4::CCW => Rot4::Start, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tetronimo.rs:32:17 [INFO] [stderr] | [INFO] [stderr] 32 | / match self { [INFO] [stderr] 33 | | &Rot4::Start => Rot4::CCW, [INFO] [stderr] 34 | | &Rot4::CCW => Rot4::Reverse, [INFO] [stderr] 35 | | &Rot4::Reverse => Rot4::CW, [INFO] [stderr] 36 | | &Rot4::CW => Rot4::Start, [INFO] [stderr] 37 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 32 | match *self { [INFO] [stderr] 33 | Rot4::Start => Rot4::CCW, [INFO] [stderr] 34 | Rot4::CCW => Rot4::Reverse, [INFO] [stderr] 35 | Rot4::Reverse => Rot4::CW, [INFO] [stderr] 36 | Rot4::CW => Rot4::Start, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `new_offsets` [INFO] [stderr] --> src/tetronimo.rs:167:18 [INFO] [stderr] | [INFO] [stderr] 167 | for i in 0..4 { [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] 167 | for (i, ) in new_offsets.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 45.66s [INFO] running `"docker" "inspect" "2a327d47057522bd6559160a2173d12c1022d2a530bbeb77f8e0b248c9c73f03"` [INFO] running `"docker" "rm" "-f" "2a327d47057522bd6559160a2173d12c1022d2a530bbeb77f8e0b248c9c73f03"` [INFO] [stdout] 2a327d47057522bd6559160a2173d12c1022d2a530bbeb77f8e0b248c9c73f03