[INFO] crate firmata 0.2.0 is already in cache [INFO] extracting crate firmata 0.2.0 into work/ex/clippy-test-run/sources/stable/reg/firmata/0.2.0 [INFO] extracting crate firmata 0.2.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/firmata/0.2.0 [INFO] validating manifest of firmata-0.2.0 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of firmata-0.2.0 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing firmata-0.2.0 [INFO] finished frobbing firmata-0.2.0 [INFO] frobbed toml for firmata-0.2.0 written to work/ex/clippy-test-run/sources/stable/reg/firmata/0.2.0/Cargo.toml [INFO] started frobbing firmata-0.2.0 [INFO] finished frobbing firmata-0.2.0 [INFO] frobbed toml for firmata-0.2.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/firmata/0.2.0/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting firmata-0.2.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/firmata/0.2.0:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 7327e7b6dab5d3777fbab9d985f653c2b1aee441532dd5750a72d2d68b1e68c2 [INFO] running `"docker" "start" "-a" "7327e7b6dab5d3777fbab9d985f653c2b1aee441532dd5750a72d2d68b1e68c2"` [INFO] [stderr] Checking termios v0.1.0 [INFO] [stderr] Checking serial v0.2.1 [INFO] [stderr] Checking firmata v0.2.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:131:13 [INFO] [stderr] | [INFO] [stderr] 131 | sp: sp, [INFO] [stderr] | ^^^^^^ help: replace it with: `sp` [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/lib.rs:131:13 [INFO] [stderr] | [INFO] [stderr] 131 | sp: sp, [INFO] [stderr] | ^^^^^^ help: replace it with: `sp` [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: unneeded return statement [INFO] [stderr] --> src/lib.rs:54:5 [INFO] [stderr] | [INFO] [stderr] 54 | return port.write(buf); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `port.write(buf)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:82:5 [INFO] [stderr] | [INFO] [stderr] 82 | return Ok(vec); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(vec)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:150:9 [INFO] [stderr] | [INFO] [stderr] 150 | return b; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `b` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/lib.rs:288:21 [INFO] [stderr] | [INFO] [stderr] 288 | / if self.pins.len() as i32 > pin { [INFO] [stderr] 289 | | if self.pins[pin as usize].mode == INPUT { [INFO] [stderr] 290 | | self.pins[pin as usize].value = (value >> (i & 0x07)) & 0x01; [INFO] [stderr] 291 | | } [INFO] [stderr] 292 | | } [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] 288 | if self.pins.len() as i32 > pin && self.pins[pin as usize].mode == INPUT { [INFO] [stderr] 289 | self.pins[pin as usize].value = (value >> (i & 0x07)) & 0x01; [INFO] [stderr] 290 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::thread::sleep_ms': replaced by `std::thread::sleep` [INFO] [stderr] --> src/lib.rs:75:21 [INFO] [stderr] | [INFO] [stderr] 75 | thread::sleep_ms(1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:54:5 [INFO] [stderr] | [INFO] [stderr] 54 | return port.write(buf); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `port.write(buf)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:82:5 [INFO] [stderr] | [INFO] [stderr] 82 | return Ok(vec); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(vec)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:150:9 [INFO] [stderr] | [INFO] [stderr] 150 | return b; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `b` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/lib.rs:288:21 [INFO] [stderr] | [INFO] [stderr] 288 | / if self.pins.len() as i32 > pin { [INFO] [stderr] 289 | | if self.pins[pin as usize].mode == INPUT { [INFO] [stderr] 290 | | self.pins[pin as usize].value = (value >> (i & 0x07)) & 0x01; [INFO] [stderr] 291 | | } [INFO] [stderr] 292 | | } [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] 288 | if self.pins.len() as i32 > pin && self.pins[pin as usize].mode == INPUT { [INFO] [stderr] 289 | self.pins[pin as usize].value = (value >> (i & 0x07)) & 0x01; [INFO] [stderr] 290 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::thread::sleep_ms': replaced by `std::thread::sleep` [INFO] [stderr] --> src/lib.rs:75:21 [INFO] [stderr] | [INFO] [stderr] 75 | thread::sleep_ms(1); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::Read` [INFO] [stderr] --> src/lib.rs:47:5 [INFO] [stderr] | [INFO] [stderr] 47 | use std::io::Read; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::Read` [INFO] [stderr] --> src/lib.rs:47:5 [INFO] [stderr] | [INFO] [stderr] 47 | use std::io::Read; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:68:17 [INFO] [stderr] | [INFO] [stderr] 68 | len = len - 1; [INFO] [stderr] | ^^^^^^^^^^^^^ help: replace it with: `len -= 1` [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: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:201:24 [INFO] [stderr] | [INFO] [stderr] 201 | buf.push((((*i as i32) >> 7) & 0x7F) as u8); [INFO] [stderr] | ^^^^^^^^^^^ help: try: `i32::from(*i)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:240:21 [INFO] [stderr] | [INFO] [stderr] 240 | let port = (pin as f64 / 8f64).floor() as usize; [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(pin)` [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: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:248:17 [INFO] [stderr] | [INFO] [stderr] 248 | value = value | (1 << i) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `value |= (1 << i)` [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: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:274:29 [INFO] [stderr] | [INFO] [stderr] 274 | let value = buf[1] as i32 | ((buf[2] as i32) << 7); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `i32::from(buf[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:274:46 [INFO] [stderr] | [INFO] [stderr] 274 | let value = buf[1] as i32 | ((buf[2] as i32) << 7); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(buf[2])` [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 u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:275:28 [INFO] [stderr] | [INFO] [stderr] 275 | let pin = ((buf[0] as i32) & 0x0F) + 14; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(buf[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:282:28 [INFO] [stderr] | [INFO] [stderr] 282 | let port = (buf[0] as i32) & 0x0F; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(buf[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:283:29 [INFO] [stderr] | [INFO] [stderr] 283 | let value = (buf[1] as i32) | ((buf[2] as i32) << 7); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(buf[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:283:48 [INFO] [stderr] | [INFO] [stderr] 283 | let value = (buf[1] as i32) | ((buf[2] as i32) << 7); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(buf[2])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:305:28 [INFO] [stderr] | [INFO] [stderr] 305 | if self.pins.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.pins.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:351:39 [INFO] [stderr] | [INFO] [stderr] 351 | address: (buf[2] as i32) | ((buf[3] as i32) << 7), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(buf[2])` [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 u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:351:58 [INFO] [stderr] | [INFO] [stderr] 351 | address: (buf[2] as i32) | ((buf[3] as i32) << 7), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(buf[3])` [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 u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:352:39 [INFO] [stderr] | [INFO] [stderr] 352 | register: (buf[4] as i32) | ((buf[5] as i32) << 7), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(buf[4])` [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 u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:352:58 [INFO] [stderr] | [INFO] [stderr] 352 | register: (buf[4] as i32) | ((buf[5] as i32) << 7), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(buf[5])` [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: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:68:17 [INFO] [stderr] | [INFO] [stderr] 68 | len = len - 1; [INFO] [stderr] | ^^^^^^^^^^^^^ help: replace it with: `len -= 1` [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: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:201:24 [INFO] [stderr] | [INFO] [stderr] 201 | buf.push((((*i as i32) >> 7) & 0x7F) as u8); [INFO] [stderr] | ^^^^^^^^^^^ help: try: `i32::from(*i)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:240:21 [INFO] [stderr] | [INFO] [stderr] 240 | let port = (pin as f64 / 8f64).floor() as usize; [INFO] [stderr] | ^^^^^^^^^^ help: try: `f64::from(pin)` [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: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:248:17 [INFO] [stderr] | [INFO] [stderr] 248 | value = value | (1 << i) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `value |= (1 << i)` [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: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:274:29 [INFO] [stderr] | [INFO] [stderr] 274 | let value = buf[1] as i32 | ((buf[2] as i32) << 7); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `i32::from(buf[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:274:46 [INFO] [stderr] | [INFO] [stderr] 274 | let value = buf[1] as i32 | ((buf[2] as i32) << 7); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(buf[2])` [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 u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:275:28 [INFO] [stderr] | [INFO] [stderr] 275 | let pin = ((buf[0] as i32) & 0x0F) + 14; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(buf[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:282:28 [INFO] [stderr] | [INFO] [stderr] 282 | let port = (buf[0] as i32) & 0x0F; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(buf[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:283:29 [INFO] [stderr] | [INFO] [stderr] 283 | let value = (buf[1] as i32) | ((buf[2] as i32) << 7); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(buf[1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:283:48 [INFO] [stderr] | [INFO] [stderr] 283 | let value = (buf[1] as i32) | ((buf[2] as i32) << 7); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(buf[2])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:305:28 [INFO] [stderr] | [INFO] [stderr] 305 | if self.pins.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.pins.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:351:39 [INFO] [stderr] | [INFO] [stderr] 351 | address: (buf[2] as i32) | ((buf[3] as i32) << 7), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(buf[2])` [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 u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:351:58 [INFO] [stderr] | [INFO] [stderr] 351 | address: (buf[2] as i32) | ((buf[3] as i32) << 7), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(buf[3])` [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 u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:352:39 [INFO] [stderr] | [INFO] [stderr] 352 | register: (buf[4] as i32) | ((buf[5] as i32) << 7), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(buf[4])` [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 u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:352:58 [INFO] [stderr] | [INFO] [stderr] 352 | register: (buf[4] as i32) | ((buf[5] as i32) << 7), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i32::from(buf[5])` [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: `firmata::*` [INFO] [stderr] --> examples/servo.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use firmata::*; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::thread::sleep_ms': replaced by `std::thread::sleep` [INFO] [stderr] --> examples/servo.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | thread::sleep_ms(10); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `firmata::*` [INFO] [stderr] --> examples/button.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use firmata::*; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::thread::sleep_ms': replaced by `std::thread::sleep` [INFO] [stderr] --> examples/button.rs:31:9 [INFO] [stderr] | [INFO] [stderr] 31 | thread::sleep_ms(100); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `firmata::*` [INFO] [stderr] --> examples/analog.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use firmata::*; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::thread::sleep_ms': replaced by `std::thread::sleep` [INFO] [stderr] --> examples/analog.rs:22:9 [INFO] [stderr] | [INFO] [stderr] 22 | thread::sleep_ms(10); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `firmata::*` [INFO] [stderr] --> examples/pwm.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use firmata::*; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::thread::sleep_ms': replaced by `std::thread::sleep` [INFO] [stderr] --> examples/pwm.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | thread::sleep_ms(10); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `firmata::*` [INFO] [stderr] --> examples/blink.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use firmata::*; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::thread::sleep_ms': replaced by `std::thread::sleep` [INFO] [stderr] --> examples/blink.rs:18:9 [INFO] [stderr] | [INFO] [stderr] 18 | thread::sleep_ms(400); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `firmata::*` [INFO] [stderr] --> examples/blinkm_i2c.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use firmata::*; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::thread::sleep_ms': replaced by `std::thread::sleep` [INFO] [stderr] --> examples/blinkm_i2c.rs:12:9 [INFO] [stderr] | [INFO] [stderr] 12 | thread::sleep_ms(10); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::thread::sleep_ms': replaced by `std::thread::sleep` [INFO] [stderr] --> examples/blinkm_i2c.rs:20:13 [INFO] [stderr] | [INFO] [stderr] 20 | thread::sleep_ms(10); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::thread::sleep_ms': replaced by `std::thread::sleep` [INFO] [stderr] --> examples/blinkm_i2c.rs:44:9 [INFO] [stderr] | [INFO] [stderr] 44 | thread::sleep_ms(10); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::thread::sleep_ms': replaced by `std::thread::sleep` [INFO] [stderr] --> examples/blinkm_i2c.rs:55:5 [INFO] [stderr] | [INFO] [stderr] 55 | thread::sleep_ms(1000); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::thread::sleep_ms': replaced by `std::thread::sleep` [INFO] [stderr] --> examples/blinkm_i2c.rs:59:5 [INFO] [stderr] | [INFO] [stderr] 59 | thread::sleep_ms(1000); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::thread::sleep_ms': replaced by `std::thread::sleep` [INFO] [stderr] --> examples/blinkm_i2c.rs:63:5 [INFO] [stderr] | [INFO] [stderr] 63 | thread::sleep_ms(1000); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> examples/blinkm_i2c.rs:11:27 [INFO] [stderr] | [INFO] [stderr] 11 | b.i2c_write(0x09, "o".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"o"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::string_lit_as_bytes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> examples/blinkm_i2c.rs:27:23 [INFO] [stderr] | [INFO] [stderr] 27 | b.i2c_write(0x09, "n".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"n"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: calling `as_bytes()` on a string literal [INFO] [stderr] --> examples/blinkm_i2c.rs:34:27 [INFO] [stderr] | [INFO] [stderr] 34 | b.i2c_write(0x09, "g".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b"g"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 4.34s [INFO] running `"docker" "inspect" "7327e7b6dab5d3777fbab9d985f653c2b1aee441532dd5750a72d2d68b1e68c2"` [INFO] running `"docker" "rm" "-f" "7327e7b6dab5d3777fbab9d985f653c2b1aee441532dd5750a72d2d68b1e68c2"` [INFO] [stdout] 7327e7b6dab5d3777fbab9d985f653c2b1aee441532dd5750a72d2d68b1e68c2