[INFO] crate i2cdev-l3gd20 0.1.3 is already in cache [INFO] extracting crate i2cdev-l3gd20 0.1.3 into work/ex/clippy-test-run/sources/stable/reg/i2cdev-l3gd20/0.1.3 [INFO] extracting crate i2cdev-l3gd20 0.1.3 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/i2cdev-l3gd20/0.1.3 [INFO] validating manifest of i2cdev-l3gd20-0.1.3 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 i2cdev-l3gd20-0.1.3 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 i2cdev-l3gd20-0.1.3 [INFO] finished frobbing i2cdev-l3gd20-0.1.3 [INFO] frobbed toml for i2cdev-l3gd20-0.1.3 written to work/ex/clippy-test-run/sources/stable/reg/i2cdev-l3gd20/0.1.3/Cargo.toml [INFO] started frobbing i2cdev-l3gd20-0.1.3 [INFO] finished frobbing i2cdev-l3gd20-0.1.3 [INFO] frobbed toml for i2cdev-l3gd20-0.1.3 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/i2cdev-l3gd20/0.1.3/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 i2cdev-l3gd20-0.1.3 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/i2cdev-l3gd20/0.1.3:/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] e20acecbfc5adfa91f3ead04d8faf033a0de46e5f0a3ff4200af388285b25823 [INFO] running `"docker" "start" "-a" "e20acecbfc5adfa91f3ead04d8faf033a0de46e5f0a3ff4200af388285b25823"` [INFO] [stderr] Checking i2cdev-l3gd20 v0.1.3 (/opt/crater/workdir) [INFO] [stderr] warning: unused import: `std::thread` [INFO] [stderr] --> src/lib.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | use std::thread; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time::Duration` [INFO] [stderr] --> src/lib.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | use std::time::Duration; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::error::Error` [INFO] [stderr] --> src/lib.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | use std::error::Error; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `BigEndian` [INFO] [stderr] --> src/lib.rs:26:28 [INFO] [stderr] | [INFO] [stderr] 26 | use byteorder::{ByteOrder, BigEndian, LittleEndian}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:44:30 [INFO] [stderr] | [INFO] [stderr] 44 | const L3GD20H_WHO_AM_I: u8 = 0b11010111; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1101_0111` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:45:29 [INFO] [stderr] | [INFO] [stderr] 45 | const L3GD20_WHO_AM_I: u8 = 0b11010100; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1101_0100` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:49:17 [INFO] [stderr] | [INFO] [stderr] 49 | PowerDown = 0b00000000, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:51:14 [INFO] [stderr] | [INFO] [stderr] 51 | Normal = 0b00001000 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_1000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:155:75 [INFO] [stderr] | [INFO] [stderr] 155 | ctrl_reg1 = (ctrl_reg1 | L3GD20PowerMode::Normal as u8) & 0b11111000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1111_1000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:183:26 [INFO] [stderr] | [INFO] [stderr] 183 | ctrl_reg4 |= 0b10000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1000_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:189:25 [INFO] [stderr] | [INFO] [stderr] 189 | ctrl_reg5 = 0b00010000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0001_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/lib.rs:146:29 [INFO] [stderr] | [INFO] [stderr] 146 | pub fn new(mut gyro: T, mut gyro_settings: L3GD20GyroscopeSettings) -> Result, T::Error> { [INFO] [stderr] | ----^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/lib.rs:194:13 [INFO] [stderr] | [INFO] [stderr] 194 | let mut g_gain: f32; [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variant `dps250` should have a camel case name such as `Dps250` [INFO] [stderr] --> src/lib.rs:74:5 [INFO] [stderr] | [INFO] [stderr] 74 | dps250 = 0b00, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_camel_case_types)] on by default [INFO] [stderr] [INFO] [stderr] warning: variant `dps500` should have a camel case name such as `Dps500` [INFO] [stderr] --> src/lib.rs:75:5 [INFO] [stderr] | [INFO] [stderr] 75 | dps500 = 0b01, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `dps2000` should have a camel case name such as `Dps2000` [INFO] [stderr] --> src/lib.rs:76:5 [INFO] [stderr] | [INFO] [stderr] 76 | dps2000 = 0b10 [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `HPCF_0` should have a camel case name such as `Hpcf0` [INFO] [stderr] --> src/lib.rs:89:5 [INFO] [stderr] | [INFO] [stderr] 89 | HPCF_0 = 0b0000, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `HPCF_1` should have a camel case name such as `Hpcf1` [INFO] [stderr] --> src/lib.rs:90:5 [INFO] [stderr] | [INFO] [stderr] 90 | HPCF_1 = 0b0001, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `HPCF_2` should have a camel case name such as `Hpcf2` [INFO] [stderr] --> src/lib.rs:91:5 [INFO] [stderr] | [INFO] [stderr] 91 | HPCF_2 = 0b0010, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `HPCF_3` should have a camel case name such as `Hpcf3` [INFO] [stderr] --> src/lib.rs:92:5 [INFO] [stderr] | [INFO] [stderr] 92 | HPCF_3 = 0b0011, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `HPCF_4` should have a camel case name such as `Hpcf4` [INFO] [stderr] --> src/lib.rs:93:5 [INFO] [stderr] | [INFO] [stderr] 93 | HPCF_4 = 0b0100, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `HPCF_5` should have a camel case name such as `Hpcf5` [INFO] [stderr] --> src/lib.rs:94:5 [INFO] [stderr] | [INFO] [stderr] 94 | HPCF_5 = 0b0101, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `HPCF_6` should have a camel case name such as `Hpcf6` [INFO] [stderr] --> src/lib.rs:95:5 [INFO] [stderr] | [INFO] [stderr] 95 | HPCF_6 = 0b0110, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `HPCF_7` should have a camel case name such as `Hpcf7` [INFO] [stderr] --> src/lib.rs:96:5 [INFO] [stderr] | [INFO] [stderr] 96 | HPCF_7 = 0b0111, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `HPCF_8` should have a camel case name such as `Hpcf8` [INFO] [stderr] --> src/lib.rs:97:5 [INFO] [stderr] | [INFO] [stderr] 97 | HPCF_8 = 0b1000, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `HPCF_9` should have a camel case name such as `Hpcf9` [INFO] [stderr] --> src/lib.rs:98:5 [INFO] [stderr] | [INFO] [stderr] 98 | HPCF_9 = 0b1001, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: structure field `DR` should have a snake case name such as `dr` [INFO] [stderr] --> src/lib.rs:105:5 [INFO] [stderr] | [INFO] [stderr] 105 | pub DR: L3GD20GyroscopeDataRate, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: structure field `BW` should have a snake case name such as `bw` [INFO] [stderr] --> src/lib.rs:107:5 [INFO] [stderr] | [INFO] [stderr] 107 | pub BW: L3GD20GyroscopeBandwidth, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/lib.rs:187:9 [INFO] [stderr] | [INFO] [stderr] 187 | / let mut ctrl_reg5: u8 = 0_u8; [INFO] [stderr] 188 | | if gyro_settings.high_pass_filter_enabled { [INFO] [stderr] 189 | | ctrl_reg5 = 0b00010000; [INFO] [stderr] 190 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let ctrl_reg5 = if gyro_settings.high_pass_filter_enabled { 0b00010000 } else { 0_u8 };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `((gyro_settings.DR as u8) << 6)` [INFO] [stderr] --> src/lib.rs:149:33 [INFO] [stderr] | [INFO] [stderr] 149 | let mut ctrl_reg1: u8 = 0_u8 | ((gyro_settings.DR as u8) << 6) | ((gyro_settings.BW as u8) << 4); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [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/lib.rs:167:9 [INFO] [stderr] | [INFO] [stderr] 167 | / match gyro_settings.high_pass_filter_mode { [INFO] [stderr] 168 | | Some(mode) => { [INFO] [stderr] 169 | | ctrl_reg2 = ctrl_reg2 | ((mode as u8) << 4); [INFO] [stderr] 170 | | }, [INFO] [stderr] 171 | | None => {} [INFO] [stderr] 172 | | } [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] 167 | if let Some(mode) = gyro_settings.high_pass_filter_mode { [INFO] [stderr] 168 | ctrl_reg2 = ctrl_reg2 | ((mode as u8) << 4); [INFO] [stderr] 169 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:169:17 [INFO] [stderr] | [INFO] [stderr] 169 | ctrl_reg2 = ctrl_reg2 | ((mode as u8) << 4); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ctrl_reg2 |= ((mode as u8) << 4)` [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:173:9 [INFO] [stderr] | [INFO] [stderr] 173 | / match gyro_settings.high_pass_filter_configuration { [INFO] [stderr] 174 | | Some(config) => { [INFO] [stderr] 175 | | ctrl_reg2 = ctrl_reg2 | (config as u8); [INFO] [stderr] 176 | | }, [INFO] [stderr] 177 | | None => {} [INFO] [stderr] 178 | | } [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] 173 | if let Some(config) = gyro_settings.high_pass_filter_configuration { [INFO] [stderr] 174 | ctrl_reg2 = ctrl_reg2 | (config as u8); [INFO] [stderr] 175 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:175:17 [INFO] [stderr] | [INFO] [stderr] 175 | ctrl_reg2 = ctrl_reg2 | (config as u8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ctrl_reg2 |= (config as u8)` [INFO] [stderr] | [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: the operation is ineffective. Consider reducing it to `((gyro_settings.sensitivity as u8) << 4)` [INFO] [stderr] --> src/lib.rs:181:33 [INFO] [stderr] | [INFO] [stderr] 181 | let mut ctrl_reg4: u8 = 0_u8 | ((gyro_settings.sensitivity as u8) << 4); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:217:9 [INFO] [stderr] | [INFO] [stderr] 217 | self.gyroscope.write(&[L3GD20_INCREMENT_BIT | L3GD20_OUT]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:218:9 [INFO] [stderr] | [INFO] [stderr] 218 | self.gyroscope.read(&mut buf); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: casting i16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:241:16 [INFO] [stderr] | [INFO] [stderr] 241 | x: (x_raw as f32) * self.g_gain, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f32::from(x_raw)` [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 i16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:242:16 [INFO] [stderr] | [INFO] [stderr] 242 | y: (y_raw as f32) * self.g_gain, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f32::from(y_raw)` [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 i16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:243:16 [INFO] [stderr] | [INFO] [stderr] 243 | z: (z_raw as f32) * self.g_gain [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f32::from(z_raw)` [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: unused import: `std::thread` [INFO] [stderr] --> src/lib.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | use std::thread; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time::Duration` [INFO] [stderr] --> src/lib.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | use std::time::Duration; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::error::Error` [INFO] [stderr] --> src/lib.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | use std::error::Error; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `BigEndian` [INFO] [stderr] --> src/lib.rs:26:28 [INFO] [stderr] | [INFO] [stderr] 26 | use byteorder::{ByteOrder, BigEndian, LittleEndian}; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:44:30 [INFO] [stderr] | [INFO] [stderr] 44 | const L3GD20H_WHO_AM_I: u8 = 0b11010111; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1101_0111` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:45:29 [INFO] [stderr] | [INFO] [stderr] 45 | const L3GD20_WHO_AM_I: u8 = 0b11010100; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1101_0100` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:49:17 [INFO] [stderr] | [INFO] [stderr] 49 | PowerDown = 0b00000000, [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:51:14 [INFO] [stderr] | [INFO] [stderr] 51 | Normal = 0b00001000 [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_1000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:155:75 [INFO] [stderr] | [INFO] [stderr] 155 | ctrl_reg1 = (ctrl_reg1 | L3GD20PowerMode::Normal as u8) & 0b11111000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1111_1000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:183:26 [INFO] [stderr] | [INFO] [stderr] 183 | ctrl_reg4 |= 0b10000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1000_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:189:25 [INFO] [stderr] | [INFO] [stderr] 189 | ctrl_reg5 = 0b00010000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0001_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/lib.rs:146:29 [INFO] [stderr] | [INFO] [stderr] 146 | pub fn new(mut gyro: T, mut gyro_settings: L3GD20GyroscopeSettings) -> Result, T::Error> { [INFO] [stderr] | ----^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/lib.rs:194:13 [INFO] [stderr] | [INFO] [stderr] 194 | let mut g_gain: f32; [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variant `dps250` should have a camel case name such as `Dps250` [INFO] [stderr] --> src/lib.rs:74:5 [INFO] [stderr] | [INFO] [stderr] 74 | dps250 = 0b00, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_camel_case_types)] on by default [INFO] [stderr] [INFO] [stderr] warning: variant `dps500` should have a camel case name such as `Dps500` [INFO] [stderr] --> src/lib.rs:75:5 [INFO] [stderr] | [INFO] [stderr] 75 | dps500 = 0b01, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `dps2000` should have a camel case name such as `Dps2000` [INFO] [stderr] --> src/lib.rs:76:5 [INFO] [stderr] | [INFO] [stderr] 76 | dps2000 = 0b10 [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `HPCF_0` should have a camel case name such as `Hpcf0` [INFO] [stderr] --> src/lib.rs:89:5 [INFO] [stderr] | [INFO] [stderr] 89 | HPCF_0 = 0b0000, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `HPCF_1` should have a camel case name such as `Hpcf1` [INFO] [stderr] --> src/lib.rs:90:5 [INFO] [stderr] | [INFO] [stderr] 90 | HPCF_1 = 0b0001, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `HPCF_2` should have a camel case name such as `Hpcf2` [INFO] [stderr] --> src/lib.rs:91:5 [INFO] [stderr] | [INFO] [stderr] 91 | HPCF_2 = 0b0010, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `HPCF_3` should have a camel case name such as `Hpcf3` [INFO] [stderr] --> src/lib.rs:92:5 [INFO] [stderr] | [INFO] [stderr] 92 | HPCF_3 = 0b0011, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `HPCF_4` should have a camel case name such as `Hpcf4` [INFO] [stderr] --> src/lib.rs:93:5 [INFO] [stderr] | [INFO] [stderr] 93 | HPCF_4 = 0b0100, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `HPCF_5` should have a camel case name such as `Hpcf5` [INFO] [stderr] --> src/lib.rs:94:5 [INFO] [stderr] | [INFO] [stderr] 94 | HPCF_5 = 0b0101, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `HPCF_6` should have a camel case name such as `Hpcf6` [INFO] [stderr] --> src/lib.rs:95:5 [INFO] [stderr] | [INFO] [stderr] 95 | HPCF_6 = 0b0110, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `HPCF_7` should have a camel case name such as `Hpcf7` [INFO] [stderr] --> src/lib.rs:96:5 [INFO] [stderr] | [INFO] [stderr] 96 | HPCF_7 = 0b0111, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `HPCF_8` should have a camel case name such as `Hpcf8` [INFO] [stderr] --> src/lib.rs:97:5 [INFO] [stderr] | [INFO] [stderr] 97 | HPCF_8 = 0b1000, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `HPCF_9` should have a camel case name such as `Hpcf9` [INFO] [stderr] --> src/lib.rs:98:5 [INFO] [stderr] | [INFO] [stderr] 98 | HPCF_9 = 0b1001, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: structure field `DR` should have a snake case name such as `dr` [INFO] [stderr] --> src/lib.rs:105:5 [INFO] [stderr] | [INFO] [stderr] 105 | pub DR: L3GD20GyroscopeDataRate, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: structure field `BW` should have a snake case name such as `bw` [INFO] [stderr] --> src/lib.rs:107:5 [INFO] [stderr] | [INFO] [stderr] 107 | pub BW: L3GD20GyroscopeBandwidth, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/lib.rs:187:9 [INFO] [stderr] | [INFO] [stderr] 187 | / let mut ctrl_reg5: u8 = 0_u8; [INFO] [stderr] 188 | | if gyro_settings.high_pass_filter_enabled { [INFO] [stderr] 189 | | ctrl_reg5 = 0b00010000; [INFO] [stderr] 190 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let ctrl_reg5 = if gyro_settings.high_pass_filter_enabled { 0b00010000 } else { 0_u8 };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `((gyro_settings.DR as u8) << 6)` [INFO] [stderr] --> src/lib.rs:149:33 [INFO] [stderr] | [INFO] [stderr] 149 | let mut ctrl_reg1: u8 = 0_u8 | ((gyro_settings.DR as u8) << 6) | ((gyro_settings.BW as u8) << 4); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [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/lib.rs:167:9 [INFO] [stderr] | [INFO] [stderr] 167 | / match gyro_settings.high_pass_filter_mode { [INFO] [stderr] 168 | | Some(mode) => { [INFO] [stderr] 169 | | ctrl_reg2 = ctrl_reg2 | ((mode as u8) << 4); [INFO] [stderr] 170 | | }, [INFO] [stderr] 171 | | None => {} [INFO] [stderr] 172 | | } [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] 167 | if let Some(mode) = gyro_settings.high_pass_filter_mode { [INFO] [stderr] 168 | ctrl_reg2 = ctrl_reg2 | ((mode as u8) << 4); [INFO] [stderr] 169 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:169:17 [INFO] [stderr] | [INFO] [stderr] 169 | ctrl_reg2 = ctrl_reg2 | ((mode as u8) << 4); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ctrl_reg2 |= ((mode as u8) << 4)` [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:173:9 [INFO] [stderr] | [INFO] [stderr] 173 | / match gyro_settings.high_pass_filter_configuration { [INFO] [stderr] 174 | | Some(config) => { [INFO] [stderr] 175 | | ctrl_reg2 = ctrl_reg2 | (config as u8); [INFO] [stderr] 176 | | }, [INFO] [stderr] 177 | | None => {} [INFO] [stderr] 178 | | } [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] 173 | if let Some(config) = gyro_settings.high_pass_filter_configuration { [INFO] [stderr] 174 | ctrl_reg2 = ctrl_reg2 | (config as u8); [INFO] [stderr] 175 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:175:17 [INFO] [stderr] | [INFO] [stderr] 175 | ctrl_reg2 = ctrl_reg2 | (config as u8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ctrl_reg2 |= (config as u8)` [INFO] [stderr] | [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: the operation is ineffective. Consider reducing it to `((gyro_settings.sensitivity as u8) << 4)` [INFO] [stderr] --> src/lib.rs:181:33 [INFO] [stderr] | [INFO] [stderr] 181 | let mut ctrl_reg4: u8 = 0_u8 | ((gyro_settings.sensitivity as u8) << 4); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:217:9 [INFO] [stderr] | [INFO] [stderr] 217 | self.gyroscope.write(&[L3GD20_INCREMENT_BIT | L3GD20_OUT]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/lib.rs:218:9 [INFO] [stderr] | [INFO] [stderr] 218 | self.gyroscope.read(&mut buf); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: casting i16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:241:16 [INFO] [stderr] | [INFO] [stderr] 241 | x: (x_raw as f32) * self.g_gain, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f32::from(x_raw)` [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 i16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:242:16 [INFO] [stderr] | [INFO] [stderr] 242 | y: (y_raw as f32) * self.g_gain, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f32::from(y_raw)` [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 i16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:243:16 [INFO] [stderr] | [INFO] [stderr] 243 | z: (z_raw as f32) * self.g_gain [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `f32::from(z_raw)` [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: unused import: `Vec3` [INFO] [stderr] --> src/main.rs:5:28 [INFO] [stderr] | [INFO] [stderr] 5 | use i2csensors::{Gyroscope,Vec3}; [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:30:9 [INFO] [stderr] | [INFO] [stderr] 30 | let mut i2cdev = get_linux_l3gd20_i2c_device().unwrap(); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Vec3` [INFO] [stderr] --> src/main.rs:5:28 [INFO] [stderr] | [INFO] [stderr] 5 | use i2csensors::{Gyroscope,Vec3}; [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:30:9 [INFO] [stderr] | [INFO] [stderr] 30 | let mut i2cdev = get_linux_l3gd20_i2c_device().unwrap(); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 3.45s [INFO] running `"docker" "inspect" "e20acecbfc5adfa91f3ead04d8faf033a0de46e5f0a3ff4200af388285b25823"` [INFO] running `"docker" "rm" "-f" "e20acecbfc5adfa91f3ead04d8faf033a0de46e5f0a3ff4200af388285b25823"` [INFO] [stdout] e20acecbfc5adfa91f3ead04d8faf033a0de46e5f0a3ff4200af388285b25823