[INFO] crate gilrs-core 0.1.0 is already in cache [INFO] extracting crate gilrs-core 0.1.0 into work/ex/clippy-test-run/sources/stable/reg/gilrs-core/0.1.0 [INFO] extracting crate gilrs-core 0.1.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/gilrs-core/0.1.0 [INFO] validating manifest of gilrs-core-0.1.0 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 gilrs-core-0.1.0 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 gilrs-core-0.1.0 [INFO] finished frobbing gilrs-core-0.1.0 [INFO] frobbed toml for gilrs-core-0.1.0 written to work/ex/clippy-test-run/sources/stable/reg/gilrs-core/0.1.0/Cargo.toml [INFO] started frobbing gilrs-core-0.1.0 [INFO] finished frobbing gilrs-core-0.1.0 [INFO] frobbed toml for gilrs-core-0.1.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/gilrs-core/0.1.0/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [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 gilrs-core-0.1.0 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/reg/gilrs-core/0.1.0:/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] 95b1fc343bf0abb2646a7f588b171c2b00de492bb1e537e8d0e4ed9fe5332eab [INFO] running `"docker" "start" "-a" "95b1fc343bf0abb2646a7f588b171c2b00de492bb1e537e8d0e4ed9fe5332eab"` [INFO] [stderr] Checking libudev-sys v0.1.4 [INFO] [stderr] Checking gilrs-core v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/platform/linux/ff.rs:41:17 [INFO] [stderr] | [INFO] [stderr] 41 | file: file, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `file` [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/platform/linux/ff.rs:41:17 [INFO] [stderr] | [INFO] [stderr] 41 | file: file, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `file` [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: module has the same name as its containing module [INFO] [stderr] --> src/platform/mod.rs:25:1 [INFO] [stderr] | [INFO] [stderr] 25 | mod platform; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/platform/linux/gamepad.rs:653:16 [INFO] [stderr] | [INFO] [stderr] 653 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 654 | | if self.fd > -1 { [INFO] [stderr] 655 | | PowerInfo::Wired [INFO] [stderr] 656 | | } else { [INFO] [stderr] 657 | | PowerInfo::Unknown [INFO] [stderr] 658 | | } [INFO] [stderr] 659 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 653 | } else if self.fd > -1 { [INFO] [stderr] 654 | PowerInfo::Wired [INFO] [stderr] 655 | } else { [INFO] [stderr] 656 | PowerInfo::Unknown [INFO] [stderr] 657 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: All variants have the same prefix: `Udev` [INFO] [stderr] --> src/platform/linux/gamepad.rs:789:1 [INFO] [stderr] | [INFO] [stderr] 789 | / enum Error { [INFO] [stderr] 790 | | UdevCtx, [INFO] [stderr] 791 | | UdevEnumerate, [INFO] [stderr] 792 | | UdevMonitor, [INFO] [stderr] 793 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::enum_variant_names)] on by default [INFO] [stderr] = help: remove the prefixes and use full paths to the variants instead of glob imports [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/platform/mod.rs:25:1 [INFO] [stderr] | [INFO] [stderr] 25 | mod platform; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/platform/linux/gamepad.rs:653:16 [INFO] [stderr] | [INFO] [stderr] 653 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 654 | | if self.fd > -1 { [INFO] [stderr] 655 | | PowerInfo::Wired [INFO] [stderr] 656 | | } else { [INFO] [stderr] 657 | | PowerInfo::Unknown [INFO] [stderr] 658 | | } [INFO] [stderr] 659 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 653 | } else if self.fd > -1 { [INFO] [stderr] 654 | PowerInfo::Wired [INFO] [stderr] 655 | } else { [INFO] [stderr] 656 | PowerInfo::Unknown [INFO] [stderr] 657 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: All variants have the same prefix: `Udev` [INFO] [stderr] --> src/platform/linux/gamepad.rs:789:1 [INFO] [stderr] | [INFO] [stderr] 789 | / enum Error { [INFO] [stderr] 790 | | UdevCtx, [INFO] [stderr] 791 | | UdevEnumerate, [INFO] [stderr] 792 | | UdevMonitor, [INFO] [stderr] 793 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::enum_variant_names)] on by default [INFO] [stderr] = help: remove the prefixes and use full paths to the variants instead of glob imports [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stderr] [INFO] [stderr] warning: The function/method `ioctl::eviocsff` doesn't need a mutable reference [INFO] [stderr] --> src/platform/linux/ff.rs:34:62 [INFO] [stderr] | [INFO] [stderr] 34 | let res = unsafe { ioctl::eviocsff(file.as_raw_fd(), &mut effect) }; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/ff.rs:48:45 [INFO] [stderr] | [INFO] [stderr] 48 | min_duration.as_secs() * 1000 + (min_duration.subsec_nanos() / 1_000_000) as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(min_duration.subsec_nanos() / 1_000_000)` [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: Calling `subsec_millis()` is more concise than this calculation [INFO] [stderr] --> src/platform/linux/ff.rs:48:45 [INFO] [stderr] | [INFO] [stderr] 48 | min_duration.as_secs() * 1000 + (min_duration.subsec_nanos() / 1_000_000) as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `min_duration.subsec_millis()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::duration_subsec)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duration_subsec [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/ff.rs:49:38 [INFO] [stderr] | [INFO] [stderr] 49 | let duration = if duration > U16_MAX as u64 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u64::from(U16_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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/platform/linux/ff.rs:72:13 [INFO] [stderr] | [INFO] [stderr] 72 | / match ioctl::eviocsff(self.file.as_raw_fd(), &mut effect) { [INFO] [stderr] 73 | | Err(err) => { [INFO] [stderr] 74 | | error!( [INFO] [stderr] 75 | | "Failed to modify effect of gamepad {:?}, error: {}", [INFO] [stderr] ... | [INFO] [stderr] 80 | | Ok(_) => (), [INFO] [stderr] 81 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 72 | if let Err(err) = ioctl::eviocsff(self.file.as_raw_fd(), &mut effect) { [INFO] [stderr] 73 | error!( [INFO] [stderr] 74 | "Failed to modify effect of gamepad {:?}, error: {}", [INFO] [stderr] 75 | self.file, err [INFO] [stderr] 76 | ); [INFO] [stderr] 77 | return; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: The function/method `ioctl::eviocsff` doesn't need a mutable reference [INFO] [stderr] --> src/platform/linux/ff.rs:72:58 [INFO] [stderr] | [INFO] [stderr] 72 | match ioctl::eviocsff(self.file.as_raw_fd(), &mut effect) { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/platform/linux/ff.rs:109:9 [INFO] [stderr] | [INFO] [stderr] 109 | / match unsafe { ioctl::eviocrmff(self.file.as_raw_fd(), effect) } { [INFO] [stderr] 110 | | Err(err) => error!( [INFO] [stderr] 111 | | "Failed to remove effect of gamepad {:?}: {}", [INFO] [stderr] 112 | | self.file, err [INFO] [stderr] 113 | | ), [INFO] [stderr] 114 | | Ok(_) => (), [INFO] [stderr] 115 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 109 | if let Err(err) = unsafe { ioctl::eviocrmff(self.file.as_raw_fd(), effect) } { error!( [INFO] [stderr] 110 | "Failed to remove effect of gamepad {:?}: {}", [INFO] [stderr] 111 | self.file, err [INFO] [stderr] 112 | ) }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: The function/method `ioctl::eviocsff` doesn't need a mutable reference [INFO] [stderr] --> src/platform/linux/ff.rs:34:62 [INFO] [stderr] | [INFO] [stderr] 34 | let res = unsafe { ioctl::eviocsff(file.as_raw_fd(), &mut effect) }; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: use of `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/platform/linux/gamepad.rs:175:19 [INFO] [stderr] | [INFO] [stderr] 175 | let end = r_ptr.offset(r.len() as isize); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `r_ptr.add(r.len())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_offset_with_cast)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/platform/linux/gamepad.rs:183:9 [INFO] [stderr] | [INFO] [stderr] 183 | / if *l_ptr == 0 && r_ptr == end { [INFO] [stderr] 184 | | true [INFO] [stderr] 185 | | } else { [INFO] [stderr] 186 | | false [INFO] [stderr] 187 | | } [INFO] [stderr] | |_________^ help: you can reduce it to: `*l_ptr == 0 && r_ptr == end` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/gamepad.rs:204:17 [INFO] [stderr] | [INFO] [stderr] 204 | EV_ABS as u32, [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u32::from(EV_ABS)` [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 u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/gamepad.rs:211:38 [INFO] [stderr] | [INFO] [stderr] 211 | ioctl::eviocgabs(fd, axis.code as u32, &mut info); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u32::from(axis.code)` [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 u64 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/ff.rs:48:45 [INFO] [stderr] | [INFO] [stderr] 48 | min_duration.as_secs() * 1000 + (min_duration.subsec_nanos() / 1_000_000) as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(min_duration.subsec_nanos() / 1_000_000)` [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: Calling `subsec_millis()` is more concise than this calculation [INFO] [stderr] --> src/platform/linux/ff.rs:48:45 [INFO] [stderr] | [INFO] [stderr] 48 | min_duration.as_secs() * 1000 + (min_duration.subsec_nanos() / 1_000_000) as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `min_duration.subsec_millis()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::duration_subsec)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duration_subsec [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/ff.rs:49:38 [INFO] [stderr] | [INFO] [stderr] 49 | let duration = if duration > U16_MAX as u64 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u64::from(U16_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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/platform/linux/ff.rs:72:13 [INFO] [stderr] | [INFO] [stderr] 72 | / match ioctl::eviocsff(self.file.as_raw_fd(), &mut effect) { [INFO] [stderr] 73 | | Err(err) => { [INFO] [stderr] 74 | | error!( [INFO] [stderr] 75 | | "Failed to modify effect of gamepad {:?}, error: {}", [INFO] [stderr] ... | [INFO] [stderr] 80 | | Ok(_) => (), [INFO] [stderr] 81 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 72 | if let Err(err) = ioctl::eviocsff(self.file.as_raw_fd(), &mut effect) { [INFO] [stderr] 73 | error!( [INFO] [stderr] 74 | "Failed to modify effect of gamepad {:?}, error: {}", [INFO] [stderr] 75 | self.file, err [INFO] [stderr] 76 | ); [INFO] [stderr] 77 | return; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: The function/method `ioctl::eviocsff` doesn't need a mutable reference [INFO] [stderr] --> src/platform/linux/ff.rs:72:58 [INFO] [stderr] | [INFO] [stderr] 72 | match ioctl::eviocsff(self.file.as_raw_fd(), &mut effect) { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/platform/linux/ff.rs:109:9 [INFO] [stderr] | [INFO] [stderr] 109 | / match unsafe { ioctl::eviocrmff(self.file.as_raw_fd(), effect) } { [INFO] [stderr] 110 | | Err(err) => error!( [INFO] [stderr] 111 | | "Failed to remove effect of gamepad {:?}: {}", [INFO] [stderr] 112 | | self.file, err [INFO] [stderr] 113 | | ), [INFO] [stderr] 114 | | Ok(_) => (), [INFO] [stderr] 115 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 109 | if let Err(err) = unsafe { ioctl::eviocrmff(self.file.as_raw_fd(), effect) } { error!( [INFO] [stderr] 110 | "Failed to remove effect of gamepad {:?}: {}", [INFO] [stderr] 111 | self.file, err [INFO] [stderr] 112 | ) }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/gamepad.rs:341:17 [INFO] [stderr] | [INFO] [stderr] 341 | EV_KEY as u32, [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u32::from(EV_KEY)` [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 u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/gamepad.rs:347:17 [INFO] [stderr] | [INFO] [stderr] 347 | EV_ABS as u32, [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u32::from(EV_ABS)` [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 u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/gamepad.rs:375:37 [INFO] [stderr] | [INFO] [stderr] 375 | if ioctl::eviocgbit(fd, EV_FF as u32, ff_bits.len() as i32, ff_bits.as_mut_ptr()) >= 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u32::from(EV_FF)` [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 if-then-else expression returns a bool literal [INFO] [stderr] --> src/platform/linux/gamepad.rs:376:17 [INFO] [stderr] | [INFO] [stderr] 376 | / if utils::test_bit(FF_SQUARE, &ff_bits) [INFO] [stderr] 377 | | && utils::test_bit(FF_TRIANGLE, &ff_bits) [INFO] [stderr] 378 | | && utils::test_bit(FF_SINE, &ff_bits) [INFO] [stderr] 379 | | && utils::test_bit(FF_GAIN, &ff_bits) [INFO] [stderr] ... | [INFO] [stderr] 383 | | false [INFO] [stderr] 384 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] help: you can reduce it to [INFO] [stderr] | [INFO] [stderr] 376 | utils::test_bit(FF_SQUARE, &ff_bits) [INFO] [stderr] 377 | && utils::test_bit(FF_TRIANGLE, &ff_bits) [INFO] [stderr] 378 | && utils::test_bit(FF_SINE, &ff_bits) [INFO] [stderr] 379 | && utils::test_bit(FF_GAIN, &ff_bits) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/platform/linux/gamepad.rs:393:9 [INFO] [stderr] | [INFO] [stderr] 393 | / if self.buttons.len() >= 1 && self.axes.len() >= 2 { [INFO] [stderr] 394 | | true [INFO] [stderr] 395 | | } else { [INFO] [stderr] 396 | | false [INFO] [stderr] 397 | | } [INFO] [stderr] | |_________^ help: you can reduce it to: `self.buttons.len() >= 1 && self.axes.len() >= 2` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/platform/linux/gamepad.rs:393:12 [INFO] [stderr] | [INFO] [stderr] 393 | if self.buttons.len() >= 1 && self.axes.len() >= 2 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.buttons.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: use of `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/platform/linux/gamepad.rs:175:19 [INFO] [stderr] | [INFO] [stderr] 175 | let end = r_ptr.offset(r.len() as isize); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `r_ptr.add(r.len())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_offset_with_cast)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/platform/linux/gamepad.rs:183:9 [INFO] [stderr] | [INFO] [stderr] 183 | / if *l_ptr == 0 && r_ptr == end { [INFO] [stderr] 184 | | true [INFO] [stderr] 185 | | } else { [INFO] [stderr] 186 | | false [INFO] [stderr] 187 | | } [INFO] [stderr] | |_________^ help: you can reduce it to: `*l_ptr == 0 && r_ptr == end` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/gamepad.rs:204:17 [INFO] [stderr] | [INFO] [stderr] 204 | EV_ABS as u32, [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u32::from(EV_ABS)` [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 u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/gamepad.rs:211:38 [INFO] [stderr] | [INFO] [stderr] 211 | ioctl::eviocgabs(fd, axis.code as u32, &mut info); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u32::from(axis.code)` [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: length comparison to zero [INFO] [stderr] --> src/platform/linux/gamepad.rs:525:12 [INFO] [stderr] | [INFO] [stderr] 525 | if self.dropped_events.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.dropped_events.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/platform/linux/gamepad.rs:531:42 [INFO] [stderr] | [INFO] [stderr] 531 | let n = c::read(self.fd, mem::transmute(&mut event), size); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut event as *mut platform::platform::ioctl::input_event as *mut libc::c_void` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_transmute)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/gamepad.rs:549:43 [INFO] [stderr] | [INFO] [stderr] 549 | ioctl::eviocgabs(self.fd, axis.code as u32, &mut absinfo); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u32::from(axis.code)` [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: transmute from a pointer to a pointer [INFO] [stderr] --> src/platform/linux/gamepad.rs:617:21 [INFO] [stderr] | [INFO] [stderr] 617 | mem::transmute(buff.as_mut_ptr()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `buff.as_mut_ptr() as *mut libc::c_void` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ptr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer to a pointer [INFO] [stderr] --> src/platform/linux/gamepad.rs:635:25 [INFO] [stderr] | [INFO] [stderr] 635 | mem::transmute(buff.as_mut_ptr()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `buff.as_mut_ptr() as *mut libc::c_void` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/gamepad.rs:341:17 [INFO] [stderr] | [INFO] [stderr] 341 | EV_KEY as u32, [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u32::from(EV_KEY)` [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 u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/gamepad.rs:347:17 [INFO] [stderr] | [INFO] [stderr] 347 | EV_ABS as u32, [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u32::from(EV_ABS)` [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 u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/gamepad.rs:722:15 [INFO] [stderr] | [INFO] [stderr] 722 | let bus = (iid.bustype as u32).to_be(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(iid.bustype)` [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 u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/gamepad.rs:375:37 [INFO] [stderr] | [INFO] [stderr] 375 | if ioctl::eviocgbit(fd, EV_FF as u32, ff_bits.len() as i32, ff_bits.as_mut_ptr()) >= 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u32::from(EV_FF)` [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 if-then-else expression returns a bool literal [INFO] [stderr] --> src/platform/linux/gamepad.rs:376:17 [INFO] [stderr] | [INFO] [stderr] 376 | / if utils::test_bit(FF_SQUARE, &ff_bits) [INFO] [stderr] 377 | | && utils::test_bit(FF_TRIANGLE, &ff_bits) [INFO] [stderr] 378 | | && utils::test_bit(FF_SINE, &ff_bits) [INFO] [stderr] 379 | | && utils::test_bit(FF_GAIN, &ff_bits) [INFO] [stderr] ... | [INFO] [stderr] 383 | | false [INFO] [stderr] 384 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] help: you can reduce it to [INFO] [stderr] | [INFO] [stderr] 376 | utils::test_bit(FF_SQUARE, &ff_bits) [INFO] [stderr] 377 | && utils::test_bit(FF_TRIANGLE, &ff_bits) [INFO] [stderr] 378 | && utils::test_bit(FF_SINE, &ff_bits) [INFO] [stderr] 379 | && utils::test_bit(FF_GAIN, &ff_bits) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/platform/linux/gamepad.rs:393:9 [INFO] [stderr] | [INFO] [stderr] 393 | / if self.buttons.len() >= 1 && self.axes.len() >= 2 { [INFO] [stderr] 394 | | true [INFO] [stderr] 395 | | } else { [INFO] [stderr] 396 | | false [INFO] [stderr] 397 | | } [INFO] [stderr] | |_________^ help: you can reduce it to: `self.buttons.len() >= 1 && self.axes.len() >= 2` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: length comparison to one [INFO] [stderr] --> src/platform/linux/gamepad.rs:393:12 [INFO] [stderr] | [INFO] [stderr] 393 | if self.buttons.len() >= 1 && self.axes.len() >= 2 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.buttons.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/gamepad.rs:759:9 [INFO] [stderr] | [INFO] [stderr] 759 | (self.kind as u32) << 16 | self.code as u32 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.kind)` [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 u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/gamepad.rs:759:36 [INFO] [stderr] | [INFO] [stderr] 759 | (self.kind as u32) << 16 | self.code as u32 [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u32::from(self.code)` [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: length comparison to zero [INFO] [stderr] --> src/platform/linux/gamepad.rs:525:12 [INFO] [stderr] | [INFO] [stderr] 525 | if self.dropped_events.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.dropped_events.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a pointer [INFO] [stderr] --> src/platform/linux/gamepad.rs:531:42 [INFO] [stderr] | [INFO] [stderr] 531 | let n = c::read(self.fd, mem::transmute(&mut event), size); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut event as *mut platform::platform::ioctl::input_event as *mut libc::c_void` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_transmute)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_transmute [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/gamepad.rs:549:43 [INFO] [stderr] | [INFO] [stderr] 549 | ioctl::eviocgabs(self.fd, axis.code as u32, &mut absinfo); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u32::from(axis.code)` [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: transmute from a pointer to a pointer [INFO] [stderr] --> src/platform/linux/gamepad.rs:617:21 [INFO] [stderr] | [INFO] [stderr] 617 | mem::transmute(buff.as_mut_ptr()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `buff.as_mut_ptr() as *mut libc::c_void` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ptr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a pointer to a pointer [INFO] [stderr] --> src/platform/linux/gamepad.rs:635:25 [INFO] [stderr] | [INFO] [stderr] 635 | mem::transmute(buff.as_mut_ptr()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `buff.as_mut_ptr() as *mut libc::c_void` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/gamepad.rs:722:15 [INFO] [stderr] | [INFO] [stderr] 722 | let bus = (iid.bustype as u32).to_be(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(iid.bustype)` [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 u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/gamepad.rs:759:9 [INFO] [stderr] | [INFO] [stderr] 759 | (self.kind as u32) << 16 | self.code as u32 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.kind)` [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 u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/gamepad.rs:759:36 [INFO] [stderr] | [INFO] [stderr] 759 | (self.kind as u32) << 16 | self.code as u32 [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u32::from(self.code)` [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: transmute from a reference to a reference [INFO] [stderr] --> src/lib.rs:154:25 [INFO] [stderr] | [INFO] [stderr] 154 | gp.map(|gp| mem::transmute(gp)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `&*(gp as *const platform::platform::gamepad::Gamepad as *const Gamepad)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:195:9 [INFO] [stderr] | [INFO] [stderr] 195 | self.inner.uuid().as_bytes().clone() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*self.inner.uuid().as_bytes()` [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: transmute from a reference to a reference [INFO] [stderr] --> src/lib.rs:218:13 [INFO] [stderr] | [INFO] [stderr] 218 | mem::transmute(bt) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `&*(bt as *const [platform::platform::gamepad::EvCode] as *const [EvCode])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/lib.rs:227:13 [INFO] [stderr] | [INFO] [stderr] 227 | mem::transmute(ax) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `&*(ax as *const [platform::platform::gamepad::EvCode] as *const [EvCode])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:268:9 [INFO] [stderr] | [INFO] [stderr] 268 | / match self { [INFO] [stderr] 269 | | &PlatformError::NotImplemented(_) => { [INFO] [stderr] 270 | | f.write_str("Gilrs does not support current platform.") [INFO] [stderr] 271 | | } [INFO] [stderr] 272 | | &PlatformError::Other(ref e) => e.fmt(f), [INFO] [stderr] 273 | | } [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] 268 | match *self { [INFO] [stderr] 269 | PlatformError::NotImplemented(_) => { [INFO] [stderr] 270 | f.write_str("Gilrs does not support current platform.") [INFO] [stderr] 271 | } [INFO] [stderr] 272 | PlatformError::Other(ref e) => e.fmt(f), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:279:9 [INFO] [stderr] | [INFO] [stderr] 279 | / match self { [INFO] [stderr] 280 | | &PlatformError::NotImplemented(_) => "platform not supported", [INFO] [stderr] 281 | | &PlatformError::Other(_) => "platform specific error", [INFO] [stderr] 282 | | } [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] 279 | match *self { [INFO] [stderr] 280 | PlatformError::NotImplemented(_) => "platform not supported", [INFO] [stderr] 281 | PlatformError::Other(_) => "platform specific error", [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:286:9 [INFO] [stderr] | [INFO] [stderr] 286 | / match self { [INFO] [stderr] 287 | | &PlatformError::NotImplemented(_) => None, [INFO] [stderr] 288 | | &PlatformError::Other(ref e) => Some(&**e), [INFO] [stderr] 289 | | } [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] 286 | match *self { [INFO] [stderr] 287 | PlatformError::NotImplemented(_) => None, [INFO] [stderr] 288 | PlatformError::Other(ref e) => Some(&**e), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:307:9 [INFO] [stderr] | [INFO] [stderr] 307 | / match self { [INFO] [stderr] 308 | | &Error::NotImplemented(_) => f.write_str("Gilrs does not support current platform."), [INFO] [stderr] 309 | | &Error::Other(ref e) => e.fmt(f), [INFO] [stderr] 310 | | } [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] 307 | match *self { [INFO] [stderr] 308 | Error::NotImplemented(_) => f.write_str("Gilrs does not support current platform."), [INFO] [stderr] 309 | Error::Other(ref e) => e.fmt(f), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:316:9 [INFO] [stderr] | [INFO] [stderr] 316 | / match self { [INFO] [stderr] 317 | | &Error::NotImplemented(_) => "platform not supported", [INFO] [stderr] 318 | | &Error::Other(_) => "platform specific error", [INFO] [stderr] 319 | | } [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] 316 | match *self { [INFO] [stderr] 317 | Error::NotImplemented(_) => "platform not supported", [INFO] [stderr] 318 | Error::Other(_) => "platform specific error", [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:323:9 [INFO] [stderr] | [INFO] [stderr] 323 | / match self { [INFO] [stderr] 324 | | &Error::NotImplemented(_) => None, [INFO] [stderr] 325 | | &Error::Other(ref e) => Some(&**e), [INFO] [stderr] 326 | | } [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] 323 | match *self { [INFO] [stderr] 324 | Error::NotImplemented(_) => None, [INFO] [stderr] 325 | Error::Other(ref e) => Some(&**e), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/lib.rs:154:25 [INFO] [stderr] | [INFO] [stderr] 154 | gp.map(|gp| mem::transmute(gp)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `&*(gp as *const platform::platform::gamepad::Gamepad as *const Gamepad)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:195:9 [INFO] [stderr] | [INFO] [stderr] 195 | self.inner.uuid().as_bytes().clone() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*self.inner.uuid().as_bytes()` [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: transmute from a reference to a reference [INFO] [stderr] --> src/lib.rs:218:13 [INFO] [stderr] | [INFO] [stderr] 218 | mem::transmute(bt) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `&*(bt as *const [platform::platform::gamepad::EvCode] as *const [EvCode])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/lib.rs:227:13 [INFO] [stderr] | [INFO] [stderr] 227 | mem::transmute(ax) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `&*(ax as *const [platform::platform::gamepad::EvCode] as *const [EvCode])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:268:9 [INFO] [stderr] | [INFO] [stderr] 268 | / match self { [INFO] [stderr] 269 | | &PlatformError::NotImplemented(_) => { [INFO] [stderr] 270 | | f.write_str("Gilrs does not support current platform.") [INFO] [stderr] 271 | | } [INFO] [stderr] 272 | | &PlatformError::Other(ref e) => e.fmt(f), [INFO] [stderr] 273 | | } [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] 268 | match *self { [INFO] [stderr] 269 | PlatformError::NotImplemented(_) => { [INFO] [stderr] 270 | f.write_str("Gilrs does not support current platform.") [INFO] [stderr] 271 | } [INFO] [stderr] 272 | PlatformError::Other(ref e) => e.fmt(f), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:279:9 [INFO] [stderr] | [INFO] [stderr] 279 | / match self { [INFO] [stderr] 280 | | &PlatformError::NotImplemented(_) => "platform not supported", [INFO] [stderr] 281 | | &PlatformError::Other(_) => "platform specific error", [INFO] [stderr] 282 | | } [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] 279 | match *self { [INFO] [stderr] 280 | PlatformError::NotImplemented(_) => "platform not supported", [INFO] [stderr] 281 | PlatformError::Other(_) => "platform specific error", [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:286:9 [INFO] [stderr] | [INFO] [stderr] 286 | / match self { [INFO] [stderr] 287 | | &PlatformError::NotImplemented(_) => None, [INFO] [stderr] 288 | | &PlatformError::Other(ref e) => Some(&**e), [INFO] [stderr] 289 | | } [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] 286 | match *self { [INFO] [stderr] 287 | PlatformError::NotImplemented(_) => None, [INFO] [stderr] 288 | PlatformError::Other(ref e) => Some(&**e), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:307:9 [INFO] [stderr] | [INFO] [stderr] 307 | / match self { [INFO] [stderr] 308 | | &Error::NotImplemented(_) => f.write_str("Gilrs does not support current platform."), [INFO] [stderr] 309 | | &Error::Other(ref e) => e.fmt(f), [INFO] [stderr] 310 | | } [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] 307 | match *self { [INFO] [stderr] 308 | Error::NotImplemented(_) => f.write_str("Gilrs does not support current platform."), [INFO] [stderr] 309 | Error::Other(ref e) => e.fmt(f), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:316:9 [INFO] [stderr] | [INFO] [stderr] 316 | / match self { [INFO] [stderr] 317 | | &Error::NotImplemented(_) => "platform not supported", [INFO] [stderr] 318 | | &Error::Other(_) => "platform specific error", [INFO] [stderr] 319 | | } [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] 316 | match *self { [INFO] [stderr] 317 | Error::NotImplemented(_) => "platform not supported", [INFO] [stderr] 318 | Error::Other(_) => "platform specific error", [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:323:9 [INFO] [stderr] | [INFO] [stderr] 323 | / match self { [INFO] [stderr] 324 | | &Error::NotImplemented(_) => None, [INFO] [stderr] 325 | | &Error::Other(ref e) => Some(&**e), [INFO] [stderr] 326 | | } [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] 323 | match *self { [INFO] [stderr] 324 | Error::NotImplemented(_) => None, [INFO] [stderr] 325 | Error::Other(ref e) => Some(&**e), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 4.02s [INFO] running `"docker" "inspect" "95b1fc343bf0abb2646a7f588b171c2b00de492bb1e537e8d0e4ed9fe5332eab"` [INFO] running `"docker" "rm" "-f" "95b1fc343bf0abb2646a7f588b171c2b00de492bb1e537e8d0e4ed9fe5332eab"` [INFO] [stdout] 95b1fc343bf0abb2646a7f588b171c2b00de492bb1e537e8d0e4ed9fe5332eab