[INFO] crate hdd 0.10.0 is already in cache [INFO] extracting crate hdd 0.10.0 into work/ex/clippy-test-run/sources/stable/reg/hdd/0.10.0 [INFO] extracting crate hdd 0.10.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/hdd/0.10.0 [INFO] validating manifest of hdd-0.10.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 hdd-0.10.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 hdd-0.10.0 [INFO] finished frobbing hdd-0.10.0 [INFO] frobbed toml for hdd-0.10.0 written to work/ex/clippy-test-run/sources/stable/reg/hdd/0.10.0/Cargo.toml [INFO] started frobbing hdd-0.10.0 [INFO] finished frobbing hdd-0.10.0 [INFO] frobbed toml for hdd-0.10.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/hdd/0.10.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 hdd-0.10.0 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/hdd/0.10.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] 311de46d42121f20c88ffe5612a3a390da3dd51f4e0ec697f85c43cc9acd6ce9 [INFO] running `"docker" "start" "-a" "311de46d42121f20c88ffe5612a3a390da3dd51f4e0ec697f85c43cc9acd6ce9"` [INFO] [stderr] Compiling hdd v0.10.0 (/opt/crater/workdir) [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/ata/data/attr/raw.rs:77:9 [INFO] [stderr] | [INFO] [stderr] 77 | let d = h / 24; let h = h - d * 24; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/ata/data/attr/raw.rs:84:9 [INFO] [stderr] | [INFO] [stderr] 84 | let d = h / 24; let h = h - d * 24; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ata/data/attr/mod.rs:60:4 [INFO] [stderr] | [INFO] [stderr] 60 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/ata/data/id.rs:267:3 [INFO] [stderr] | [INFO] [stderr] 267 | sector_size_log: sector_size_log, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sector_size_log` [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/scsi/data/vpd/device_id.rs:132:4 [INFO] [stderr] | [INFO] [stderr] 132 | proto: proto, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `proto` [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/scsi/data/vpd/device_id.rs:133:4 [INFO] [stderr] | [INFO] [stderr] 133 | codeset: codeset, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `codeset` [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/scsi/data/vpd/device_id.rs:134:4 [INFO] [stderr] | [INFO] [stderr] 134 | assoc: assoc, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `assoc` [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/scsi/data/vpd/device_id.rs:135:4 [INFO] [stderr] | [INFO] [stderr] 135 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/scsi/data/sense/descriptor.rs:43:4 [INFO] [stderr] | [INFO] [stderr] 43 | code: code, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `code` [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/scsi/data/sense/descriptor.rs:54:3 [INFO] [stderr] | [INFO] [stderr] 54 | descriptors: descriptors, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `descriptors` [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/scsi/data/log_page.rs:101:5 [INFO] [stderr] | [INFO] [stderr] 101 | code: code, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `code` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/ata/data/attr/raw.rs:77:9 [INFO] [stderr] | [INFO] [stderr] 77 | let d = h / 24; let h = h - d * 24; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/ata/data/attr/raw.rs:84:9 [INFO] [stderr] | [INFO] [stderr] 84 | let d = h / 24; let h = h - d * 24; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ata/data/attr/mod.rs:60:4 [INFO] [stderr] | [INFO] [stderr] 60 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/ata/data/id.rs:267:3 [INFO] [stderr] | [INFO] [stderr] 267 | sector_size_log: sector_size_log, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sector_size_log` [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/scsi/data/vpd/device_id.rs:132:4 [INFO] [stderr] | [INFO] [stderr] 132 | proto: proto, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `proto` [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/scsi/data/vpd/device_id.rs:133:4 [INFO] [stderr] | [INFO] [stderr] 133 | codeset: codeset, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `codeset` [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/scsi/data/vpd/device_id.rs:134:4 [INFO] [stderr] | [INFO] [stderr] 134 | assoc: assoc, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `assoc` [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/scsi/data/vpd/device_id.rs:135:4 [INFO] [stderr] | [INFO] [stderr] 135 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/scsi/data/sense/descriptor.rs:43:4 [INFO] [stderr] | [INFO] [stderr] 43 | code: code, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `code` [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/scsi/data/sense/descriptor.rs:54:3 [INFO] [stderr] | [INFO] [stderr] 54 | descriptors: descriptors, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `descriptors` [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/scsi/data/log_page.rs:101:5 [INFO] [stderr] | [INFO] [stderr] 101 | code: code, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `code` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/ata/data/id.rs:98:9 [INFO] [stderr] | [INFO] [stderr] 98 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 99 | | if is_set(data[word_enabled], bit_enabled) { Ternary::Enabled } [INFO] [stderr] 100 | | else { Ternary::Disabled } [INFO] [stderr] 101 | | } [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] 98 | } else if is_set(data[word_enabled], bit_enabled) { Ternary::Enabled } [INFO] [stderr] 99 | else { Ternary::Disabled } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/scsi/data/vpd/device_id.rs:108:7 [INFO] [stderr] | [INFO] [stderr] 108 | ((id[7] as u32)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/scsi/data/vpd/device_id.rs:121:7 [INFO] [stderr] | [INFO] [stderr] 121 | ((id[7] as u32)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/scsi/mod.rs:304:3 [INFO] [stderr] | [INFO] [stderr] 304 | return Err(ATAError::NoRegisters); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(ATAError::NoRegisters)` [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: module has the same name as its containing module [INFO] [stderr] --> src/drivedb/mod.rs:42:1 [INFO] [stderr] | [INFO] [stderr] 42 | mod drivedb; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/drivedb/drivedb.rs:107:3 [INFO] [stderr] | [INFO] [stderr] 107 | return m; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `m` [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: lint name `match_same_arms` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/drivedb/drivedb.rs:122:45 [INFO] [stderr] | [INFO] [stderr] 122 | #[cfg_attr(feature = "cargo-clippy", allow(match_same_arms))] [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change it to: `clippy::match_same_arms` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(renamed_and_removed_lints)] on by default [INFO] [stderr] [INFO] [stderr] warning: lint name `needless_range_loop` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/utils.rs:32:44 [INFO] [stderr] | [INFO] [stderr] 32 | #[cfg_attr(feature = "cargo-clippy", allow(needless_range_loop))] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change it to: `clippy::needless_range_loop` [INFO] [stderr] [INFO] [stderr] warning: lint name `needless_range_loop` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/utils.rs:66:44 [INFO] [stderr] | [INFO] [stderr] 66 | #[cfg_attr(feature = "cargo-clippy", allow(needless_range_loop))] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change it to: `clippy::needless_range_loop` [INFO] [stderr] [INFO] [stderr] warning: lint name `match_same_arms` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/drivedb/drivedb.rs:122:45 [INFO] [stderr] | [INFO] [stderr] 122 | #[cfg_attr(feature = "cargo-clippy", allow(match_same_arms))] [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change it to: `clippy::match_same_arms` [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/ata/data/id.rs:98:9 [INFO] [stderr] | [INFO] [stderr] 98 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 99 | | if is_set(data[word_enabled], bit_enabled) { Ternary::Enabled } [INFO] [stderr] 100 | | else { Ternary::Disabled } [INFO] [stderr] 101 | | } [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] 98 | } else if is_set(data[word_enabled], bit_enabled) { Ternary::Enabled } [INFO] [stderr] 99 | else { Ternary::Disabled } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/scsi/data/vpd/device_id.rs:108:7 [INFO] [stderr] | [INFO] [stderr] 108 | ((id[7] as u32)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/scsi/data/vpd/device_id.rs:121:7 [INFO] [stderr] | [INFO] [stderr] 121 | ((id[7] as u32)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/scsi/mod.rs:304:3 [INFO] [stderr] | [INFO] [stderr] 304 | return Err(ATAError::NoRegisters); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(ATAError::NoRegisters)` [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: module has the same name as its containing module [INFO] [stderr] --> src/drivedb/mod.rs:42:1 [INFO] [stderr] | [INFO] [stderr] 42 | mod drivedb; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/drivedb/drivedb.rs:107:3 [INFO] [stderr] | [INFO] [stderr] 107 | return m; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `m` [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: lint name `match_same_arms` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/drivedb/drivedb.rs:122:45 [INFO] [stderr] | [INFO] [stderr] 122 | #[cfg_attr(feature = "cargo-clippy", allow(match_same_arms))] [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change it to: `clippy::match_same_arms` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(renamed_and_removed_lints)] on by default [INFO] [stderr] [INFO] [stderr] warning: lint name `needless_range_loop` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/utils.rs:32:44 [INFO] [stderr] | [INFO] [stderr] 32 | #[cfg_attr(feature = "cargo-clippy", allow(needless_range_loop))] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change it to: `clippy::needless_range_loop` [INFO] [stderr] [INFO] [stderr] warning: lint name `needless_range_loop` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/utils.rs:66:44 [INFO] [stderr] | [INFO] [stderr] 66 | #[cfg_attr(feature = "cargo-clippy", allow(needless_range_loop))] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change it to: `clippy::needless_range_loop` [INFO] [stderr] [INFO] [stderr] warning: lint name `match_same_arms` is deprecated and may not have an effect in the future. Also `cfg_attr(cargo-clippy)` won't be necessary anymore [INFO] [stderr] --> src/drivedb/drivedb.rs:122:45 [INFO] [stderr] | [INFO] [stderr] 122 | #[cfg_attr(feature = "cargo-clippy", allow(match_same_arms))] [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change it to: `clippy::match_same_arms` [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 34 [INFO] [stderr] --> src/device/linux.rs:28:1 [INFO] [stderr] | [INFO] [stderr] 28 | / pub fn list_devices() -> Result, io::Error> { [INFO] [stderr] 29 | | /* [INFO] [stderr] 30 | | Various software enumerates block devices in a variety of ways: [INFO] [stderr] 31 | | - smartd: probes for /dev/hd[a-t], /dev/sd[a-z], /dev/sd[a-c][a-z], /dev/nvme[0-99] [INFO] [stderr] ... | [INFO] [stderr] 162 | | ) [INFO] [stderr] 163 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `data`. [INFO] [stderr] --> src/ata/data/attr/raw.rs:8:11 [INFO] [stderr] | [INFO] [stderr] 8 | for i in 0..(bits/8) { [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] 8 | for in data.iter().take((bits/8)) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/ata/data/attr/raw.rs:10:10 [INFO] [stderr] | [INFO] [stderr] 10 | out += data[i] as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u64::from(data[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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ata/data/attr/raw.rs:32:46 [INFO] [stderr] | [INFO] [stderr] 32 | fn write_vec(f: &mut fmt::Formatter, vec: &Vec) -> fmt::Result [INFO] [stderr] | ^^^^^^^ help: change this to: `&[T]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ata/data/attr/raw.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | if let &Some(ref vec) = y { [INFO] [stderr] | _________________^ [INFO] [stderr] 50 | | write!(f, " (")?; [INFO] [stderr] 51 | | write_vec(f, &vec)?; [INFO] [stderr] 52 | | write!(f, ")")?; [INFO] [stderr] 53 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 49 | if let Some(ref vec) = *y { [INFO] [stderr] | ^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ata/data/attr/raw.rs:58:5 [INFO] [stderr] | [INFO] [stderr] 58 | if let &Some(ref vec) = y { [INFO] [stderr] | _________________^ [INFO] [stderr] 59 | | write!(f, " (")?; [INFO] [stderr] 60 | | write_vec(f, &vec)?; [INFO] [stderr] 61 | | write!(f, ")")?; [INFO] [stderr] 62 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 58 | if let Some(ref vec) = *y { [INFO] [stderr] | ^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/ata/data/attr/raw.rs:149:24 [INFO] [stderr] | [INFO] [stderr] 149 | let opt: Vec = raw48.iter().take(3).map(|&i|i).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `raw48.iter().take(3).cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/ata/data/attr/raw.rs:204:36 [INFO] [stderr] | [INFO] [stderr] 204 | (0, 0, 0, 0, 0, t) => Celsius(t as f32), [INFO] [stderr] | ^^^^^^^^ help: try: `f32::from(t)` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ata/data/attr/mod.rs:34:33 [INFO] [stderr] | [INFO] [stderr] 34 | pub fn parse_smart_values(data: &Vec, raw_thresh: &Vec, meta: &Option) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ata/data/attr/mod.rs:34:55 [INFO] [stderr] | [INFO] [stderr] 34 | pub fn parse_smart_values(data: &Vec, raw_thresh: &Vec, meta: &Option) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/ata/data/attr/mod.rs:52:15 [INFO] [stderr] | [INFO] [stderr] 52 | let flags = (data[offset + 1] as u16) + ((data[offset + 2] as u16) << 8); // XXX endianness? [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(data[offset + 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 u16 may become silently lossy if types change [INFO] [stderr] --> src/ata/data/attr/mod.rs:52:44 [INFO] [stderr] | [INFO] [stderr] 52 | let flags = (data[offset + 1] as u16) + ((data[offset + 2] as u16) << 8); // XXX endianness? [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(data[offset + 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: the operation is ineffective. Consider reducing it to `1` [INFO] [stderr] --> src/ata/data/attr/mod.rs:67:29 [INFO] [stderr] | [INFO] [stderr] 67 | pre_fail: flags & (1<<0) != 0, [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 are using an explicit closure for cloning elements [INFO] [stderr] --> src/ata/data/attr/mod.rs:85:12 [INFO] [stderr] | [INFO] [stderr] 85 | thresh: threshs.get(&data[offset]).map(|t| *t), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `threshs.get(&data[offset]).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ata/data/id.rs:5:21 [INFO] [stderr] | [INFO] [stderr] 5 | fn read_string(arr: &Vec, start: usize, fin: usize) -> String { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[u16]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `arr`. [INFO] [stderr] --> src/ata/data/id.rs:8:11 [INFO] [stderr] | [INFO] [stderr] 8 | for i in start..(fin+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [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] 8 | for in arr.iter().take((fin+1)).skip(start) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/ata/data/id.rs:8:11 [INFO] [stderr] | [INFO] [stderr] 8 | for i in start..(fin+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use: `start..=fin` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ata/data/id.rs:95:23 [INFO] [stderr] | [INFO] [stderr] 95 | fn make_ternary(data: &Vec, word_sup: usize, bit_sup: usize, word_enabled: usize, bit_enabled: usize) -> Ternary { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[u16]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ata/data/id.rs:104:23 [INFO] [stderr] | [INFO] [stderr] 104 | pub fn parse_id(data: &Vec) -> Id { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/ata/data/id.rs:227:17 [INFO] [stderr] | [INFO] [stderr] 227 | let sectors = ((data[61] as u64) << 16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u64::from(data[61])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/ata/data/id.rs:228:17 [INFO] [stderr] | [INFO] [stderr] 228 | + (data[60] as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u64::from(data[60])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/ata/data/id.rs:229:23 [INFO] [stderr] | [INFO] [stderr] 229 | let sectors_48bit = ((data[103] as u64) << 48) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u64::from(data[103])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/ata/data/id.rs:230:23 [INFO] [stderr] | [INFO] [stderr] 230 | + ((data[102] as u64) << 32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u64::from(data[102])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/ata/data/id.rs:231:23 [INFO] [stderr] | [INFO] [stderr] 231 | + ((data[101] as u64) << 16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u64::from(data[101])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/ata/data/id.rs:232:23 [INFO] [stderr] | [INFO] [stderr] 232 | + (data[100] as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u64::from(data[100])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/ata/data/id.rs:241:6 [INFO] [stderr] | [INFO] [stderr] 241 | ((data[118] as u32) << 16) + (data[117] as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u32::from(data[118])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/ata/data/id.rs:241:34 [INFO] [stderr] | [INFO] [stderr] 241 | ((data[118] as u32) << 16) + (data[117] as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u32::from(data[117])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/ata/data/id.rs:257:13 [INFO] [stderr] | [INFO] [stderr] 257 | capacity: (sector_size_log as u64) * if sectors_48bit > 0 { sectors_48bit } else { sectors }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(sector_size_log)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/ata/data/id.rs:264:25 [INFO] [stderr] | [INFO] [stderr] 264 | sector_size_log << (data[106] as u32 & 0xf) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u32::from(data[106])` [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ata/data/health.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | / pub fn parse_smart_status<'a>(reg: &'a ata::RegistersRead) -> Option { [INFO] [stderr] 5 | | match (reg.cyl_low, reg.cyl_high) { [INFO] [stderr] 6 | | (0x4f, 0xc2) => Some(true), [INFO] [stderr] 7 | | (0xf4, 0x2c) => Some(false), [INFO] [stderr] 8 | | _ => None, // WTF [INFO] [stderr] 9 | | } [INFO] [stderr] 10 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/scsi/data/inquiry.rs:32:28 [INFO] [stderr] | [INFO] [stderr] 32 | pub fn parse_inquiry(data: &Vec) -> Inquiry { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/scsi/data/vpd/device_id.rs:105:8 [INFO] [stderr] | [INFO] [stderr] 105 | ((id[4] as u32) << 24) + [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(id[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 u32 may become silently lossy if types change [INFO] [stderr] --> src/scsi/data/vpd/device_id.rs:106:8 [INFO] [stderr] | [INFO] [stderr] 106 | ((id[5] as u32) << 16) + [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(id[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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/scsi/data/vpd/device_id.rs:107:8 [INFO] [stderr] | [INFO] [stderr] 107 | ((id[6] as u32) << 8) + [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(id[6])` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/scsi/data/vpd/device_id.rs:108:7 [INFO] [stderr] | [INFO] [stderr] 108 | ((id[7] as u32)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u32::from(id[7])` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/scsi/data/vpd/device_id.rs:118:8 [INFO] [stderr] | [INFO] [stderr] 118 | ((id[4] as u32) << 24) + [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(id[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 u32 may become silently lossy if types change [INFO] [stderr] --> src/scsi/data/vpd/device_id.rs:119:8 [INFO] [stderr] | [INFO] [stderr] 119 | ((id[5] as u32) << 16) + [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(id[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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/scsi/data/vpd/device_id.rs:120:8 [INFO] [stderr] | [INFO] [stderr] 120 | ((id[6] as u32) << 8) + [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(id[6])` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/scsi/data/vpd/device_id.rs:121:7 [INFO] [stderr] | [INFO] [stderr] 121 | ((id[7] as u32)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u32::from(id[7])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 34 [INFO] [stderr] --> src/device/linux.rs:28:1 [INFO] [stderr] | [INFO] [stderr] 28 | / pub fn list_devices() -> Result, io::Error> { [INFO] [stderr] 29 | | /* [INFO] [stderr] 30 | | Various software enumerates block devices in a variety of ways: [INFO] [stderr] 31 | | - smartd: probes for /dev/hd[a-t], /dev/sd[a-z], /dev/sd[a-c][a-z], /dev/nvme[0-99] [INFO] [stderr] ... | [INFO] [stderr] 162 | | ) [INFO] [stderr] 163 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/scsi/data/sense/mod.rs:27:20 [INFO] [stderr] | [INFO] [stderr] 27 | pub fn parse(data: &Vec) -> Option<(bool, Sense)> { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `data`. [INFO] [stderr] --> src/ata/data/attr/raw.rs:8:11 [INFO] [stderr] | [INFO] [stderr] 8 | for i in 0..(bits/8) { [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] 8 | for in data.iter().take((bits/8)) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u64 may become silently lossy if types change [INFO] [stderr] --> src/ata/data/attr/raw.rs:10:10 [INFO] [stderr] | [INFO] [stderr] 10 | out += data[i] as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u64::from(data[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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ata/data/attr/raw.rs:32:46 [INFO] [stderr] | [INFO] [stderr] 32 | fn write_vec(f: &mut fmt::Formatter, vec: &Vec) -> fmt::Result [INFO] [stderr] | ^^^^^^^ help: change this to: `&[T]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ata/data/attr/raw.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | if let &Some(ref vec) = y { [INFO] [stderr] | _________________^ [INFO] [stderr] 50 | | write!(f, " (")?; [INFO] [stderr] 51 | | write_vec(f, &vec)?; [INFO] [stderr] 52 | | write!(f, ")")?; [INFO] [stderr] 53 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 49 | if let Some(ref vec) = *y { [INFO] [stderr] | ^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/ata/data/attr/raw.rs:58:5 [INFO] [stderr] | [INFO] [stderr] 58 | if let &Some(ref vec) = y { [INFO] [stderr] | _________________^ [INFO] [stderr] 59 | | write!(f, " (")?; [INFO] [stderr] 60 | | write_vec(f, &vec)?; [INFO] [stderr] 61 | | write!(f, ")")?; [INFO] [stderr] 62 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 58 | if let Some(ref vec) = *y { [INFO] [stderr] | ^^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/scsi/pages.rs:215:7 [INFO] [stderr] | [INFO] [stderr] 215 | if param.value.len() == 0 { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `param.value.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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/ata/data/attr/raw.rs:149:24 [INFO] [stderr] | [INFO] [stderr] 149 | let opt: Vec = raw48.iter().take(3).map(|&i|i).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `raw48.iter().take(3).cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/ata/data/attr/raw.rs:204:36 [INFO] [stderr] | [INFO] [stderr] 204 | (0, 0, 0, 0, 0, t) => Celsius(t as f32), [INFO] [stderr] | ^^^^^^^^ help: try: `f32::from(t)` [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/scsi/pages.rs:271:7 [INFO] [stderr] | [INFO] [stderr] 271 | if param.value.len() == 0 { continue; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `param.value.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ata/data/attr/mod.rs:34:33 [INFO] [stderr] | [INFO] [stderr] 34 | pub fn parse_smart_values(data: &Vec, raw_thresh: &Vec, meta: &Option) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ata/data/attr/mod.rs:34:55 [INFO] [stderr] | [INFO] [stderr] 34 | pub fn parse_smart_values(data: &Vec, raw_thresh: &Vec, meta: &Option) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/ata/data/attr/mod.rs:52:15 [INFO] [stderr] | [INFO] [stderr] 52 | let flags = (data[offset + 1] as u16) + ((data[offset + 2] as u16) << 8); // XXX endianness? [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(data[offset + 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 u16 may become silently lossy if types change [INFO] [stderr] --> src/ata/data/attr/mod.rs:52:44 [INFO] [stderr] | [INFO] [stderr] 52 | let flags = (data[offset + 1] as u16) + ((data[offset + 2] as u16) << 8); // XXX endianness? [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(data[offset + 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: the operation is ineffective. Consider reducing it to `1` [INFO] [stderr] --> src/ata/data/attr/mod.rs:67:29 [INFO] [stderr] | [INFO] [stderr] 67 | pre_fail: flags & (1<<0) != 0, [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 are using an explicit closure for cloning elements [INFO] [stderr] --> src/ata/data/attr/mod.rs:85:12 [INFO] [stderr] | [INFO] [stderr] 85 | thresh: threshs.get(&data[offset]).map(|t| *t), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `threshs.get(&data[offset]).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ata/data/id.rs:5:21 [INFO] [stderr] | [INFO] [stderr] 5 | fn read_string(arr: &Vec, start: usize, fin: usize) -> String { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[u16]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `arr`. [INFO] [stderr] --> src/ata/data/id.rs:8:11 [INFO] [stderr] | [INFO] [stderr] 8 | for i in start..(fin+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [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] 8 | for in arr.iter().take((fin+1)).skip(start) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/ata/data/id.rs:8:11 [INFO] [stderr] | [INFO] [stderr] 8 | for i in start..(fin+1) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use: `start..=fin` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ata/data/id.rs:95:23 [INFO] [stderr] | [INFO] [stderr] 95 | fn make_ternary(data: &Vec, word_sup: usize, bit_sup: usize, word_enabled: usize, bit_enabled: usize) -> Ternary { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[u16]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ata/data/id.rs:104:23 [INFO] [stderr] | [INFO] [stderr] 104 | pub fn parse_id(data: &Vec) -> Id { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/ata/data/id.rs:227:17 [INFO] [stderr] | [INFO] [stderr] 227 | let sectors = ((data[61] as u64) << 16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u64::from(data[61])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/ata/data/id.rs:228:17 [INFO] [stderr] | [INFO] [stderr] 228 | + (data[60] as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u64::from(data[60])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/ata/data/id.rs:229:23 [INFO] [stderr] | [INFO] [stderr] 229 | let sectors_48bit = ((data[103] as u64) << 48) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u64::from(data[103])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/ata/data/id.rs:230:23 [INFO] [stderr] | [INFO] [stderr] 230 | + ((data[102] as u64) << 32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u64::from(data[102])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/ata/data/id.rs:231:23 [INFO] [stderr] | [INFO] [stderr] 231 | + ((data[101] as u64) << 16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u64::from(data[101])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u64 may become silently lossy if types change [INFO] [stderr] --> src/ata/data/id.rs:232:23 [INFO] [stderr] | [INFO] [stderr] 232 | + (data[100] as u64); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u64::from(data[100])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/ata/data/id.rs:241:6 [INFO] [stderr] | [INFO] [stderr] 241 | ((data[118] as u32) << 16) + (data[117] as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u32::from(data[118])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/ata/data/id.rs:241:34 [INFO] [stderr] | [INFO] [stderr] 241 | ((data[118] as u32) << 16) + (data[117] as u32) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u32::from(data[117])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/ata/data/id.rs:257:13 [INFO] [stderr] | [INFO] [stderr] 257 | capacity: (sector_size_log as u64) * if sectors_48bit > 0 { sectors_48bit } else { sectors }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(sector_size_log)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/ata/data/id.rs:264:25 [INFO] [stderr] | [INFO] [stderr] 264 | sector_size_log << (data[106] as u32 & 0xf) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u32::from(data[106])` [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ata/data/health.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | / pub fn parse_smart_status<'a>(reg: &'a ata::RegistersRead) -> Option { [INFO] [stderr] 5 | | match (reg.cyl_low, reg.cyl_high) { [INFO] [stderr] 6 | | (0x4f, 0xc2) => Some(true), [INFO] [stderr] 7 | | (0xf4, 0x2c) => Some(false), [INFO] [stderr] 8 | | _ => None, // WTF [INFO] [stderr] 9 | | } [INFO] [stderr] 10 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: constant `alloc` should have an upper case name such as `ALLOC` [INFO] [stderr] --> src/scsi/mod.rs:110:3 [INFO] [stderr] | [INFO] [stderr] 110 | const alloc: usize = 4096; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_upper_case_globals)] on by default [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/scsi/mod.rs:169:2 [INFO] [stderr] | [INFO] [stderr] 169 | fn log_sense(&self, changed: bool, save_params: bool, default: bool, threshold: bool, page: u8, subpage: u8, param_ptr: u16) -> Result<(Vec, Vec), Error> { [INFO] [stderr] | _____^ [INFO] [stderr] 170 | | info!("issuing LOG SENSE: page={page:?} subpage={subpage:?} param_ptr={param_ptr:?} changed={changed:?} save_params={save_params:?} default={default:?} threshold={threshold:?}", [INFO] [stderr] 171 | | changed = changed, [INFO] [stderr] 172 | | save_params = save_params, [INFO] [stderr] ... | [INFO] [stderr] 205 | | Ok(self.do_cmd(&cmd, Direction::From, 32, alloc)?) [INFO] [stderr] 206 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/scsi/mod.rs:169:2 [INFO] [stderr] | [INFO] [stderr] 169 | fn log_sense(&self, changed: bool, save_params: bool, default: bool, threshold: bool, page: u8, subpage: u8, param_ptr: u16) -> Result<(Vec, Vec), Error> { [INFO] [stderr] | _____^ [INFO] [stderr] 170 | | info!("issuing LOG SENSE: page={page:?} subpage={subpage:?} param_ptr={param_ptr:?} changed={changed:?} save_params={save_params:?} default={default:?} threshold={threshold:?}", [INFO] [stderr] 171 | | changed = changed, [INFO] [stderr] 172 | | save_params = save_params, [INFO] [stderr] ... | [INFO] [stderr] 205 | | Ok(self.do_cmd(&cmd, Direction::From, 32, alloc)?) [INFO] [stderr] 206 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: constant `alloc` should have an upper case name such as `ALLOC` [INFO] [stderr] --> src/scsi/mod.rs:181:3 [INFO] [stderr] | [INFO] [stderr] 181 | const alloc: usize = 4096; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/scsi/data/inquiry.rs:32:28 [INFO] [stderr] | [INFO] [stderr] 32 | pub fn parse_inquiry(data: &Vec) -> Inquiry { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/scsi/data/vpd/device_id.rs:105:8 [INFO] [stderr] | [INFO] [stderr] 105 | ((id[4] as u32) << 24) + [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(id[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 u32 may become silently lossy if types change [INFO] [stderr] --> src/scsi/data/vpd/device_id.rs:106:8 [INFO] [stderr] | [INFO] [stderr] 106 | ((id[5] as u32) << 16) + [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(id[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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/scsi/data/vpd/device_id.rs:107:8 [INFO] [stderr] | [INFO] [stderr] 107 | ((id[6] as u32) << 8) + [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(id[6])` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/scsi/data/vpd/device_id.rs:108:7 [INFO] [stderr] | [INFO] [stderr] 108 | ((id[7] as u32)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u32::from(id[7])` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/scsi/data/vpd/device_id.rs:118:8 [INFO] [stderr] | [INFO] [stderr] 118 | ((id[4] as u32) << 24) + [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(id[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 u32 may become silently lossy if types change [INFO] [stderr] --> src/scsi/data/vpd/device_id.rs:119:8 [INFO] [stderr] | [INFO] [stderr] 119 | ((id[5] as u32) << 16) + [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(id[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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/scsi/data/vpd/device_id.rs:120:8 [INFO] [stderr] | [INFO] [stderr] 120 | ((id[6] as u32) << 8) + [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(id[6])` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/scsi/data/vpd/device_id.rs:121:7 [INFO] [stderr] | [INFO] [stderr] 121 | ((id[7] as u32)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u32::from(id[7])` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/scsi/data/sense/mod.rs:27:20 [INFO] [stderr] | [INFO] [stderr] 27 | pub fn parse(data: &Vec) -> Option<(bool, Sense)> { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/drivedb/presets.rs:6:17 [INFO] [stderr] | [INFO] [stderr] 6 | let mut args = line.split_whitespace().into_iter(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `line.split_whitespace()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [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/drivedb/presets.rs:15:17 [INFO] [stderr] | [INFO] [stderr] 15 | "-v" => { match vendor_attribute::parse(value) { [INFO] [stderr] | ___________________________________^ [INFO] [stderr] 16 | | Ok(attr) => output.push(attr), [INFO] [stderr] 17 | | Err(_) => (), // TODO [INFO] [stderr] 18 | | } }, [INFO] [stderr] | |_________________________^ help: try this: `if let Ok(attr) = vendor_attribute::parse(value) { output.push(attr) }` [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] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/drivedb/drivedb.rs:80:59 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn render_meta(&self, id: &id::Id, extra_attributes: &Vec) -> DriveMeta { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Attribute]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/scsi/pages.rs:215:7 [INFO] [stderr] | [INFO] [stderr] 215 | if param.value.len() == 0 { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `param.value.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: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/drivedb/drivedb.rs:105:20 [INFO] [stderr] | [INFO] [stderr] 105 | m.presets.extend(extra_attributes.iter().map(|a| a.clone())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `extra_attributes.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/scsi/pages.rs:271:7 [INFO] [stderr] | [INFO] [stderr] 271 | if param.value.len() == 0 { continue; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `param.value.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `drivedb::loader::Loader` [INFO] [stderr] --> src/drivedb/loader.rs:49:2 [INFO] [stderr] | [INFO] [stderr] 49 | pub fn new() -> Self { [INFO] [stderr] | _____^ [INFO] [stderr] 50 | | Loader { [INFO] [stderr] 51 | | entries: vec![], [INFO] [stderr] 52 | | additional: vec![], [INFO] [stderr] 53 | | } [INFO] [stderr] 54 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 44 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/drivedb/vendor_attribute.rs:49:1 [INFO] [stderr] | [INFO] [stderr] 49 | / named!(parse_standard , do_parse!( [INFO] [stderr] 50 | | id: alt!( [INFO] [stderr] 51 | | // XXX map_res!()? [INFO] [stderr] 52 | | map!(digit, |x: &[u8]| str::from_utf8(x).unwrap().parse::().ok()) [INFO] [stderr] ... | [INFO] [stderr] 106 | | }) [INFO] [stderr] 107 | | )); [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/drivedb/vendor_attribute.rs:49:1 [INFO] [stderr] | [INFO] [stderr] 49 | / named!(parse_standard , do_parse!( [INFO] [stderr] 50 | | id: alt!( [INFO] [stderr] 51 | | // XXX map_res!()? [INFO] [stderr] 52 | | map!(digit, |x: &[u8]| str::from_utf8(x).unwrap().parse::().ok()) [INFO] [stderr] ... | [INFO] [stderr] 106 | | }) [INFO] [stderr] 107 | | )); [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/drivedb/vendor_attribute.rs:49:1 [INFO] [stderr] | [INFO] [stderr] 49 | / named!(parse_standard , do_parse!( [INFO] [stderr] 50 | | id: alt!( [INFO] [stderr] 51 | | // XXX map_res!()? [INFO] [stderr] 52 | | map!(digit, |x: &[u8]| str::from_utf8(x).unwrap().parse::().ok()) [INFO] [stderr] ... | [INFO] [stderr] 106 | | }) [INFO] [stderr] 107 | | )); [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: constant `alloc` should have an upper case name such as `ALLOC` [INFO] [stderr] --> src/scsi/mod.rs:110:3 [INFO] [stderr] | [INFO] [stderr] 110 | const alloc: usize = 4096; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_upper_case_globals)] on by default [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/scsi/mod.rs:169:2 [INFO] [stderr] | [INFO] [stderr] 169 | fn log_sense(&self, changed: bool, save_params: bool, default: bool, threshold: bool, page: u8, subpage: u8, param_ptr: u16) -> Result<(Vec, Vec), Error> { [INFO] [stderr] | _____^ [INFO] [stderr] 170 | | info!("issuing LOG SENSE: page={page:?} subpage={subpage:?} param_ptr={param_ptr:?} changed={changed:?} save_params={save_params:?} default={default:?} threshold={threshold:?}", [INFO] [stderr] 171 | | changed = changed, [INFO] [stderr] 172 | | save_params = save_params, [INFO] [stderr] ... | [INFO] [stderr] 205 | | Ok(self.do_cmd(&cmd, Direction::From, 32, alloc)?) [INFO] [stderr] 206 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/scsi/mod.rs:169:2 [INFO] [stderr] | [INFO] [stderr] 169 | fn log_sense(&self, changed: bool, save_params: bool, default: bool, threshold: bool, page: u8, subpage: u8, param_ptr: u16) -> Result<(Vec, Vec), Error> { [INFO] [stderr] | _____^ [INFO] [stderr] 170 | | info!("issuing LOG SENSE: page={page:?} subpage={subpage:?} param_ptr={param_ptr:?} changed={changed:?} save_params={save_params:?} default={default:?} threshold={threshold:?}", [INFO] [stderr] 171 | | changed = changed, [INFO] [stderr] 172 | | save_params = save_params, [INFO] [stderr] ... | [INFO] [stderr] 205 | | Ok(self.do_cmd(&cmd, Direction::From, 32, alloc)?) [INFO] [stderr] 206 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: constant `alloc` should have an upper case name such as `ALLOC` [INFO] [stderr] --> src/scsi/mod.rs:181:3 [INFO] [stderr] | [INFO] [stderr] 181 | const alloc: usize = 4096; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/utils.rs:1:32 [INFO] [stderr] | [INFO] [stderr] 1 | pub fn bytes_to_be_words(data: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/utils.rs:8:6 [INFO] [stderr] | [INFO] [stderr] 8 | ((data[2 * i + 1] as u16) << 8) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(data[2 * i + 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 u16 may become silently lossy if types change [INFO] [stderr] --> src/utils.rs:9:7 [INFO] [stderr] | [INFO] [stderr] 9 | + (data[2 * i] as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(data[2 * i])` [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 u16 may become silently lossy if types change [INFO] [stderr] --> src/utils.rs:13:6 [INFO] [stderr] | [INFO] [stderr] 13 | ((data[2 * i] as u16) << 8) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(data[2 * i])` [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 u16 may become silently lossy if types change [INFO] [stderr] --> src/utils.rs:14:7 [INFO] [stderr] | [INFO] [stderr] 14 | + (data[2 * i + 1] as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(data[2 * i + 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 u32 may become silently lossy if types change [INFO] [stderr] --> src/utils.rs:25:44 [INFO] [stderr] | [INFO] [stderr] 25 | unsafe { ::std::char::from_u32_unchecked(x as u32) } [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(x)` [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: identical conversion [INFO] [stderr] --> src/drivedb/presets.rs:6:17 [INFO] [stderr] | [INFO] [stderr] 6 | let mut args = line.split_whitespace().into_iter(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `line.split_whitespace()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [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/drivedb/presets.rs:15:17 [INFO] [stderr] | [INFO] [stderr] 15 | "-v" => { match vendor_attribute::parse(value) { [INFO] [stderr] | ___________________________________^ [INFO] [stderr] 16 | | Ok(attr) => output.push(attr), [INFO] [stderr] 17 | | Err(_) => (), // TODO [INFO] [stderr] 18 | | } }, [INFO] [stderr] | |_________________________^ help: try this: `if let Ok(attr) = vendor_attribute::parse(value) { output.push(attr) }` [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] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/drivedb/drivedb.rs:80:59 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn render_meta(&self, id: &id::Id, extra_attributes: &Vec) -> DriveMeta { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[Attribute]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/drivedb/drivedb.rs:105:20 [INFO] [stderr] | [INFO] [stderr] 105 | m.presets.extend(extra_attributes.iter().map(|a| a.clone())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `extra_attributes.iter().cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `drivedb::loader::Loader` [INFO] [stderr] --> src/drivedb/loader.rs:49:2 [INFO] [stderr] | [INFO] [stderr] 49 | pub fn new() -> Self { [INFO] [stderr] | _____^ [INFO] [stderr] 50 | | Loader { [INFO] [stderr] 51 | | entries: vec![], [INFO] [stderr] 52 | | additional: vec![], [INFO] [stderr] 53 | | } [INFO] [stderr] 54 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 44 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/drivedb/vendor_attribute.rs:49:1 [INFO] [stderr] | [INFO] [stderr] 49 | / named!(parse_standard , do_parse!( [INFO] [stderr] 50 | | id: alt!( [INFO] [stderr] 51 | | // XXX map_res!()? [INFO] [stderr] 52 | | map!(digit, |x: &[u8]| str::from_utf8(x).unwrap().parse::().ok()) [INFO] [stderr] ... | [INFO] [stderr] 106 | | }) [INFO] [stderr] 107 | | )); [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/drivedb/vendor_attribute.rs:49:1 [INFO] [stderr] | [INFO] [stderr] 49 | / named!(parse_standard , do_parse!( [INFO] [stderr] 50 | | id: alt!( [INFO] [stderr] 51 | | // XXX map_res!()? [INFO] [stderr] 52 | | map!(digit, |x: &[u8]| str::from_utf8(x).unwrap().parse::().ok()) [INFO] [stderr] ... | [INFO] [stderr] 106 | | }) [INFO] [stderr] 107 | | )); [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/drivedb/vendor_attribute.rs:49:1 [INFO] [stderr] | [INFO] [stderr] 49 | / named!(parse_standard , do_parse!( [INFO] [stderr] 50 | | id: alt!( [INFO] [stderr] 51 | | // XXX map_res!()? [INFO] [stderr] 52 | | map!(digit, |x: &[u8]| str::from_utf8(x).unwrap().parse::().ok()) [INFO] [stderr] ... | [INFO] [stderr] 106 | | }) [INFO] [stderr] 107 | | )); [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/utils.rs:1:32 [INFO] [stderr] | [INFO] [stderr] 1 | pub fn bytes_to_be_words(data: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/utils.rs:8:6 [INFO] [stderr] | [INFO] [stderr] 8 | ((data[2 * i + 1] as u16) << 8) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(data[2 * i + 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 u16 may become silently lossy if types change [INFO] [stderr] --> src/utils.rs:9:7 [INFO] [stderr] | [INFO] [stderr] 9 | + (data[2 * i] as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(data[2 * i])` [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 u16 may become silently lossy if types change [INFO] [stderr] --> src/utils.rs:13:6 [INFO] [stderr] | [INFO] [stderr] 13 | ((data[2 * i] as u16) << 8) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(data[2 * i])` [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 u16 may become silently lossy if types change [INFO] [stderr] --> src/utils.rs:14:7 [INFO] [stderr] | [INFO] [stderr] 14 | + (data[2 * i + 1] as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(data[2 * i + 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 u32 may become silently lossy if types change [INFO] [stderr] --> src/utils.rs:25:44 [INFO] [stderr] | [INFO] [stderr] 25 | unsafe { ::std::char::from_u32_unchecked(x as u32) } [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(x)` [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] Finished dev [unoptimized + debuginfo] target(s) in 4.59s [INFO] running `"docker" "inspect" "311de46d42121f20c88ffe5612a3a390da3dd51f4e0ec697f85c43cc9acd6ce9"` [INFO] running `"docker" "rm" "-f" "311de46d42121f20c88ffe5612a3a390da3dd51f4e0ec697f85c43cc9acd6ce9"` [INFO] [stdout] 311de46d42121f20c88ffe5612a3a390da3dd51f4e0ec697f85c43cc9acd6ce9