[INFO] crate trellis_test 0.2.1 is already in cache [INFO] extracting crate trellis_test 0.2.1 into work/ex/clippy-test-run/sources/stable/reg/trellis_test/0.2.1 [INFO] extracting crate trellis_test 0.2.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/trellis_test/0.2.1 [INFO] validating manifest of trellis_test-0.2.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 trellis_test-0.2.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 trellis_test-0.2.1 [INFO] finished frobbing trellis_test-0.2.1 [INFO] frobbed toml for trellis_test-0.2.1 written to work/ex/clippy-test-run/sources/stable/reg/trellis_test/0.2.1/Cargo.toml [INFO] started frobbing trellis_test-0.2.1 [INFO] finished frobbing trellis_test-0.2.1 [INFO] frobbed toml for trellis_test-0.2.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/trellis_test/0.2.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 trellis_test-0.2.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/trellis_test/0.2.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] 9eab65eba882288d2e8d29d45cc054c97afb5a722a30508f4ac01dbecc2a77c0 [INFO] running `"docker" "start" "-a" "9eab65eba882288d2e8d29d45cc054c97afb5a722a30508f4ac01dbecc2a77c0"` [INFO] [stderr] Compiling pulldown-cmark v0.2.0 [INFO] [stderr] Compiling bytecount v0.4.0 [INFO] [stderr] Compiling semver v0.9.0 [INFO] [stderr] Compiling error-chain v0.12.0 [INFO] [stderr] Compiling cargo_metadata v0.6.4 [INFO] [stderr] Compiling skeptic v0.13.4 [INFO] [stderr] Compiling i2cdev v0.3.2 [INFO] [stderr] Checking trellis_test v0.2.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/mock.rs:34:28 [INFO] [stderr] | [INFO] [stderr] 34 | return MockDevice {write_block_cb: write_block_cb, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `write_block_cb` [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/mock.rs:36:28 [INFO] [stderr] | [INFO] [stderr] 36 | read_block_data: read_block_data}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `read_block_data` [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/mock.rs:34:28 [INFO] [stderr] | [INFO] [stderr] 34 | return MockDevice {write_block_cb: write_block_cb, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `write_block_cb` [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/mock.rs:36:28 [INFO] [stderr] | [INFO] [stderr] 36 | read_block_data: read_block_data}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `read_block_data` [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: unneeded return statement [INFO] [stderr] --> src/core.rs:62:9 [INFO] [stderr] | [INFO] [stderr] 62 | return ButtonEvent{buttons_pressed: vec![]} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ButtonEvent{buttons_pressed: vec![]}` [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/core.rs:112:5 [INFO] [stderr] | [INFO] [stderr] 112 | return LedButton{col: num_to_col(col_num), row: num_to_row(row_num)}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `LedButton{col: num_to_col(col_num), row: num_to_row(row_num)}` [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/core.rs:116:5 [INFO] [stderr] | [INFO] [stderr] 116 | return (row_to_num(row)*4 + col_to_num(col)) as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(row_to_num(row)*4 + col_to_num(col)) as usize` [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/core.rs:125:5 [INFO] [stderr] | [INFO] [stderr] 125 | return result; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `result` [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/core.rs:135:5 [INFO] [stderr] | [INFO] [stderr] 135 | return ButtonEvent{buttons_pressed:pressed}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ButtonEvent{buttons_pressed:pressed}` [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/core.rs:156:9 [INFO] [stderr] | [INFO] [stderr] 156 | / return Trellis { display_buffer: [false; NUM_LEDS], [INFO] [stderr] 157 | | button_state: [false; NUM_LEDS], [INFO] [stderr] 158 | | device: dev}; [INFO] [stderr] | |______________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 156 | Trellis { display_buffer: [false; NUM_LEDS], [INFO] [stderr] 157 | button_state: [false; NUM_LEDS], [INFO] [stderr] 158 | device: dev} [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/core.rs:188:9 [INFO] [stderr] | [INFO] [stderr] 188 | return self.display_buffer[led_index(col, row)]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.display_buffer[led_index(col, row)]` [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/devices.rs:30:9 [INFO] [stderr] | [INFO] [stderr] 30 | return RaspberryPiBPlus {i2c_device: i2cdev}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `RaspberryPiBPlus {i2c_device: i2cdev}` [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/devices.rs:37:9 [INFO] [stderr] | [INFO] [stderr] 37 | return convert_to_io_error(result); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `convert_to_io_error(result)` [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/devices.rs:42:9 [INFO] [stderr] | [INFO] [stderr] 42 | return convert_to_io_error(result); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `convert_to_io_error(result)` [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/mock.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 25 | return MockDevice::new(write_block_cb, vec![0; 6]) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `MockDevice::new(write_block_cb, vec![0; 6])` [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/mock.rs:30:9 [INFO] [stderr] | [INFO] [stderr] 30 | return MockDevice::new(noop, read_block_data); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `MockDevice::new(noop, read_block_data)` [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/mock.rs:34:9 [INFO] [stderr] | [INFO] [stderr] 34 | / return MockDevice {write_block_cb: write_block_cb, [INFO] [stderr] 35 | | write_block_counter: 0, [INFO] [stderr] 36 | | read_block_data: read_block_data}; [INFO] [stderr] | |_____________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 34 | MockDevice {write_block_cb: write_block_cb, [INFO] [stderr] 35 | write_block_counter: 0, [INFO] [stderr] 36 | read_block_data: read_block_data} [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/mock.rs:45:9 [INFO] [stderr] | [INFO] [stderr] 45 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [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/mock.rs:49:9 [INFO] [stderr] | [INFO] [stderr] 49 | return Ok(self.read_block_data.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(self.read_block_data.clone())` [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: the operation is ineffective. Consider reducing it to `0x80 | 0x01` [INFO] [stderr] --> src/core.rs:167:33 [INFO] [stderr] | [INFO] [stderr] 167 | self.device.write_block(0x80 | 0x01 | 0 << 1, &empty_array).unwrap(); [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: methods called `is_*` usually take self by reference or no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/core.rs:187:23 [INFO] [stderr] | [INFO] [stderr] 187 | pub fn is_led_set(&mut self, col:Col, row: Row) -> bool { [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: the loop variable `l` is used to index `LED_ADDRESSES` [INFO] [stderr] --> src/core.rs:196:18 [INFO] [stderr] | [INFO] [stderr] 196 | for l in 0..NUM_LEDS { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 196 | for (l, ) in LED_ADDRESSES.iter().enumerate().take(NUM_LEDS) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `devices::RaspberryPiBPlus` [INFO] [stderr] --> src/devices.rs:28:5 [INFO] [stderr] | [INFO] [stderr] 28 | / pub fn new() -> RaspberryPiBPlus { [INFO] [stderr] 29 | | let i2cdev = LinuxI2CDevice::new("/dev/i2c-1", 0x70).unwrap(); [INFO] [stderr] 30 | | return RaspberryPiBPlus {i2c_device: i2cdev}; [INFO] [stderr] 31 | | } [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] 27 | impl Default for devices::RaspberryPiBPlus { [INFO] [stderr] 28 | fn default() -> Self { [INFO] [stderr] 29 | Self::new() [INFO] [stderr] 30 | } [INFO] [stderr] 31 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/core.rs:62:9 [INFO] [stderr] | [INFO] [stderr] 62 | return ButtonEvent{buttons_pressed: vec![]} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ButtonEvent{buttons_pressed: vec![]}` [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/core.rs:112:5 [INFO] [stderr] | [INFO] [stderr] 112 | return LedButton{col: num_to_col(col_num), row: num_to_row(row_num)}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `LedButton{col: num_to_col(col_num), row: num_to_row(row_num)}` [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/core.rs:116:5 [INFO] [stderr] | [INFO] [stderr] 116 | return (row_to_num(row)*4 + col_to_num(col)) as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(row_to_num(row)*4 + col_to_num(col)) as usize` [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/core.rs:125:5 [INFO] [stderr] | [INFO] [stderr] 125 | return result; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `result` [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/core.rs:135:5 [INFO] [stderr] | [INFO] [stderr] 135 | return ButtonEvent{buttons_pressed:pressed}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ButtonEvent{buttons_pressed:pressed}` [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/core.rs:156:9 [INFO] [stderr] | [INFO] [stderr] 156 | / return Trellis { display_buffer: [false; NUM_LEDS], [INFO] [stderr] 157 | | button_state: [false; NUM_LEDS], [INFO] [stderr] 158 | | device: dev}; [INFO] [stderr] | |______________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 156 | Trellis { display_buffer: [false; NUM_LEDS], [INFO] [stderr] 157 | button_state: [false; NUM_LEDS], [INFO] [stderr] 158 | device: dev} [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/core.rs:188:9 [INFO] [stderr] | [INFO] [stderr] 188 | return self.display_buffer[led_index(col, row)]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.display_buffer[led_index(col, row)]` [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/devices.rs:30:9 [INFO] [stderr] | [INFO] [stderr] 30 | return RaspberryPiBPlus {i2c_device: i2cdev}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `RaspberryPiBPlus {i2c_device: i2cdev}` [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/devices.rs:37:9 [INFO] [stderr] | [INFO] [stderr] 37 | return convert_to_io_error(result); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `convert_to_io_error(result)` [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/devices.rs:42:9 [INFO] [stderr] | [INFO] [stderr] 42 | return convert_to_io_error(result); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `convert_to_io_error(result)` [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/mock.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 25 | return MockDevice::new(write_block_cb, vec![0; 6]) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `MockDevice::new(write_block_cb, vec![0; 6])` [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/mock.rs:30:9 [INFO] [stderr] | [INFO] [stderr] 30 | return MockDevice::new(noop, read_block_data); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `MockDevice::new(noop, read_block_data)` [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/mock.rs:34:9 [INFO] [stderr] | [INFO] [stderr] 34 | / return MockDevice {write_block_cb: write_block_cb, [INFO] [stderr] 35 | | write_block_counter: 0, [INFO] [stderr] 36 | | read_block_data: read_block_data}; [INFO] [stderr] | |_____________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 34 | MockDevice {write_block_cb: write_block_cb, [INFO] [stderr] 35 | write_block_counter: 0, [INFO] [stderr] 36 | read_block_data: read_block_data} [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/mock.rs:45:9 [INFO] [stderr] | [INFO] [stderr] 45 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [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/mock.rs:49:9 [INFO] [stderr] | [INFO] [stderr] 49 | return Ok(self.read_block_data.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(self.read_block_data.clone())` [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: the operation is ineffective. Consider reducing it to `0x80 | 0x01` [INFO] [stderr] --> src/core.rs:167:33 [INFO] [stderr] | [INFO] [stderr] 167 | self.device.write_block(0x80 | 0x01 | 0 << 1, &empty_array).unwrap(); [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: methods called `is_*` usually take self by reference or no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/core.rs:187:23 [INFO] [stderr] | [INFO] [stderr] 187 | pub fn is_led_set(&mut self, col:Col, row: Row) -> bool { [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: the loop variable `l` is used to index `LED_ADDRESSES` [INFO] [stderr] --> src/core.rs:196:18 [INFO] [stderr] | [INFO] [stderr] 196 | for l in 0..NUM_LEDS { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 196 | for (l, ) in LED_ADDRESSES.iter().enumerate().take(NUM_LEDS) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `devices::RaspberryPiBPlus` [INFO] [stderr] --> src/devices.rs:28:5 [INFO] [stderr] | [INFO] [stderr] 28 | / pub fn new() -> RaspberryPiBPlus { [INFO] [stderr] 29 | | let i2cdev = LinuxI2CDevice::new("/dev/i2c-1", 0x70).unwrap(); [INFO] [stderr] 30 | | return RaspberryPiBPlus {i2c_device: i2cdev}; [INFO] [stderr] 31 | | } [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] 27 | impl Default for devices::RaspberryPiBPlus { [INFO] [stderr] 28 | fn default() -> Self { [INFO] [stderr] 29 | Self::new() [INFO] [stderr] 30 | } [INFO] [stderr] 31 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:32:9 [INFO] [stderr] | [INFO] [stderr] 32 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [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: length comparison to zero [INFO] [stderr] --> src/main.rs:21:12 [INFO] [stderr] | [INFO] [stderr] 21 | if evt.buttons_pressed.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!evt.buttons_pressed.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: unneeded return statement [INFO] [stderr] --> src/main.rs:32:9 [INFO] [stderr] | [INFO] [stderr] 32 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [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] --> tests/core.rs:78:9 [INFO] [stderr] | [INFO] [stderr] 78 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [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] --> tests/core.rs:93:9 [INFO] [stderr] | [INFO] [stderr] 93 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [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] --> tests/core.rs:107:9 [INFO] [stderr] | [INFO] [stderr] 107 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [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] --> tests/core.rs:117:5 [INFO] [stderr] | [INFO] [stderr] 117 | return new_trellis_write_only(noop); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `new_trellis_write_only(noop)` [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] --> tests/core.rs:124:5 [INFO] [stderr] | [INFO] [stderr] 124 | return trellis; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `trellis` [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] --> tests/core.rs:131:5 [INFO] [stderr] | [INFO] [stderr] 131 | return trellis; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `trellis` [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: length comparison to zero [INFO] [stderr] --> src/main.rs:21:12 [INFO] [stderr] | [INFO] [stderr] 21 | if evt.buttons_pressed.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!evt.buttons_pressed.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: manual implementation of an assign operation [INFO] [stderr] --> tests/core.rs:74:9 [INFO] [stderr] | [INFO] [stderr] 74 | cnt = cnt + 1; [INFO] [stderr] | ^^^^^^^^^^^^^ help: replace it with: `cnt += 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] Finished dev [unoptimized + debuginfo] target(s) in 18.76s [INFO] running `"docker" "inspect" "9eab65eba882288d2e8d29d45cc054c97afb5a722a30508f4ac01dbecc2a77c0"` [INFO] running `"docker" "rm" "-f" "9eab65eba882288d2e8d29d45cc054c97afb5a722a30508f4ac01dbecc2a77c0"` [INFO] [stdout] 9eab65eba882288d2e8d29d45cc054c97afb5a722a30508f4ac01dbecc2a77c0