[INFO] crate gilrs 0.6.1 is already in cache [INFO] extracting crate gilrs 0.6.1 into work/ex/clippy-test-run/sources/stable/reg/gilrs/0.6.1 [INFO] extracting crate gilrs 0.6.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/gilrs/0.6.1 [INFO] validating manifest of gilrs-0.6.1 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-0.6.1 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-0.6.1 [INFO] finished frobbing gilrs-0.6.1 [INFO] frobbed toml for gilrs-0.6.1 written to work/ex/clippy-test-run/sources/stable/reg/gilrs/0.6.1/Cargo.toml [INFO] started frobbing gilrs-0.6.1 [INFO] finished frobbing gilrs-0.6.1 [INFO] frobbed toml for gilrs-0.6.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/gilrs/0.6.1/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-0.6.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/gilrs/0.6.1:/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] 1bf61216dab6774e263d92c40946bcb7cd613ea48e087beec91e8b04697d542b [INFO] running `"docker" "start" "-a" "1bf61216dab6774e263d92c40946bcb7cd613ea48e087beec91e8b04697d542b"` [INFO] [stderr] Checking gilrs v0.6.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/platform/linux/gamepad.rs:329:13 [INFO] [stderr] | [INFO] [stderr] 329 | fd: fd, [INFO] [stderr] | ^^^^^^ help: replace it with: `fd` [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/gamepad.rs:331:13 [INFO] [stderr] | [INFO] [stderr] 331 | ff_supported: ff_supported, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ff_supported` [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/platform/linux/gamepad.rs:333:13 [INFO] [stderr] | [INFO] [stderr] 333 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/platform/linux/gamepad.rs:334:13 [INFO] [stderr] | [INFO] [stderr] 334 | uuid: uuid, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `uuid` [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/platform/linux/ff.rs:40:17 [INFO] [stderr] | [INFO] [stderr] 40 | file: file, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `file` [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/ff/effect_source.rs:352:13 [INFO] [stderr] | [INFO] [stderr] 352 | strong: strong, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `strong` [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/ff/effect_source.rs:353:13 [INFO] [stderr] | [INFO] [stderr] 353 | weak: weak, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `weak` [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/platform/linux/gamepad.rs:329:13 [INFO] [stderr] | [INFO] [stderr] 329 | fd: fd, [INFO] [stderr] | ^^^^^^ help: replace it with: `fd` [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/gamepad.rs:331:13 [INFO] [stderr] | [INFO] [stderr] 331 | ff_supported: ff_supported, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ff_supported` [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/platform/linux/gamepad.rs:333:13 [INFO] [stderr] | [INFO] [stderr] 333 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/platform/linux/gamepad.rs:334:13 [INFO] [stderr] | [INFO] [stderr] 334 | uuid: uuid, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `uuid` [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/platform/linux/ff.rs:40:17 [INFO] [stderr] | [INFO] [stderr] 40 | file: file, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `file` [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/ff/effect_source.rs:352:13 [INFO] [stderr] | [INFO] [stderr] 352 | strong: strong, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `strong` [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/ff/effect_source.rs:353:13 [INFO] [stderr] | [INFO] [stderr] 353 | weak: weak, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `weak` [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: 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:668:16 [INFO] [stderr] | [INFO] [stderr] 668 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 669 | | if self.fd > -1 { [INFO] [stderr] 670 | | PowerInfo::Wired [INFO] [stderr] 671 | | } else { [INFO] [stderr] 672 | | PowerInfo::Unknown [INFO] [stderr] 673 | | } [INFO] [stderr] 674 | | } [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] 668 | } else if self.fd > -1 { [INFO] [stderr] 669 | PowerInfo::Wired [INFO] [stderr] 670 | } else { [INFO] [stderr] 671 | PowerInfo::Unknown [INFO] [stderr] 672 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: All variants have the same prefix: `Udev` [INFO] [stderr] --> src/platform/linux/gamepad.rs:804:1 [INFO] [stderr] | [INFO] [stderr] 804 | / enum Error { [INFO] [stderr] 805 | | UdevCtx, [INFO] [stderr] 806 | | UdevEnumerate, [INFO] [stderr] 807 | | UdevMonitor, [INFO] [stderr] 808 | | } [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/platform/linux/mod.rs:16:18 [INFO] [stderr] | [INFO] [stderr] 16 | pub const NAME: &'static str = "Linux"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [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: 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:668:16 [INFO] [stderr] | [INFO] [stderr] 668 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 669 | | if self.fd > -1 { [INFO] [stderr] 670 | | PowerInfo::Wired [INFO] [stderr] 671 | | } else { [INFO] [stderr] 672 | | PowerInfo::Unknown [INFO] [stderr] 673 | | } [INFO] [stderr] 674 | | } [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] 668 | } else if self.fd > -1 { [INFO] [stderr] 669 | PowerInfo::Wired [INFO] [stderr] 670 | } else { [INFO] [stderr] 671 | PowerInfo::Unknown [INFO] [stderr] 672 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: All variants have the same prefix: `Udev` [INFO] [stderr] --> src/platform/linux/gamepad.rs:804:1 [INFO] [stderr] | [INFO] [stderr] 804 | / enum Error { [INFO] [stderr] 805 | | UdevCtx, [INFO] [stderr] 806 | | UdevEnumerate, [INFO] [stderr] 807 | | UdevMonitor, [INFO] [stderr] 808 | | } [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/platform/linux/mod.rs:16:18 [INFO] [stderr] | [INFO] [stderr] 16 | pub const NAME: &'static str = "Linux"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [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/mapping/mod.rs:547:22 [INFO] [stderr] | [INFO] [stderr] 547 | const TEST_STR: &'static str = "03000000260900008888000000010001,GameCube {WiseGroup USB \ [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: long literal lacking separators [INFO] [stderr] --> src/ff/mod.rs:410:44 [INFO] [stderr] | [INFO] [stderr] 410 | assert_eq!(env.at(Ticks(40), dur), 0.19999999); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0.199_999_99` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `gamepad::GilrsBuilder` [INFO] [stderr] --> src/gamepad.rs:487:5 [INFO] [stderr] | [INFO] [stderr] 487 | / pub fn new() -> Self { [INFO] [stderr] 488 | | GilrsBuilder { [INFO] [stderr] 489 | | mappings: MappingDb::new(), [INFO] [stderr] 490 | | default_filters: true, [INFO] [stderr] ... | [INFO] [stderr] 496 | | } [INFO] [stderr] 497 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 485 | impl Default for gamepad::GilrsBuilder { [INFO] [stderr] 486 | fn default() -> Self { [INFO] [stderr] 487 | Self::new() [INFO] [stderr] 488 | } [INFO] [stderr] 489 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/gamepad.rs:914:18 [INFO] [stderr] | [INFO] [stderr] 914 | .map(|nec| Code(nec)) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove closure as shown: `Code` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/gamepad.rs:921:18 [INFO] [stderr] | [INFO] [stderr] 921 | .map(|nec| Code(nec)) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove closure as shown: `Code` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/gamepad.rs:1021:5 [INFO] [stderr] | [INFO] [stderr] 1021 | NotImplemented(Gilrs), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 1021 | NotImplemented(Box), [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/gamepad.rs:1030:9 [INFO] [stderr] | [INFO] [stderr] 1030 | / match self { [INFO] [stderr] 1031 | | &Error::NotImplemented(_) => f.write_str("Gilrs does not support current platform."), [INFO] [stderr] 1032 | | &Error::InvalidAxisToBtn => f.write_str( [INFO] [stderr] 1033 | | "Either `pressed ≤ released` or one of values is outside [0.0, 1.0] range.", [INFO] [stderr] 1034 | | ), [INFO] [stderr] 1035 | | &Error::Other(ref e) => e.fmt(f), [INFO] [stderr] 1036 | | } [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] 1030 | match *self { [INFO] [stderr] 1031 | Error::NotImplemented(_) => f.write_str("Gilrs does not support current platform."), [INFO] [stderr] 1032 | Error::InvalidAxisToBtn => f.write_str( [INFO] [stderr] 1033 | "Either `pressed ≤ released` or one of values is outside [0.0, 1.0] range.", [INFO] [stderr] 1034 | ), [INFO] [stderr] 1035 | 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/gamepad.rs:1042:9 [INFO] [stderr] | [INFO] [stderr] 1042 | / match self { [INFO] [stderr] 1043 | | &Error::NotImplemented(_) => "platform not supported", [INFO] [stderr] 1044 | | &Error::InvalidAxisToBtn => "values passed to set_axis_to_btn() are invalid", [INFO] [stderr] 1045 | | &Error::Other(_) => "platform specific error", [INFO] [stderr] 1046 | | } [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] 1042 | match *self { [INFO] [stderr] 1043 | Error::NotImplemented(_) => "platform not supported", [INFO] [stderr] 1044 | Error::InvalidAxisToBtn => "values passed to set_axis_to_btn() are invalid", [INFO] [stderr] 1045 | Error::Other(_) => "platform specific error", [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/gamepad.rs:1050:9 [INFO] [stderr] | [INFO] [stderr] 1050 | / match self { [INFO] [stderr] 1051 | | &Error::NotImplemented(_) => None, [INFO] [stderr] 1052 | | &Error::InvalidAxisToBtn => None, [INFO] [stderr] 1053 | | &Error::Other(ref e) => Some(&**e), [INFO] [stderr] 1054 | | } [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] 1050 | match *self { [INFO] [stderr] 1051 | Error::NotImplemented(_) => None, [INFO] [stderr] 1052 | Error::InvalidAxisToBtn => None, [INFO] [stderr] 1053 | Error::Other(ref e) => Some(&**e), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/gamepad.rs:1064:5 [INFO] [stderr] | [INFO] [stderr] 1064 | NotImplemented(platform::Gilrs), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 1064 | NotImplemented(Box), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/gamepad.rs:1072:9 [INFO] [stderr] | [INFO] [stderr] 1072 | / match self { [INFO] [stderr] 1073 | | &PlatformError::NotImplemented(_) => { [INFO] [stderr] 1074 | | f.write_str("Gilrs does not support current platform.") [INFO] [stderr] 1075 | | } [INFO] [stderr] 1076 | | &PlatformError::Other(ref e) => e.fmt(f), [INFO] [stderr] 1077 | | } [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] 1072 | match *self { [INFO] [stderr] 1073 | PlatformError::NotImplemented(_) => { [INFO] [stderr] 1074 | f.write_str("Gilrs does not support current platform.") [INFO] [stderr] 1075 | } [INFO] [stderr] 1076 | 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/gamepad.rs:1083:9 [INFO] [stderr] | [INFO] [stderr] 1083 | / match self { [INFO] [stderr] 1084 | | &PlatformError::NotImplemented(_) => "platform not supported", [INFO] [stderr] 1085 | | &PlatformError::Other(_) => "platform specific error", [INFO] [stderr] 1086 | | } [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] 1083 | match *self { [INFO] [stderr] 1084 | PlatformError::NotImplemented(_) => "platform not supported", [INFO] [stderr] 1085 | PlatformError::Other(_) => "platform specific error", [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/gamepad.rs:1090:9 [INFO] [stderr] | [INFO] [stderr] 1090 | / match self { [INFO] [stderr] 1091 | | &PlatformError::NotImplemented(_) => None, [INFO] [stderr] 1092 | | &PlatformError::Other(ref e) => Some(&**e), [INFO] [stderr] 1093 | | } [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] 1090 | match *self { [INFO] [stderr] 1091 | PlatformError::NotImplemented(_) => None, [INFO] [stderr] 1092 | PlatformError::Other(ref e) => Some(&**e), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/platform/linux/gamepad.rs:193:19 [INFO] [stderr] | [INFO] [stderr] 193 | 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:201:9 [INFO] [stderr] | [INFO] [stderr] 201 | / if *l_ptr == 0 && r_ptr == end { [INFO] [stderr] 202 | | true [INFO] [stderr] 203 | | } else { [INFO] [stderr] 204 | | false [INFO] [stderr] 205 | | } [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:222:17 [INFO] [stderr] | [INFO] [stderr] 222 | EV_ABS as u32, [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u32::from(EV_ABS)` [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 u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/gamepad.rs:229:38 [INFO] [stderr] | [INFO] [stderr] 229 | 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 u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/gamepad.rs:366:17 [INFO] [stderr] | [INFO] [stderr] 366 | 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:372:17 [INFO] [stderr] | [INFO] [stderr] 372 | 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:400:37 [INFO] [stderr] | [INFO] [stderr] 400 | 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:401:17 [INFO] [stderr] | [INFO] [stderr] 401 | / if utils::test_bit(FF_SQUARE, &ff_bits) && utils::test_bit(FF_TRIANGLE, &ff_bits) [INFO] [stderr] 402 | | && utils::test_bit(FF_SINE, &ff_bits) [INFO] [stderr] 403 | | && utils::test_bit(FF_GAIN, &ff_bits) [INFO] [stderr] 404 | | { [INFO] [stderr] ... | [INFO] [stderr] 407 | | false [INFO] [stderr] 408 | | } [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] 401 | utils::test_bit(FF_SQUARE, &ff_bits) && utils::test_bit(FF_TRIANGLE, &ff_bits) [INFO] [stderr] 402 | && utils::test_bit(FF_SINE, &ff_bits) [INFO] [stderr] 403 | && 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:417:9 [INFO] [stderr] | [INFO] [stderr] 417 | / if self.buttons.len() >= 1 && self.axes.len() >= 2 { [INFO] [stderr] 418 | | true [INFO] [stderr] 419 | | } else { [INFO] [stderr] 420 | | false [INFO] [stderr] 421 | | } [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:417:12 [INFO] [stderr] | [INFO] [stderr] 417 | 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: length comparison to zero [INFO] [stderr] --> src/platform/linux/gamepad.rs:549:12 [INFO] [stderr] | [INFO] [stderr] 549 | 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:555:42 [INFO] [stderr] | [INFO] [stderr] 555 | 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:573:43 [INFO] [stderr] | [INFO] [stderr] 573 | 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:632:21 [INFO] [stderr] | [INFO] [stderr] 632 | 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:650:25 [INFO] [stderr] | [INFO] [stderr] 650 | 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:737:15 [INFO] [stderr] | [INFO] [stderr] 737 | 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: methods called `into_*` usually take self by value; consider choosing a less ambiguous name [INFO] [stderr] --> src/platform/linux/gamepad.rs:773:21 [INFO] [stderr] | [INFO] [stderr] 773 | pub fn into_u32(&self) -> u32 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/platform/linux/gamepad.rs:773:21 [INFO] [stderr] | [INFO] [stderr] 773 | pub fn into_u32(&self) -> u32 { [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: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/gamepad.rs:774:9 [INFO] [stderr] | [INFO] [stderr] 774 | (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:774:36 [INFO] [stderr] | [INFO] [stderr] 774 | (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: The function/method `ioctl::eviocsff` doesn't need a mutable reference [INFO] [stderr] --> src/platform/linux/ff.rs:33:62 [INFO] [stderr] | [INFO] [stderr] 33 | 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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/platform/linux/ff.rs:63:13 [INFO] [stderr] | [INFO] [stderr] 63 | / match ioctl::eviocsff(self.file.as_raw_fd(), &mut effect) { [INFO] [stderr] 64 | | Err(err) => { [INFO] [stderr] 65 | | error!( [INFO] [stderr] 66 | | "Failed to modify effect of gamepad {:?}, error: {}", [INFO] [stderr] ... | [INFO] [stderr] 71 | | Ok(_) => (), [INFO] [stderr] 72 | | } [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] 63 | if let Err(err) = ioctl::eviocsff(self.file.as_raw_fd(), &mut effect) { [INFO] [stderr] 64 | error!( [INFO] [stderr] 65 | "Failed to modify effect of gamepad {:?}, error: {}", [INFO] [stderr] 66 | self.file, err [INFO] [stderr] 67 | ); [INFO] [stderr] 68 | 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:63:58 [INFO] [stderr] | [INFO] [stderr] 63 | 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:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | / match unsafe { ioctl::eviocrmff(self.file.as_raw_fd(), self.effect as i32) } { [INFO] [stderr] 96 | | Err(err) => error!( [INFO] [stderr] 97 | | "Failed to remove effect of gamepad {:?}: {}", [INFO] [stderr] 98 | | self.file, err [INFO] [stderr] 99 | | ), [INFO] [stderr] 100 | | Ok(_) => (), [INFO] [stderr] 101 | | }; [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] 95 | if let Err(err) = unsafe { ioctl::eviocrmff(self.file.as_raw_fd(), self.effect as i32) } { error!( [INFO] [stderr] 96 | "Failed to remove effect of gamepad {:?}: {}", [INFO] [stderr] 97 | self.file, err [INFO] [stderr] 98 | ) }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/ff.rs:95:64 [INFO] [stderr] | [INFO] [stderr] 95 | match unsafe { ioctl::eviocrmff(self.file.as_raw_fd(), self.effect as i32) } { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.effect)` [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: use of `or` followed by a function call [INFO] [stderr] --> src/mapping/parser.rs:146:14 [INFO] [stderr] | [INFO] [stderr] 146 | .or(Err(Error::new(ErrorKind::InvalidGuid, self.pos))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|_| Err(Error::new(ErrorKind::InvalidGuid, self.pos)))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/mapping/parser.rs:145:18 [INFO] [stderr] | [INFO] [stderr] 145 | .map(|uuid| Token::Uuid(uuid)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Token::Uuid` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/mapping/parser.rs:181:14 [INFO] [stderr] | [INFO] [stderr] 181 | .ok_or(Error::new(ErrorKind::InvalidKeyValPair, pos))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| Error::new(ErrorKind::InvalidKeyValPair, pos))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/mapping/parser.rs:184:14 [INFO] [stderr] | [INFO] [stderr] 184 | .ok_or(Error::new(ErrorKind::InvalidKeyValPair, pos))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| Error::new(ErrorKind::InvalidKeyValPair, pos))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/mapping/parser.rs:264:14 [INFO] [stderr] | [INFO] [stderr] 264 | .or(Err(Error::new(ErrorKind::InvalidValue, pos)))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|_| Err(Error::new(ErrorKind::InvalidValue, pos)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/mapping/parser.rs:243:22 [INFO] [stderr] | [INFO] [stderr] 243 | .ok_or(Error::new(ErrorKind::InvalidValue, pos))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| Error::new(ErrorKind::InvalidValue, pos))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/mapping/parser.rs:246:22 [INFO] [stderr] | [INFO] [stderr] 246 | .or(Err(Error::new(ErrorKind::InvalidValue, pos + 1)))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|_| Err(Error::new(ErrorKind::InvalidValue, pos + 1)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/mapping/parser.rs:250:22 [INFO] [stderr] | [INFO] [stderr] 250 | .ok_or(Error::new(ErrorKind::InvalidValue, pos + dot_idx + 1))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| Error::new(ErrorKind::InvalidValue, pos + dot_idx + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/mapping/parser.rs:254:22 [INFO] [stderr] | [INFO] [stderr] 254 | .or(Err(Error::new(ErrorKind::UnknownButton, pos)))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|_| Err(Error::new(ErrorKind::UnknownButton, pos)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/mapping/parser.rs:283:18 [INFO] [stderr] | [INFO] [stderr] 283 | .or(Err(Error::new(ErrorKind::UnknownAxis, pos)))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|_| Err(Error::new(ErrorKind::UnknownAxis, pos)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/mapping/parser.rs:295:18 [INFO] [stderr] | [INFO] [stderr] 295 | .or(Err(Error::new(ErrorKind::UnknownButton, pos)))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|_| Err(Error::new(ErrorKind::UnknownButton, pos)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/mapping/parser.rs:308:14 [INFO] [stderr] | [INFO] [stderr] 308 | .unwrap_or(self.data.len()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| self.data.len())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/mapping/mod.rs:229:14 [INFO] [stderr] | [INFO] [stderr] 229 | .ok_or(MappingError::InvalidCode(ev::Code(ev_code)))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| MappingError::InvalidCode(ev::Code(ev_code)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/mapping/mod.rs:245:14 [INFO] [stderr] | [INFO] [stderr] 245 | .ok_or(MappingError::InvalidCode(ev::Code(ev_code)))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| MappingError::InvalidCode(ev::Code(ev_code)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/mapping/mod.rs:255:29 [INFO] [stderr] | [INFO] [stderr] 255 | pub fn map(&self, code: &EvCode) -> Option { [INFO] [stderr] | ^^^^^^^ help: consider passing by value instead: `EvCode` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/mapping/mod.rs:259:31 [INFO] [stderr] | [INFO] [stderr] 259 | pub fn map_rev(&self, el: &AxisOrBtn) -> Option { [INFO] [stderr] | ^^^^^^^^^^ help: consider passing by value instead: `AxisOrBtn` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/mapping/mod.rs:353:9 [INFO] [stderr] | [INFO] [stderr] 353 | / match self { [INFO] [stderr] 354 | | &ParseSdlMappingError::InvalidButton => "gamepad doesn't have requested button", [INFO] [stderr] 355 | | &ParseSdlMappingError::InvalidAxis => "gamepad doesn't have requested axis", [INFO] [stderr] 356 | | &ParseSdlMappingError::UnknownHatDirection => "hat direction wasn't 1, 2, 4 or 8", [INFO] [stderr] 357 | | &ParseSdlMappingError::ParseError(_) => "parsing error", [INFO] [stderr] 358 | | } [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] 353 | match *self { [INFO] [stderr] 354 | ParseSdlMappingError::InvalidButton => "gamepad doesn't have requested button", [INFO] [stderr] 355 | ParseSdlMappingError::InvalidAxis => "gamepad doesn't have requested axis", [INFO] [stderr] 356 | ParseSdlMappingError::UnknownHatDirection => "hat direction wasn't 1, 2, 4 or 8", [INFO] [stderr] 357 | ParseSdlMappingError::ParseError(_) => "parsing error", [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/mapping/mod.rs:362:9 [INFO] [stderr] | [INFO] [stderr] 362 | / if let &ParseSdlMappingError::ParseError(ref err) = self { [INFO] [stderr] 363 | | Some(err) [INFO] [stderr] 364 | | } else { [INFO] [stderr] 365 | | None [INFO] [stderr] 366 | | } [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] 362 | if let ParseSdlMappingError::ParseError(ref err) = *self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/mapping/mod.rs:372:9 [INFO] [stderr] | [INFO] [stderr] 372 | / match self { [INFO] [stderr] 373 | | &ParseSdlMappingError::InvalidButton [INFO] [stderr] 374 | | | &ParseSdlMappingError::InvalidAxis [INFO] [stderr] 375 | | | &ParseSdlMappingError::UnknownHatDirection => fmt.write_str(self.description()), [INFO] [stderr] ... | [INFO] [stderr] 379 | | )), [INFO] [stderr] 380 | | } [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] 372 | match *self { [INFO] [stderr] 373 | ParseSdlMappingError::InvalidButton [INFO] [stderr] 374 | | ParseSdlMappingError::InvalidAxis [INFO] [stderr] 375 | | ParseSdlMappingError::UnknownHatDirection => fmt.write_str(self.description()), [INFO] [stderr] 376 | ParseSdlMappingError::ParseError(ref err) => fmt.write_fmt(format_args!( [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `mapping::MappingData` [INFO] [stderr] --> src/mapping/mod.rs:439:5 [INFO] [stderr] | [INFO] [stderr] 439 | / pub fn new() -> Self { [INFO] [stderr] 440 | | MappingData { [INFO] [stderr] 441 | | buttons: VecMap::with_capacity(18), [INFO] [stderr] 442 | | axes: VecMap::with_capacity(11), [INFO] [stderr] 443 | | } [INFO] [stderr] 444 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 432 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/mapping/mod.rs:451:18 [INFO] [stderr] | [INFO] [stderr] 451 | .map(|nec| ev::Code(nec)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ev::Code` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/mapping/mod.rs:459:18 [INFO] [stderr] | [INFO] [stderr] 459 | .map(|nec| ev::Code(nec)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ev::Code` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/mapping/mod.rs:466:18 [INFO] [stderr] | [INFO] [stderr] 466 | .map(|nec| ev::Code(nec)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ev::Code` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/mapping/mod.rs:473:18 [INFO] [stderr] | [INFO] [stderr] 473 | .map(|nec| ev::Code(nec)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ev::Code` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/mapping/mod.rs:478:47 [INFO] [stderr] | [INFO] [stderr] 478 | self.buttons.remove(idx as usize).map(|nec| ev::Code(nec)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ev::Code` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/mapping/mod.rs:483:44 [INFO] [stderr] | [INFO] [stderr] 483 | self.axes.remove(idx as usize).map(|nec| ev::Code(nec)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ev::Code` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ff/server.rs:77:9 [INFO] [stderr] | [INFO] [stderr] 77 | / match self { [INFO] [stderr] 78 | | &SetListenerPosition { .. } | &HandleCloned { .. } | &HandleDropped { .. } => true, [INFO] [stderr] 79 | | _ => false, [INFO] [stderr] 80 | | } [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] 77 | match *self { [INFO] [stderr] 78 | SetListenerPosition { .. } | HandleCloned { .. } | HandleDropped { .. } => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 30 [INFO] [stderr] --> src/ff/server.rs:133:1 [INFO] [stderr] | [INFO] [stderr] 133 | / pub(crate) fn run(rx: Receiver) { [INFO] [stderr] 134 | | let mut effects = VecMap::::new(); [INFO] [stderr] 135 | | let mut devices = VecMap::::new(); [INFO] [stderr] 136 | | let sleep_dur = Duration::from_millis(TICK_DURATION.into()); [INFO] [stderr] ... | [INFO] [stderr] 235 | | } [INFO] [stderr] 236 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ff/base_effect.rs:24:18 [INFO] [stderr] | [INFO] [stderr] 24 | fn magnitude(&self) -> u16 { [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: casting u16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/ff/base_effect.rs:37:19 [INFO] [stderr] | [INFO] [stderr] 37 | let mg = (self.magnitude() as f32 * rhs) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(self.magnitude())` [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: strict comparison of f32 or f64 [INFO] [stderr] --> src/ff/effect_source.rs:151:20 [INFO] [stderr] | [INFO] [stderr] 151 | if ref_distance == max_distance { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(ref_distance - max_distance).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ff/effect_source.rs:151:20 [INFO] [stderr] | [INFO] [stderr] 151 | if ref_distance == max_distance { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ff/effect_source.rs:162:20 [INFO] [stderr] | [INFO] [stderr] 162 | if ref_distance == max_distance { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(ref_distance - max_distance).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ff/effect_source.rs:162:20 [INFO] [stderr] | [INFO] [stderr] 162 | if ref_distance == max_distance { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: casting u16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/ff/effect_source.rs:339:22 [INFO] [stderr] | [INFO] [stderr] 339 | let strong = self.strong as f32 * rhs; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f32::from(self.strong)` [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 f32 may become silently lossy if types change [INFO] [stderr] --> src/ff/effect_source.rs:340:34 [INFO] [stderr] | [INFO] [stderr] 340 | let strong = if strong > u16::MAX as f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f32::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: casting u16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/ff/effect_source.rs:345:20 [INFO] [stderr] | [INFO] [stderr] 345 | let weak = self.weak as f32 * rhs; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `f32::from(self.weak)` [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 f32 may become silently lossy if types change [INFO] [stderr] --> src/ff/effect_source.rs:346:30 [INFO] [stderr] | [INFO] [stderr] 346 | let weak = if weak > u16::MAX as f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f32::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: redundant closure found [INFO] [stderr] --> src/ff/time.rs:46:39 [INFO] [stderr] | [INFO] [stderr] 46 | self.0.checked_sub(rhs.0).map(|t| Ticks(t)) [INFO] [stderr] | ^^^^^^^^^^^^ help: remove closure as shown: `Ticks` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: Calling `subsec_millis()` is more concise than this calculation [INFO] [stderr] --> src/ff/time.rs:52:54 [INFO] [stderr] | [INFO] [stderr] 52 | Ticks::from_ms(dur.as_secs() as u32 * 1000 + dur.subsec_nanos() / 1_000_000) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `dur.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: use of `ok_or` followed by a function call [INFO] [stderr] --> src/ff/mod.rs:138:18 [INFO] [stderr] | [INFO] [stderr] 138 | .ok_or(Error::Disconnected(dev))? [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| Error::Disconnected(dev))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `ff::EffectBuilder` [INFO] [stderr] --> src/ff/mod.rs:235:5 [INFO] [stderr] | [INFO] [stderr] 235 | / pub fn new() -> Self { [INFO] [stderr] 236 | | EffectBuilder { [INFO] [stderr] 237 | | base_effects: Vec::new(), [INFO] [stderr] 238 | | devices: VecMap::new(), [INFO] [stderr] ... | [INFO] [stderr] 243 | | } [INFO] [stderr] 244 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 222 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/ff/mod.rs:305:18 [INFO] [stderr] | [INFO] [stderr] 305 | .ok_or(Error::Disconnected(dev))? [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| Error::Disconnected(dev))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `ev::filter::Jitter` [INFO] [stderr] --> src/ev/filter.rs:90:5 [INFO] [stderr] | [INFO] [stderr] 90 | / pub fn new() -> Self { [INFO] [stderr] 91 | | Jitter { threshold: 0.01 } [INFO] [stderr] 92 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 84 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ev/filter.rs:142:20 [INFO] [stderr] | [INFO] [stderr] 142 | if other_val != val.1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(other_val - val.1).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ev/filter.rs:142:20 [INFO] [stderr] | [INFO] [stderr] 142 | if other_val != val.1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ev/filter.rs:150:25 [INFO] [stderr] | [INFO] [stderr] 150 | Some(if gilrs[id].state().value(nec) == val.0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(gilrs[id].state().value(nec) - val.0).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ev/filter.rs:150:25 [INFO] [stderr] | [INFO] [stderr] 150 | Some(if gilrs[id].state().value(nec) == val.0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ev/filter.rs:162:25 [INFO] [stderr] | [INFO] [stderr] 162 | Some(if gilrs[id].state().value(nec) == val { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(gilrs[id].state().value(nec) - val).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ev/filter.rs:162:25 [INFO] [stderr] | [INFO] [stderr] 162 | Some(if gilrs[id].state().value(nec) == val { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ev/filter.rs:185:21 [INFO] [stderr] | [INFO] [stderr] 185 | Some(if gp.state().value(nec) == val { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(gp.state().value(nec) - val).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ev/filter.rs:185:21 [INFO] [stderr] | [INFO] [stderr] 185 | Some(if gp.state().value(nec) == val { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ev/filter.rs:230:21 [INFO] [stderr] | [INFO] [stderr] 230 | Some(if val == 1.0 { [INFO] [stderr] | ^^^^^^^^^^ help: consider comparing them within some error: `(val - 1.0).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ev/filter.rs:230:21 [INFO] [stderr] | [INFO] [stderr] 230 | Some(if val == 1.0 { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ev/filter.rs:236:23 [INFO] [stderr] | [INFO] [stderr] 236 | } else if val == -1.0 { [INFO] [stderr] | ^^^^^^^^^^^ help: consider comparing them within some error: `(val - -1.0).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ev/filter.rs:236:23 [INFO] [stderr] | [INFO] [stderr] 236 | } else if val == -1.0 { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ev/filter.rs:262:21 [INFO] [stderr] | [INFO] [stderr] 262 | Some(if val == 1.0 { [INFO] [stderr] | ^^^^^^^^^^ help: consider comparing them within some error: `(val - 1.0).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ev/filter.rs:262:21 [INFO] [stderr] | [INFO] [stderr] 262 | Some(if val == 1.0 { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ev/filter.rs:268:23 [INFO] [stderr] | [INFO] [stderr] 268 | } else if val == -1.0 { [INFO] [stderr] | ^^^^^^^^^^^ help: consider comparing them within some error: `(val - -1.0).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ev/filter.rs:268:23 [INFO] [stderr] | [INFO] [stderr] 268 | } else if val == -1.0 { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `ev::filter::Repeat` [INFO] [stderr] --> src/ev/filter.rs:301:5 [INFO] [stderr] | [INFO] [stderr] 301 | / pub fn new() -> Self { [INFO] [stderr] 302 | | Repeat { [INFO] [stderr] 303 | | after: Duration::from_millis(500), [INFO] [stderr] 304 | | every: Duration::from_millis(30), [INFO] [stderr] 305 | | } [INFO] [stderr] 306 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 294 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: methods called `into_*` usually take self by value; consider choosing a less ambiguous name [INFO] [stderr] --> src/ev/mod.rs:31:21 [INFO] [stderr] | [INFO] [stderr] 31 | pub fn into_u32(&self) -> u32 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ev/mod.rs:31:21 [INFO] [stderr] | [INFO] [stderr] 31 | pub fn into_u32(&self) -> u32 { [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: redundant closure found [INFO] [stderr] --> src/ev/mod.rs:233:15 [INFO] [stderr] | [INFO] [stderr] 233 | }.map(|nec| Code(nec)) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove closure as shown: `Code` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/ev/mod.rs:327:9 [INFO] [stderr] | [INFO] [stderr] 327 | val = val / range; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `val /= range` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `gamepad::GilrsBuilder` [INFO] [stderr] --> src/gamepad.rs:487:5 [INFO] [stderr] | [INFO] [stderr] 487 | / pub fn new() -> Self { [INFO] [stderr] 488 | | GilrsBuilder { [INFO] [stderr] 489 | | mappings: MappingDb::new(), [INFO] [stderr] 490 | | default_filters: true, [INFO] [stderr] ... | [INFO] [stderr] 496 | | } [INFO] [stderr] 497 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 485 | impl Default for gamepad::GilrsBuilder { [INFO] [stderr] 486 | fn default() -> Self { [INFO] [stderr] 487 | Self::new() [INFO] [stderr] 488 | } [INFO] [stderr] 489 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: aborting due to 10 previous errors [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/gamepad.rs:914:18 [INFO] [stderr] | [INFO] [stderr] 914 | .map(|nec| Code(nec)) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove closure as shown: `Code` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/gamepad.rs:921:18 [INFO] [stderr] | [INFO] [stderr] 921 | .map(|nec| Code(nec)) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove closure as shown: `Code` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] error: Could not compile `gilrs`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/gamepad.rs:1021:5 [INFO] [stderr] | [INFO] [stderr] 1021 | NotImplemented(Gilrs), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 1021 | NotImplemented(Box), [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/gamepad.rs:1030:9 [INFO] [stderr] | [INFO] [stderr] 1030 | / match self { [INFO] [stderr] 1031 | | &Error::NotImplemented(_) => f.write_str("Gilrs does not support current platform."), [INFO] [stderr] 1032 | | &Error::InvalidAxisToBtn => f.write_str( [INFO] [stderr] 1033 | | "Either `pressed ≤ released` or one of values is outside [0.0, 1.0] range.", [INFO] [stderr] 1034 | | ), [INFO] [stderr] 1035 | | &Error::Other(ref e) => e.fmt(f), [INFO] [stderr] 1036 | | } [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] 1030 | match *self { [INFO] [stderr] 1031 | Error::NotImplemented(_) => f.write_str("Gilrs does not support current platform."), [INFO] [stderr] 1032 | Error::InvalidAxisToBtn => f.write_str( [INFO] [stderr] 1033 | "Either `pressed ≤ released` or one of values is outside [0.0, 1.0] range.", [INFO] [stderr] 1034 | ), [INFO] [stderr] 1035 | 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/gamepad.rs:1042:9 [INFO] [stderr] | [INFO] [stderr] 1042 | / match self { [INFO] [stderr] 1043 | | &Error::NotImplemented(_) => "platform not supported", [INFO] [stderr] 1044 | | &Error::InvalidAxisToBtn => "values passed to set_axis_to_btn() are invalid", [INFO] [stderr] 1045 | | &Error::Other(_) => "platform specific error", [INFO] [stderr] 1046 | | } [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] 1042 | match *self { [INFO] [stderr] 1043 | Error::NotImplemented(_) => "platform not supported", [INFO] [stderr] 1044 | Error::InvalidAxisToBtn => "values passed to set_axis_to_btn() are invalid", [INFO] [stderr] 1045 | Error::Other(_) => "platform specific error", [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/gamepad.rs:1050:9 [INFO] [stderr] | [INFO] [stderr] 1050 | / match self { [INFO] [stderr] 1051 | | &Error::NotImplemented(_) => None, [INFO] [stderr] 1052 | | &Error::InvalidAxisToBtn => None, [INFO] [stderr] 1053 | | &Error::Other(ref e) => Some(&**e), [INFO] [stderr] 1054 | | } [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] 1050 | match *self { [INFO] [stderr] 1051 | Error::NotImplemented(_) => None, [INFO] [stderr] 1052 | Error::InvalidAxisToBtn => None, [INFO] [stderr] 1053 | Error::Other(ref e) => Some(&**e), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: large size difference between variants [INFO] [stderr] --> src/gamepad.rs:1064:5 [INFO] [stderr] | [INFO] [stderr] 1064 | NotImplemented(platform::Gilrs), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] | [INFO] [stderr] 1064 | NotImplemented(Box), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/gamepad.rs:1072:9 [INFO] [stderr] | [INFO] [stderr] 1072 | / match self { [INFO] [stderr] 1073 | | &PlatformError::NotImplemented(_) => { [INFO] [stderr] 1074 | | f.write_str("Gilrs does not support current platform.") [INFO] [stderr] 1075 | | } [INFO] [stderr] 1076 | | &PlatformError::Other(ref e) => e.fmt(f), [INFO] [stderr] 1077 | | } [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] 1072 | match *self { [INFO] [stderr] 1073 | PlatformError::NotImplemented(_) => { [INFO] [stderr] 1074 | f.write_str("Gilrs does not support current platform.") [INFO] [stderr] 1075 | } [INFO] [stderr] 1076 | 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/gamepad.rs:1083:9 [INFO] [stderr] | [INFO] [stderr] 1083 | / match self { [INFO] [stderr] 1084 | | &PlatformError::NotImplemented(_) => "platform not supported", [INFO] [stderr] 1085 | | &PlatformError::Other(_) => "platform specific error", [INFO] [stderr] 1086 | | } [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] 1083 | match *self { [INFO] [stderr] 1084 | PlatformError::NotImplemented(_) => "platform not supported", [INFO] [stderr] 1085 | PlatformError::Other(_) => "platform specific error", [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/gamepad.rs:1090:9 [INFO] [stderr] | [INFO] [stderr] 1090 | / match self { [INFO] [stderr] 1091 | | &PlatformError::NotImplemented(_) => None, [INFO] [stderr] 1092 | | &PlatformError::Other(ref e) => Some(&**e), [INFO] [stderr] 1093 | | } [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] 1090 | match *self { [INFO] [stderr] 1091 | PlatformError::NotImplemented(_) => None, [INFO] [stderr] 1092 | PlatformError::Other(ref e) => Some(&**e), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `offset` with a `usize` casted to an `isize` [INFO] [stderr] --> src/platform/linux/gamepad.rs:193:19 [INFO] [stderr] | [INFO] [stderr] 193 | 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:201:9 [INFO] [stderr] | [INFO] [stderr] 201 | / if *l_ptr == 0 && r_ptr == end { [INFO] [stderr] 202 | | true [INFO] [stderr] 203 | | } else { [INFO] [stderr] 204 | | false [INFO] [stderr] 205 | | } [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:222:17 [INFO] [stderr] | [INFO] [stderr] 222 | EV_ABS as u32, [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u32::from(EV_ABS)` [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 u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/gamepad.rs:229:38 [INFO] [stderr] | [INFO] [stderr] 229 | 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 u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/gamepad.rs:366:17 [INFO] [stderr] | [INFO] [stderr] 366 | 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:372:17 [INFO] [stderr] | [INFO] [stderr] 372 | 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:400:37 [INFO] [stderr] | [INFO] [stderr] 400 | 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:401:17 [INFO] [stderr] | [INFO] [stderr] 401 | / if utils::test_bit(FF_SQUARE, &ff_bits) && utils::test_bit(FF_TRIANGLE, &ff_bits) [INFO] [stderr] 402 | | && utils::test_bit(FF_SINE, &ff_bits) [INFO] [stderr] 403 | | && utils::test_bit(FF_GAIN, &ff_bits) [INFO] [stderr] 404 | | { [INFO] [stderr] ... | [INFO] [stderr] 407 | | false [INFO] [stderr] 408 | | } [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] 401 | utils::test_bit(FF_SQUARE, &ff_bits) && utils::test_bit(FF_TRIANGLE, &ff_bits) [INFO] [stderr] 402 | && utils::test_bit(FF_SINE, &ff_bits) [INFO] [stderr] 403 | && 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:417:9 [INFO] [stderr] | [INFO] [stderr] 417 | / if self.buttons.len() >= 1 && self.axes.len() >= 2 { [INFO] [stderr] 418 | | true [INFO] [stderr] 419 | | } else { [INFO] [stderr] 420 | | false [INFO] [stderr] 421 | | } [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:417:12 [INFO] [stderr] | [INFO] [stderr] 417 | 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: length comparison to zero [INFO] [stderr] --> src/platform/linux/gamepad.rs:549:12 [INFO] [stderr] | [INFO] [stderr] 549 | 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:555:42 [INFO] [stderr] | [INFO] [stderr] 555 | 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:573:43 [INFO] [stderr] | [INFO] [stderr] 573 | 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:632:21 [INFO] [stderr] | [INFO] [stderr] 632 | 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:650:25 [INFO] [stderr] | [INFO] [stderr] 650 | 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:737:15 [INFO] [stderr] | [INFO] [stderr] 737 | 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: methods called `into_*` usually take self by value; consider choosing a less ambiguous name [INFO] [stderr] --> src/platform/linux/gamepad.rs:773:21 [INFO] [stderr] | [INFO] [stderr] 773 | pub fn into_u32(&self) -> u32 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/platform/linux/gamepad.rs:773:21 [INFO] [stderr] | [INFO] [stderr] 773 | pub fn into_u32(&self) -> u32 { [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: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/gamepad.rs:774:9 [INFO] [stderr] | [INFO] [stderr] 774 | (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:774:36 [INFO] [stderr] | [INFO] [stderr] 774 | (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: The function/method `ioctl::eviocsff` doesn't need a mutable reference [INFO] [stderr] --> src/platform/linux/ff.rs:33:62 [INFO] [stderr] | [INFO] [stderr] 33 | 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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/platform/linux/ff.rs:63:13 [INFO] [stderr] | [INFO] [stderr] 63 | / match ioctl::eviocsff(self.file.as_raw_fd(), &mut effect) { [INFO] [stderr] 64 | | Err(err) => { [INFO] [stderr] 65 | | error!( [INFO] [stderr] 66 | | "Failed to modify effect of gamepad {:?}, error: {}", [INFO] [stderr] ... | [INFO] [stderr] 71 | | Ok(_) => (), [INFO] [stderr] 72 | | } [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] 63 | if let Err(err) = ioctl::eviocsff(self.file.as_raw_fd(), &mut effect) { [INFO] [stderr] 64 | error!( [INFO] [stderr] 65 | "Failed to modify effect of gamepad {:?}, error: {}", [INFO] [stderr] 66 | self.file, err [INFO] [stderr] 67 | ); [INFO] [stderr] 68 | 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:63:58 [INFO] [stderr] | [INFO] [stderr] 63 | 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:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | / match unsafe { ioctl::eviocrmff(self.file.as_raw_fd(), self.effect as i32) } { [INFO] [stderr] 96 | | Err(err) => error!( [INFO] [stderr] 97 | | "Failed to remove effect of gamepad {:?}: {}", [INFO] [stderr] 98 | | self.file, err [INFO] [stderr] 99 | | ), [INFO] [stderr] 100 | | Ok(_) => (), [INFO] [stderr] 101 | | }; [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] 95 | if let Err(err) = unsafe { ioctl::eviocrmff(self.file.as_raw_fd(), self.effect as i32) } { error!( [INFO] [stderr] 96 | "Failed to remove effect of gamepad {:?}: {}", [INFO] [stderr] 97 | self.file, err [INFO] [stderr] 98 | ) }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting i16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/platform/linux/ff.rs:95:64 [INFO] [stderr] | [INFO] [stderr] 95 | match unsafe { ioctl::eviocrmff(self.file.as_raw_fd(), self.effect as i32) } { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.effect)` [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: use of `or` followed by a function call [INFO] [stderr] --> src/mapping/parser.rs:146:14 [INFO] [stderr] | [INFO] [stderr] 146 | .or(Err(Error::new(ErrorKind::InvalidGuid, self.pos))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|_| Err(Error::new(ErrorKind::InvalidGuid, self.pos)))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/mapping/parser.rs:145:18 [INFO] [stderr] | [INFO] [stderr] 145 | .map(|uuid| Token::Uuid(uuid)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Token::Uuid` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/mapping/parser.rs:181:14 [INFO] [stderr] | [INFO] [stderr] 181 | .ok_or(Error::new(ErrorKind::InvalidKeyValPair, pos))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| Error::new(ErrorKind::InvalidKeyValPair, pos))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/mapping/parser.rs:184:14 [INFO] [stderr] | [INFO] [stderr] 184 | .ok_or(Error::new(ErrorKind::InvalidKeyValPair, pos))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| Error::new(ErrorKind::InvalidKeyValPair, pos))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/mapping/parser.rs:264:14 [INFO] [stderr] | [INFO] [stderr] 264 | .or(Err(Error::new(ErrorKind::InvalidValue, pos)))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|_| Err(Error::new(ErrorKind::InvalidValue, pos)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/mapping/parser.rs:243:22 [INFO] [stderr] | [INFO] [stderr] 243 | .ok_or(Error::new(ErrorKind::InvalidValue, pos))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| Error::new(ErrorKind::InvalidValue, pos))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/mapping/parser.rs:246:22 [INFO] [stderr] | [INFO] [stderr] 246 | .or(Err(Error::new(ErrorKind::InvalidValue, pos + 1)))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|_| Err(Error::new(ErrorKind::InvalidValue, pos + 1)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/mapping/parser.rs:250:22 [INFO] [stderr] | [INFO] [stderr] 250 | .ok_or(Error::new(ErrorKind::InvalidValue, pos + dot_idx + 1))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| Error::new(ErrorKind::InvalidValue, pos + dot_idx + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/mapping/parser.rs:254:22 [INFO] [stderr] | [INFO] [stderr] 254 | .or(Err(Error::new(ErrorKind::UnknownButton, pos)))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|_| Err(Error::new(ErrorKind::UnknownButton, pos)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/mapping/parser.rs:283:18 [INFO] [stderr] | [INFO] [stderr] 283 | .or(Err(Error::new(ErrorKind::UnknownAxis, pos)))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|_| Err(Error::new(ErrorKind::UnknownAxis, pos)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/mapping/parser.rs:295:18 [INFO] [stderr] | [INFO] [stderr] 295 | .or(Err(Error::new(ErrorKind::UnknownButton, pos)))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|_| Err(Error::new(ErrorKind::UnknownButton, pos)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/mapping/parser.rs:308:14 [INFO] [stderr] | [INFO] [stderr] 308 | .unwrap_or(self.data.len()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| self.data.len())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/mapping/mod.rs:229:14 [INFO] [stderr] | [INFO] [stderr] 229 | .ok_or(MappingError::InvalidCode(ev::Code(ev_code)))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| MappingError::InvalidCode(ev::Code(ev_code)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/mapping/mod.rs:245:14 [INFO] [stderr] | [INFO] [stderr] 245 | .ok_or(MappingError::InvalidCode(ev::Code(ev_code)))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| MappingError::InvalidCode(ev::Code(ev_code)))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/mapping/mod.rs:255:29 [INFO] [stderr] | [INFO] [stderr] 255 | pub fn map(&self, code: &EvCode) -> Option { [INFO] [stderr] | ^^^^^^^ help: consider passing by value instead: `EvCode` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/mapping/mod.rs:259:31 [INFO] [stderr] | [INFO] [stderr] 259 | pub fn map_rev(&self, el: &AxisOrBtn) -> Option { [INFO] [stderr] | ^^^^^^^^^^ help: consider passing by value instead: `AxisOrBtn` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/mapping/mod.rs:353:9 [INFO] [stderr] | [INFO] [stderr] 353 | / match self { [INFO] [stderr] 354 | | &ParseSdlMappingError::InvalidButton => "gamepad doesn't have requested button", [INFO] [stderr] 355 | | &ParseSdlMappingError::InvalidAxis => "gamepad doesn't have requested axis", [INFO] [stderr] 356 | | &ParseSdlMappingError::UnknownHatDirection => "hat direction wasn't 1, 2, 4 or 8", [INFO] [stderr] 357 | | &ParseSdlMappingError::ParseError(_) => "parsing error", [INFO] [stderr] 358 | | } [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] 353 | match *self { [INFO] [stderr] 354 | ParseSdlMappingError::InvalidButton => "gamepad doesn't have requested button", [INFO] [stderr] 355 | ParseSdlMappingError::InvalidAxis => "gamepad doesn't have requested axis", [INFO] [stderr] 356 | ParseSdlMappingError::UnknownHatDirection => "hat direction wasn't 1, 2, 4 or 8", [INFO] [stderr] 357 | ParseSdlMappingError::ParseError(_) => "parsing error", [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/mapping/mod.rs:362:9 [INFO] [stderr] | [INFO] [stderr] 362 | / if let &ParseSdlMappingError::ParseError(ref err) = self { [INFO] [stderr] 363 | | Some(err) [INFO] [stderr] 364 | | } else { [INFO] [stderr] 365 | | None [INFO] [stderr] 366 | | } [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] 362 | if let ParseSdlMappingError::ParseError(ref err) = *self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/mapping/mod.rs:372:9 [INFO] [stderr] | [INFO] [stderr] 372 | / match self { [INFO] [stderr] 373 | | &ParseSdlMappingError::InvalidButton [INFO] [stderr] 374 | | | &ParseSdlMappingError::InvalidAxis [INFO] [stderr] 375 | | | &ParseSdlMappingError::UnknownHatDirection => fmt.write_str(self.description()), [INFO] [stderr] ... | [INFO] [stderr] 379 | | )), [INFO] [stderr] 380 | | } [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] 372 | match *self { [INFO] [stderr] 373 | ParseSdlMappingError::InvalidButton [INFO] [stderr] 374 | | ParseSdlMappingError::InvalidAxis [INFO] [stderr] 375 | | ParseSdlMappingError::UnknownHatDirection => fmt.write_str(self.description()), [INFO] [stderr] 376 | ParseSdlMappingError::ParseError(ref err) => fmt.write_fmt(format_args!( [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `mapping::MappingData` [INFO] [stderr] --> src/mapping/mod.rs:439:5 [INFO] [stderr] | [INFO] [stderr] 439 | / pub fn new() -> Self { [INFO] [stderr] 440 | | MappingData { [INFO] [stderr] 441 | | buttons: VecMap::with_capacity(18), [INFO] [stderr] 442 | | axes: VecMap::with_capacity(11), [INFO] [stderr] 443 | | } [INFO] [stderr] 444 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 432 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/mapping/mod.rs:451:18 [INFO] [stderr] | [INFO] [stderr] 451 | .map(|nec| ev::Code(nec)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ev::Code` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/mapping/mod.rs:459:18 [INFO] [stderr] | [INFO] [stderr] 459 | .map(|nec| ev::Code(nec)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ev::Code` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/mapping/mod.rs:466:18 [INFO] [stderr] | [INFO] [stderr] 466 | .map(|nec| ev::Code(nec)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ev::Code` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/mapping/mod.rs:473:18 [INFO] [stderr] | [INFO] [stderr] 473 | .map(|nec| ev::Code(nec)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ev::Code` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/mapping/mod.rs:478:47 [INFO] [stderr] | [INFO] [stderr] 478 | self.buttons.remove(idx as usize).map(|nec| ev::Code(nec)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ev::Code` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/mapping/mod.rs:483:44 [INFO] [stderr] | [INFO] [stderr] 483 | self.axes.remove(idx as usize).map(|nec| ev::Code(nec)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `ev::Code` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/utils.rs:44:9 [INFO] [stderr] | [INFO] [stderr] 44 | assert_eq!(clamp(-1.0, 0.0, 1.0), 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/utils.rs:44:9 [INFO] [stderr] | [INFO] [stderr] 44 | assert_eq!(clamp(-1.0, 0.0, 1.0), 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/utils.rs:45:9 [INFO] [stderr] | [INFO] [stderr] 45 | assert_eq!(clamp(0.5, 0.0, 1.0), 0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/utils.rs:45:9 [INFO] [stderr] | [INFO] [stderr] 45 | assert_eq!(clamp(0.5, 0.0, 1.0), 0.5); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/utils.rs:46:9 [INFO] [stderr] | [INFO] [stderr] 46 | assert_eq!(clamp(2.0, 0.0, 1.0), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/utils.rs:46:9 [INFO] [stderr] | [INFO] [stderr] 46 | assert_eq!(clamp(2.0, 0.0, 1.0), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ff/server.rs:77:9 [INFO] [stderr] | [INFO] [stderr] 77 | / match self { [INFO] [stderr] 78 | | &SetListenerPosition { .. } | &HandleCloned { .. } | &HandleDropped { .. } => true, [INFO] [stderr] 79 | | _ => false, [INFO] [stderr] 80 | | } [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] 77 | match *self { [INFO] [stderr] 78 | SetListenerPosition { .. } | HandleCloned { .. } | HandleDropped { .. } => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 30 [INFO] [stderr] --> src/ff/server.rs:133:1 [INFO] [stderr] | [INFO] [stderr] 133 | / pub(crate) fn run(rx: Receiver) { [INFO] [stderr] 134 | | let mut effects = VecMap::::new(); [INFO] [stderr] 135 | | let mut devices = VecMap::::new(); [INFO] [stderr] 136 | | let sleep_dur = Duration::from_millis(TICK_DURATION.into()); [INFO] [stderr] ... | [INFO] [stderr] 235 | | } [INFO] [stderr] 236 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ff/base_effect.rs:24:18 [INFO] [stderr] | [INFO] [stderr] 24 | fn magnitude(&self) -> u16 { [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: casting u16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/ff/base_effect.rs:37:19 [INFO] [stderr] | [INFO] [stderr] 37 | let mg = (self.magnitude() as f32 * rhs) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(self.magnitude())` [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: strict comparison of f32 or f64 [INFO] [stderr] --> src/ff/effect_source.rs:151:20 [INFO] [stderr] | [INFO] [stderr] 151 | if ref_distance == max_distance { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(ref_distance - max_distance).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ff/effect_source.rs:151:20 [INFO] [stderr] | [INFO] [stderr] 151 | if ref_distance == max_distance { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ff/effect_source.rs:162:20 [INFO] [stderr] | [INFO] [stderr] 162 | if ref_distance == max_distance { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(ref_distance - max_distance).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ff/effect_source.rs:162:20 [INFO] [stderr] | [INFO] [stderr] 162 | if ref_distance == max_distance { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: casting u16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/ff/effect_source.rs:339:22 [INFO] [stderr] | [INFO] [stderr] 339 | let strong = self.strong as f32 * rhs; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `f32::from(self.strong)` [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 f32 may become silently lossy if types change [INFO] [stderr] --> src/ff/effect_source.rs:340:34 [INFO] [stderr] | [INFO] [stderr] 340 | let strong = if strong > u16::MAX as f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f32::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: casting u16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/ff/effect_source.rs:345:20 [INFO] [stderr] | [INFO] [stderr] 345 | let weak = self.weak as f32 * rhs; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `f32::from(self.weak)` [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 f32 may become silently lossy if types change [INFO] [stderr] --> src/ff/effect_source.rs:346:30 [INFO] [stderr] | [INFO] [stderr] 346 | let weak = if weak > u16::MAX as f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f32::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: redundant closure found [INFO] [stderr] --> src/ff/time.rs:46:39 [INFO] [stderr] | [INFO] [stderr] 46 | self.0.checked_sub(rhs.0).map(|t| Ticks(t)) [INFO] [stderr] | ^^^^^^^^^^^^ help: remove closure as shown: `Ticks` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: Calling `subsec_millis()` is more concise than this calculation [INFO] [stderr] --> src/ff/time.rs:52:54 [INFO] [stderr] | [INFO] [stderr] 52 | Ticks::from_ms(dur.as_secs() as u32 * 1000 + dur.subsec_nanos() / 1_000_000) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `dur.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: use of `ok_or` followed by a function call [INFO] [stderr] --> src/ff/mod.rs:138:18 [INFO] [stderr] | [INFO] [stderr] 138 | .ok_or(Error::Disconnected(dev))? [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| Error::Disconnected(dev))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `ff::EffectBuilder` [INFO] [stderr] --> src/ff/mod.rs:235:5 [INFO] [stderr] | [INFO] [stderr] 235 | / pub fn new() -> Self { [INFO] [stderr] 236 | | EffectBuilder { [INFO] [stderr] 237 | | base_effects: Vec::new(), [INFO] [stderr] 238 | | devices: VecMap::new(), [INFO] [stderr] ... | [INFO] [stderr] 243 | | } [INFO] [stderr] 244 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 222 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/ff/mod.rs:305:18 [INFO] [stderr] | [INFO] [stderr] 305 | .ok_or(Error::Disconnected(dev))? [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| Error::Disconnected(dev))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ff/mod.rs:404:9 [INFO] [stderr] | [INFO] [stderr] 404 | assert_eq!(env.at(Ticks(0), dur), 0.2); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ff/mod.rs:404:9 [INFO] [stderr] | [INFO] [stderr] 404 | assert_eq!(env.at(Ticks(0), dur), 0.2); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ff/mod.rs:405:9 [INFO] [stderr] | [INFO] [stderr] 405 | assert_eq!(env.at(Ticks(5), dur), 0.6); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ff/mod.rs:405:9 [INFO] [stderr] | [INFO] [stderr] 405 | assert_eq!(env.at(Ticks(5), dur), 0.6); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ff/mod.rs:406:9 [INFO] [stderr] | [INFO] [stderr] 406 | assert_eq!(env.at(Ticks(10), dur), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ff/mod.rs:406:9 [INFO] [stderr] | [INFO] [stderr] 406 | assert_eq!(env.at(Ticks(10), dur), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ff/mod.rs:407:9 [INFO] [stderr] | [INFO] [stderr] 407 | assert_eq!(env.at(Ticks(20), dur), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ff/mod.rs:407:9 [INFO] [stderr] | [INFO] [stderr] 407 | assert_eq!(env.at(Ticks(20), dur), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ff/mod.rs:408:9 [INFO] [stderr] | [INFO] [stderr] 408 | assert_eq!(env.at(Ticks(30), dur), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ff/mod.rs:408:9 [INFO] [stderr] | [INFO] [stderr] 408 | assert_eq!(env.at(Ticks(30), dur), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ff/mod.rs:409:9 [INFO] [stderr] | [INFO] [stderr] 409 | assert_eq!(env.at(Ticks(35), dur), 0.6); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ff/mod.rs:409:9 [INFO] [stderr] | [INFO] [stderr] 409 | assert_eq!(env.at(Ticks(35), dur), 0.6); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ff/mod.rs:410:9 [INFO] [stderr] | [INFO] [stderr] 410 | assert_eq!(env.at(Ticks(40), dur), 0.19999999); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ff/mod.rs:410:9 [INFO] [stderr] | [INFO] [stderr] 410 | assert_eq!(env.at(Ticks(40), dur), 0.19999999); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ff/mod.rs:418:9 [INFO] [stderr] | [INFO] [stderr] 418 | assert_eq!(env.at(Ticks(0), dur), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ff/mod.rs:418:9 [INFO] [stderr] | [INFO] [stderr] 418 | assert_eq!(env.at(Ticks(0), dur), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ff/mod.rs:419:9 [INFO] [stderr] | [INFO] [stderr] 419 | assert_eq!(env.at(Ticks(20), dur), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ff/mod.rs:419:9 [INFO] [stderr] | [INFO] [stderr] 419 | assert_eq!(env.at(Ticks(20), dur), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ff/mod.rs:420:9 [INFO] [stderr] | [INFO] [stderr] 420 | assert_eq!(env.at(Ticks(40), dur), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ff/mod.rs:420:9 [INFO] [stderr] | [INFO] [stderr] 420 | assert_eq!(env.at(Ticks(40), dur), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ff/mod.rs:431:9 [INFO] [stderr] | [INFO] [stderr] 431 | assert_eq!(replay.at(Ticks(0)), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ff/mod.rs:431:9 [INFO] [stderr] | [INFO] [stderr] 431 | assert_eq!(replay.at(Ticks(0)), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ff/mod.rs:432:9 [INFO] [stderr] | [INFO] [stderr] 432 | assert_eq!(replay.at(Ticks(9)), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ff/mod.rs:432:9 [INFO] [stderr] | [INFO] [stderr] 432 | assert_eq!(replay.at(Ticks(9)), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ff/mod.rs:433:9 [INFO] [stderr] | [INFO] [stderr] 433 | assert_eq!(replay.at(Ticks(10)), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ff/mod.rs:433:9 [INFO] [stderr] | [INFO] [stderr] 433 | assert_eq!(replay.at(Ticks(10)), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ff/mod.rs:434:9 [INFO] [stderr] | [INFO] [stderr] 434 | assert_eq!(replay.at(Ticks(30)), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ff/mod.rs:434:9 [INFO] [stderr] | [INFO] [stderr] 434 | assert_eq!(replay.at(Ticks(30)), 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ff/mod.rs:435:9 [INFO] [stderr] | [INFO] [stderr] 435 | assert_eq!(replay.at(Ticks(59)), 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ff/mod.rs:435:9 [INFO] [stderr] | [INFO] [stderr] 435 | assert_eq!(replay.at(Ticks(59)), 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ff/mod.rs:436:9 [INFO] [stderr] | [INFO] [stderr] 436 | assert_eq!(replay.at(Ticks(60)), 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ff/mod.rs:436:9 [INFO] [stderr] | [INFO] [stderr] 436 | assert_eq!(replay.at(Ticks(60)), 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ff/mod.rs:437:9 [INFO] [stderr] | [INFO] [stderr] 437 | assert_eq!(replay.at(Ticks(70)), 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ff/mod.rs:437:9 [INFO] [stderr] | [INFO] [stderr] 437 | assert_eq!(replay.at(Ticks(70)), 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `ev::filter::Jitter` [INFO] [stderr] --> src/ev/filter.rs:90:5 [INFO] [stderr] | [INFO] [stderr] 90 | / pub fn new() -> Self { [INFO] [stderr] 91 | | Jitter { threshold: 0.01 } [INFO] [stderr] 92 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 84 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ev/filter.rs:142:20 [INFO] [stderr] | [INFO] [stderr] 142 | if other_val != val.1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(other_val - val.1).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ev/filter.rs:142:20 [INFO] [stderr] | [INFO] [stderr] 142 | if other_val != val.1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ev/filter.rs:150:25 [INFO] [stderr] | [INFO] [stderr] 150 | Some(if gilrs[id].state().value(nec) == val.0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(gilrs[id].state().value(nec) - val.0).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ev/filter.rs:150:25 [INFO] [stderr] | [INFO] [stderr] 150 | Some(if gilrs[id].state().value(nec) == val.0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ev/filter.rs:162:25 [INFO] [stderr] | [INFO] [stderr] 162 | Some(if gilrs[id].state().value(nec) == val { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(gilrs[id].state().value(nec) - val).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ev/filter.rs:162:25 [INFO] [stderr] | [INFO] [stderr] 162 | Some(if gilrs[id].state().value(nec) == val { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ev/filter.rs:185:21 [INFO] [stderr] | [INFO] [stderr] 185 | Some(if gp.state().value(nec) == val { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(gp.state().value(nec) - val).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ev/filter.rs:185:21 [INFO] [stderr] | [INFO] [stderr] 185 | Some(if gp.state().value(nec) == val { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ev/filter.rs:230:21 [INFO] [stderr] | [INFO] [stderr] 230 | Some(if val == 1.0 { [INFO] [stderr] | ^^^^^^^^^^ help: consider comparing them within some error: `(val - 1.0).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ev/filter.rs:230:21 [INFO] [stderr] | [INFO] [stderr] 230 | Some(if val == 1.0 { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ev/filter.rs:236:23 [INFO] [stderr] | [INFO] [stderr] 236 | } else if val == -1.0 { [INFO] [stderr] | ^^^^^^^^^^^ help: consider comparing them within some error: `(val - -1.0).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ev/filter.rs:236:23 [INFO] [stderr] | [INFO] [stderr] 236 | } else if val == -1.0 { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ev/filter.rs:262:21 [INFO] [stderr] | [INFO] [stderr] 262 | Some(if val == 1.0 { [INFO] [stderr] | ^^^^^^^^^^ help: consider comparing them within some error: `(val - 1.0).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ev/filter.rs:262:21 [INFO] [stderr] | [INFO] [stderr] 262 | Some(if val == 1.0 { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/ev/filter.rs:268:23 [INFO] [stderr] | [INFO] [stderr] 268 | } else if val == -1.0 { [INFO] [stderr] | ^^^^^^^^^^^ help: consider comparing them within some error: `(val - -1.0).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/ev/filter.rs:268:23 [INFO] [stderr] | [INFO] [stderr] 268 | } else if val == -1.0 { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `ev::filter::Repeat` [INFO] [stderr] --> src/ev/filter.rs:301:5 [INFO] [stderr] | [INFO] [stderr] 301 | / pub fn new() -> Self { [INFO] [stderr] 302 | | Repeat { [INFO] [stderr] 303 | | after: Duration::from_millis(500), [INFO] [stderr] 304 | | every: Duration::from_millis(30), [INFO] [stderr] 305 | | } [INFO] [stderr] 306 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 294 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: methods called `into_*` usually take self by value; consider choosing a less ambiguous name [INFO] [stderr] --> src/ev/mod.rs:31:21 [INFO] [stderr] | [INFO] [stderr] 31 | pub fn into_u32(&self) -> u32 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/ev/mod.rs:31:21 [INFO] [stderr] | [INFO] [stderr] 31 | pub fn into_u32(&self) -> u32 { [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: redundant closure found [INFO] [stderr] --> src/ev/mod.rs:233:15 [INFO] [stderr] | [INFO] [stderr] 233 | }.map(|nec| Code(nec)) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove closure as shown: `Code` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/ev/mod.rs:327:9 [INFO] [stderr] | [INFO] [stderr] 327 | val = val / range; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `val /= range` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] error: aborting due to 30 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `gilrs`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "1bf61216dab6774e263d92c40946bcb7cd613ea48e087beec91e8b04697d542b"` [INFO] running `"docker" "rm" "-f" "1bf61216dab6774e263d92c40946bcb7cd613ea48e087beec91e8b04697d542b"` [INFO] [stdout] 1bf61216dab6774e263d92c40946bcb7cd613ea48e087beec91e8b04697d542b