[INFO] updating cached repository Inityx/tetroids [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/Inityx/tetroids [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/Inityx/tetroids" "work/ex/clippy-test-run/sources/stable/gh/Inityx/tetroids"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/Inityx/tetroids'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/Inityx/tetroids" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Inityx/tetroids"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Inityx/tetroids'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 13a81c31fdbeec94d2adf43f08f6970982cf2dbe [INFO] sha for GitHub repo Inityx/tetroids: 13a81c31fdbeec94d2adf43f08f6970982cf2dbe [INFO] validating manifest of Inityx/tetroids 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 Inityx/tetroids 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 Inityx/tetroids [INFO] finished frobbing Inityx/tetroids [INFO] frobbed toml for Inityx/tetroids written to work/ex/clippy-test-run/sources/stable/gh/Inityx/tetroids/Cargo.toml [INFO] started frobbing Inityx/tetroids [INFO] finished frobbing Inityx/tetroids [INFO] frobbed toml for Inityx/tetroids written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Inityx/tetroids/Cargo.toml [INFO] crate Inityx/tetroids 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 Inityx/tetroids against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/Inityx/tetroids:/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] 39e7ddbf5629fffb5d136fd7ce3d61c411af83f1ba712aebabe6c2d1d21e708a [INFO] running `"docker" "start" "-a" "39e7ddbf5629fffb5d136fd7ce3d61c411af83f1ba712aebabe6c2d1d21e708a"` [INFO] [stderr] Compiling x11 v2.14.0 [INFO] [stderr] Checking tetroids v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/game/piece.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | coord: coord, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `coord` [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/game/board.rs:85:13 [INFO] [stderr] | [INFO] [stderr] 85 | board: board, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `board` [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/gui/mod.rs:113:13 [INFO] [stderr] | [INFO] [stderr] 113 | display_ptr: display_ptr, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `display_ptr` [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/gui/mod.rs:114:13 [INFO] [stderr] | [INFO] [stderr] 114 | window: window, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `window` [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/gui/mod.rs:115:13 [INFO] [stderr] | [INFO] [stderr] 115 | gfx_context: gfx_context, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `gfx_context` [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/gui/mod.rs:120:13 [INFO] [stderr] | [INFO] [stderr] 120 | wm_delete_window: wm_delete_window, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `wm_delete_window` [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/gui/mod.rs:121:13 [INFO] [stderr] | [INFO] [stderr] 121 | wm_protocols: wm_protocols, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `wm_protocols` [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/game/piece.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | coord: coord, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `coord` [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/game/board.rs:85:13 [INFO] [stderr] | [INFO] [stderr] 85 | board: board, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `board` [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/gui/mod.rs:113:13 [INFO] [stderr] | [INFO] [stderr] 113 | display_ptr: display_ptr, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `display_ptr` [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/gui/mod.rs:114:13 [INFO] [stderr] | [INFO] [stderr] 114 | window: window, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `window` [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/gui/mod.rs:115:13 [INFO] [stderr] | [INFO] [stderr] 115 | gfx_context: gfx_context, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `gfx_context` [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/gui/mod.rs:120:13 [INFO] [stderr] | [INFO] [stderr] 120 | wm_delete_window: wm_delete_window, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `wm_delete_window` [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/gui/mod.rs:121:13 [INFO] [stderr] | [INFO] [stderr] 121 | wm_protocols: wm_protocols, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `wm_protocols` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/game/piece.rs:146:21 [INFO] [stderr] | [INFO] [stderr] 146 | const PIECES: [&'static Piece;7] = [&O, &T, &L, &J, &S, &Z, &I]; [INFO] [stderr] | -^^^^^^^------ help: consider removing `'static`: `&Piece` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/game/piece.rs:146:21 [INFO] [stderr] | [INFO] [stderr] 146 | const PIECES: [&'static Piece;7] = [&O, &T, &L, &J, &S, &Z, &I]; [INFO] [stderr] | -^^^^^^^------ help: consider removing `'static`: `&Piece` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: unused variable: `result` [INFO] [stderr] --> src/gui/mod.rs:175:21 [INFO] [stderr] | [INFO] [stderr] 175 | let result = match key { [INFO] [stderr] | ^^^^^^ help: consider using `_result` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `square` [INFO] [stderr] --> src/gui/mod.rs:283:25 [INFO] [stderr] | [INFO] [stderr] 283 | if let Some(square) = square { [INFO] [stderr] | ^^^^^^ help: consider using `_square` instead [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/game/board.rs:46:13 [INFO] [stderr] | [INFO] [stderr] 46 | let mut board = &mut self.data; [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/game/piece.rs:51:20 [INFO] [stderr] | [INFO] [stderr] 51 | if self.rotation == false { return self.offsets.clone(); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!self.rotation` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/game/piece.rs:51:52 [INFO] [stderr] | [INFO] [stderr] 51 | if self.rotation == false { return self.offsets.clone(); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.offsets` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/game/piece.rs:80:20 [INFO] [stderr] | [INFO] [stderr] 80 | if self.rotation == false { return; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!self.rotation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: the loop variable `index` is only used to index `board`. [INFO] [stderr] --> src/game/board.rs:62:22 [INFO] [stderr] | [INFO] [stderr] 62 | for index in (board.len() - found)..board.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 62 | for in board.iter_mut().skip((board.len() - found)) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/game/board.rs:69:5 [INFO] [stderr] | [INFO] [stderr] 69 | / pub fn iter_with_index<'a>(&'a self) -> IterWithIndex<'a> { [INFO] [stderr] 70 | | IterWithIndex::over(&self) [INFO] [stderr] 71 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game/coord.rs:16:23 [INFO] [stderr] | [INFO] [stderr] 16 | pub fn turn_right(&self) -> Coord { Coord( self.1, -1*self.0) } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: Negation by multiplying with -1 [INFO] [stderr] --> src/game/coord.rs:16:58 [INFO] [stderr] | [INFO] [stderr] 16 | pub fn turn_right(&self) -> Coord { Coord( self.1, -1*self.0) } [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::neg_multiply)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game/coord.rs:17:22 [INFO] [stderr] | [INFO] [stderr] 17 | pub fn turn_left(&self) -> Coord { Coord(-1*self.1, self.0) } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: Negation by multiplying with -1 [INFO] [stderr] --> src/game/coord.rs:17:47 [INFO] [stderr] | [INFO] [stderr] 17 | pub fn turn_left(&self) -> Coord { Coord(-1*self.1, self.0) } [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/game/mod.rs:118:27 [INFO] [stderr] | [INFO] [stderr] 118 | self.score += add as u32; [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(add)` [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] error: you are getting the inner pointer of a temporary `CString` [INFO] [stderr] --> src/gui/mod.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | ffi::CString::new(WINDOW_TITLE).unwrap().as_ptr(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::temporary_cstring_as_ptr)] on by default [INFO] [stderr] = note: that pointer will be invalid outside this expression [INFO] [stderr] help: assign the `CString` to a variable to extend its lifetime [INFO] [stderr] --> src/gui/mod.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | ffi::CString::new(WINDOW_TITLE).unwrap().as_ptr(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#temporary_cstring_as_ptr [INFO] [stderr] [INFO] [stderr] error: you are getting the inner pointer of a temporary `CString` [INFO] [stderr] --> src/gui/mod.rs:87:17 [INFO] [stderr] | [INFO] [stderr] 87 | ffi::CString::new("WM_DELETE_WINDOW").unwrap().as_ptr(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: that pointer will be invalid outside this expression [INFO] [stderr] help: assign the `CString` to a variable to extend its lifetime [INFO] [stderr] --> src/gui/mod.rs:87:17 [INFO] [stderr] | [INFO] [stderr] 87 | ffi::CString::new("WM_DELETE_WINDOW").unwrap().as_ptr(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#temporary_cstring_as_ptr [INFO] [stderr] [INFO] [stderr] error: you are getting the inner pointer of a temporary `CString` [INFO] [stderr] --> src/gui/mod.rs:94:17 [INFO] [stderr] | [INFO] [stderr] 94 | ffi::CString::new("WM_PROTOCOLS").unwrap().as_ptr(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: that pointer will be invalid outside this expression [INFO] [stderr] help: assign the `CString` to a variable to extend its lifetime [INFO] [stderr] --> src/gui/mod.rs:94:17 [INFO] [stderr] | [INFO] [stderr] 94 | ffi::CString::new("WM_PROTOCOLS").unwrap().as_ptr(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#temporary_cstring_as_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*mut std::ffi::c_void`) to a reference type (`&x11::xinput2::Struct_Unnamed23`) [INFO] [stderr] --> src/gui/mod.rs:173:64 [INFO] [stderr] | [INFO] [stderr] 173 | let event_data: &xinput2::XIDeviceEvent = unsafe { mem::transmute(cookie.data) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*(cookie.data as *const x11::xinput2::Struct_Unnamed23)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/gui/mod.rs:206:34 [INFO] [stderr] | [INFO] [stderr] 206 | let thread_display_ptr = self.display_ptr.clone() as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.display_ptr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/gui/mod.rs:207:29 [INFO] [stderr] | [INFO] [stderr] 207 | let thread_window = self.window.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.window` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: casting i8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/gui/mod.rs:305:33 [INFO] [stderr] | [INFO] [stderr] 305 | 12*coord.0 as i32 + WINDOW_PADDING + 1, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i32::from(coord.0)` [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 i8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/gui/mod.rs:306:33 [INFO] [stderr] | [INFO] [stderr] 306 | 228-(12*coord.1 as i32) + WINDOW_PADDING + 1, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i32::from(coord.1)` [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 i8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/gui/mod.rs:321:33 [INFO] [stderr] | [INFO] [stderr] 321 | 12*coord.0 as i32 + WINDOW_PADDING + 1, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i32::from(coord.0)` [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 i8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/gui/mod.rs:322:33 [INFO] [stderr] | [INFO] [stderr] 322 | 228-(12*coord.1 as i32) + WINDOW_PADDING + 1, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i32::from(coord.1)` [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] error: aborting due to 3 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `tetroids`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: unused variable: `result` [INFO] [stderr] --> src/gui/mod.rs:175:21 [INFO] [stderr] | [INFO] [stderr] 175 | let result = match key { [INFO] [stderr] | ^^^^^^ help: consider using `_result` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `square` [INFO] [stderr] --> src/gui/mod.rs:283:25 [INFO] [stderr] | [INFO] [stderr] 283 | if let Some(square) = square { [INFO] [stderr] | ^^^^^^ help: consider using `_square` instead [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/game/board.rs:46:13 [INFO] [stderr] | [INFO] [stderr] 46 | let mut board = &mut self.data; [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/game/piece.rs:51:20 [INFO] [stderr] | [INFO] [stderr] 51 | if self.rotation == false { return self.offsets.clone(); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!self.rotation` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/game/piece.rs:51:52 [INFO] [stderr] | [INFO] [stderr] 51 | if self.rotation == false { return self.offsets.clone(); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.offsets` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/game/piece.rs:80:20 [INFO] [stderr] | [INFO] [stderr] 80 | if self.rotation == false { return; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!self.rotation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: the loop variable `index` is only used to index `board`. [INFO] [stderr] --> src/game/board.rs:62:22 [INFO] [stderr] | [INFO] [stderr] 62 | for index in (board.len() - found)..board.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 62 | for in board.iter_mut().skip((board.len() - found)) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/game/board.rs:69:5 [INFO] [stderr] | [INFO] [stderr] 69 | / pub fn iter_with_index<'a>(&'a self) -> IterWithIndex<'a> { [INFO] [stderr] 70 | | IterWithIndex::over(&self) [INFO] [stderr] 71 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game/coord.rs:16:23 [INFO] [stderr] | [INFO] [stderr] 16 | pub fn turn_right(&self) -> Coord { Coord( self.1, -1*self.0) } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: Negation by multiplying with -1 [INFO] [stderr] --> src/game/coord.rs:16:58 [INFO] [stderr] | [INFO] [stderr] 16 | pub fn turn_right(&self) -> Coord { Coord( self.1, -1*self.0) } [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::neg_multiply)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game/coord.rs:17:22 [INFO] [stderr] | [INFO] [stderr] 17 | pub fn turn_left(&self) -> Coord { Coord(-1*self.1, self.0) } [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: Negation by multiplying with -1 [INFO] [stderr] --> src/game/coord.rs:17:47 [INFO] [stderr] | [INFO] [stderr] 17 | pub fn turn_left(&self) -> Coord { Coord(-1*self.1, self.0) } [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#neg_multiply [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/game/mod.rs:118:27 [INFO] [stderr] | [INFO] [stderr] 118 | self.score += add as u32; [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(add)` [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] error: you are getting the inner pointer of a temporary `CString` [INFO] [stderr] --> src/gui/mod.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | ffi::CString::new(WINDOW_TITLE).unwrap().as_ptr(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::temporary_cstring_as_ptr)] on by default [INFO] [stderr] = note: that pointer will be invalid outside this expression [INFO] [stderr] help: assign the `CString` to a variable to extend its lifetime [INFO] [stderr] --> src/gui/mod.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | ffi::CString::new(WINDOW_TITLE).unwrap().as_ptr(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#temporary_cstring_as_ptr [INFO] [stderr] [INFO] [stderr] error: you are getting the inner pointer of a temporary `CString` [INFO] [stderr] --> src/gui/mod.rs:87:17 [INFO] [stderr] | [INFO] [stderr] 87 | ffi::CString::new("WM_DELETE_WINDOW").unwrap().as_ptr(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: that pointer will be invalid outside this expression [INFO] [stderr] help: assign the `CString` to a variable to extend its lifetime [INFO] [stderr] --> src/gui/mod.rs:87:17 [INFO] [stderr] | [INFO] [stderr] 87 | ffi::CString::new("WM_DELETE_WINDOW").unwrap().as_ptr(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#temporary_cstring_as_ptr [INFO] [stderr] [INFO] [stderr] error: you are getting the inner pointer of a temporary `CString` [INFO] [stderr] --> src/gui/mod.rs:94:17 [INFO] [stderr] | [INFO] [stderr] 94 | ffi::CString::new("WM_PROTOCOLS").unwrap().as_ptr(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: that pointer will be invalid outside this expression [INFO] [stderr] help: assign the `CString` to a variable to extend its lifetime [INFO] [stderr] --> src/gui/mod.rs:94:17 [INFO] [stderr] | [INFO] [stderr] 94 | ffi::CString::new("WM_PROTOCOLS").unwrap().as_ptr(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#temporary_cstring_as_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer type (`*mut std::ffi::c_void`) to a reference type (`&x11::xinput2::Struct_Unnamed23`) [INFO] [stderr] --> src/gui/mod.rs:173:64 [INFO] [stderr] | [INFO] [stderr] 173 | let event_data: &xinput2::XIDeviceEvent = unsafe { mem::transmute(cookie.data) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*(cookie.data as *const x11::xinput2::Struct_Unnamed23)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ref [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/gui/mod.rs:206:34 [INFO] [stderr] | [INFO] [stderr] 206 | let thread_display_ptr = self.display_ptr.clone() as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.display_ptr` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/gui/mod.rs:207:29 [INFO] [stderr] | [INFO] [stderr] 207 | let thread_window = self.window.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.window` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: casting i8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/gui/mod.rs:305:33 [INFO] [stderr] | [INFO] [stderr] 305 | 12*coord.0 as i32 + WINDOW_PADDING + 1, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i32::from(coord.0)` [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 i8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/gui/mod.rs:306:33 [INFO] [stderr] | [INFO] [stderr] 306 | 228-(12*coord.1 as i32) + WINDOW_PADDING + 1, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i32::from(coord.1)` [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 i8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/gui/mod.rs:321:33 [INFO] [stderr] | [INFO] [stderr] 321 | 12*coord.0 as i32 + WINDOW_PADDING + 1, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i32::from(coord.0)` [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 i8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/gui/mod.rs:322:33 [INFO] [stderr] | [INFO] [stderr] 322 | 228-(12*coord.1 as i32) + WINDOW_PADDING + 1, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i32::from(coord.1)` [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] error: aborting due to 3 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `tetroids`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "39e7ddbf5629fffb5d136fd7ce3d61c411af83f1ba712aebabe6c2d1d21e708a"` [INFO] running `"docker" "rm" "-f" "39e7ddbf5629fffb5d136fd7ce3d61c411af83f1ba712aebabe6c2d1d21e708a"` [INFO] [stdout] 39e7ddbf5629fffb5d136fd7ce3d61c411af83f1ba712aebabe6c2d1d21e708a