[INFO] crate bobbin-cli 0.8.3 is already in cache [INFO] extracting crate bobbin-cli 0.8.3 into work/ex/clippy-test-run/sources/stable/reg/bobbin-cli/0.8.3 [INFO] extracting crate bobbin-cli 0.8.3 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/bobbin-cli/0.8.3 [INFO] validating manifest of bobbin-cli-0.8.3 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of bobbin-cli-0.8.3 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing bobbin-cli-0.8.3 [INFO] finished frobbing bobbin-cli-0.8.3 [INFO] frobbed toml for bobbin-cli-0.8.3 written to work/ex/clippy-test-run/sources/stable/reg/bobbin-cli/0.8.3/Cargo.toml [INFO] started frobbing bobbin-cli-0.8.3 [INFO] finished frobbing bobbin-cli-0.8.3 [INFO] frobbed toml for bobbin-cli-0.8.3 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/bobbin-cli/0.8.3/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting bobbin-cli-0.8.3 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/bobbin-cli/0.8.3:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 5fab4c18705d585a52132795cd2a5483c30ad1fdc670ed968966202f344152f0 [INFO] running `"docker" "start" "-a" "5fab4c18705d585a52132795cd2a5483c30ad1fdc670ed968966202f344152f0"` [INFO] [stderr] Checking plist v0.1.3 [INFO] [stderr] Checking bobbin-cli v0.8.3 (/opt/crater/workdir) [INFO] [stderr] warning: using `writeln!(out, "")` [INFO] [stderr] --> src/cmd.rs:80:9 [INFO] [stderr] | [INFO] [stderr] 80 | writeln!(out, "")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `writeln!(out)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::writeln_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#writeln_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `writeln!(out, "")` [INFO] [stderr] --> src/cmd.rs:148:9 [INFO] [stderr] | [INFO] [stderr] 148 | writeln!(out, "")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `writeln!(out)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#writeln_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/device.rs:661:9 [INFO] [stderr] | [INFO] [stderr] 661 | device: device, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `device` [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/device.rs:667:54 [INFO] [stderr] | [INFO] [stderr] 667 | (0x0d28, 0x0204) => Box::new(DapLinkDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:668:55 [INFO] [stderr] | [INFO] [stderr] 668 | (0x03eb, 0x2157) => Box::new(CmsisDapDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:669:55 [INFO] [stderr] | [INFO] [stderr] 669 | (0x0483, 0x3748) => Box::new(StLinkV2Device { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:670:56 [INFO] [stderr] | [INFO] [stderr] 670 | (0x0483, 0x374b) => Box::new(StLinkV21Device { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:671:52 [INFO] [stderr] | [INFO] [stderr] 671 | (0x1366, 0x0101) => Box::new(JLinkDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:672:52 [INFO] [stderr] | [INFO] [stderr] 672 | (0x1366, 0x0105) => Box::new(JLinkDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:673:53 [INFO] [stderr] | [INFO] [stderr] 673 | (0x1cbe, 0x00fd) => Box::new(TiIcdiDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:674:53 [INFO] [stderr] | [INFO] [stderr] 674 | (0x0451, 0xbef3) => Box::new(Xds110Device { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:675:54 [INFO] [stderr] | [INFO] [stderr] 675 | (0x239a, 0x801b) => Box::new(FeatherDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:676:54 [INFO] [stderr] | [INFO] [stderr] 676 | (0x239a, 0x800b) => Box::new(FeatherDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:677:54 [INFO] [stderr] | [INFO] [stderr] 677 | (0x239a, 0x001b) => Box::new(FeatherDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:678:54 [INFO] [stderr] | [INFO] [stderr] 678 | (0x239a, 0x000b) => Box::new(FeatherDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:679:53 [INFO] [stderr] | [INFO] [stderr] 679 | (0x16c0, 0x0486) => Box::new(TeensyDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:680:53 [INFO] [stderr] | [INFO] [stderr] 680 | (0x16c0, 0x0478) => Box::new(TeensyDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:681:52 [INFO] [stderr] | [INFO] [stderr] 681 | (0x0483, 0xdf11) => Box::new(Stm32Device { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:682:57 [INFO] [stderr] | [INFO] [stderr] 682 | (0x1d50, 0x6018) => Box::new(BlackMagicDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:683:53 [INFO] [stderr] | [INFO] [stderr] 683 | (0x15ba, 0x002a) => Box::new(OlimexDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:685:47 [INFO] [stderr] | [INFO] [stderr] 685 | (0x1366, _) => Box::new(JLinkDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:686:39 [INFO] [stderr] | [INFO] [stderr] 686 | _ => Box::new(UnknownDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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: using `writeln!(out, "")` [INFO] [stderr] --> src/cmd.rs:80:9 [INFO] [stderr] | [INFO] [stderr] 80 | writeln!(out, "")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `writeln!(out)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::writeln_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#writeln_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `writeln!(out, "")` [INFO] [stderr] --> src/cmd.rs:148:9 [INFO] [stderr] | [INFO] [stderr] 148 | writeln!(out, "")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `writeln!(out)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#writeln_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/console.rs:17:18 [INFO] [stderr] | [INFO] [stderr] 17 | Ok(Console { port: port }) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `port` [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/device.rs:661:9 [INFO] [stderr] | [INFO] [stderr] 661 | device: device, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `device` [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/device.rs:667:54 [INFO] [stderr] | [INFO] [stderr] 667 | (0x0d28, 0x0204) => Box::new(DapLinkDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:668:55 [INFO] [stderr] | [INFO] [stderr] 668 | (0x03eb, 0x2157) => Box::new(CmsisDapDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:669:55 [INFO] [stderr] | [INFO] [stderr] 669 | (0x0483, 0x3748) => Box::new(StLinkV2Device { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:670:56 [INFO] [stderr] | [INFO] [stderr] 670 | (0x0483, 0x374b) => Box::new(StLinkV21Device { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:671:52 [INFO] [stderr] | [INFO] [stderr] 671 | (0x1366, 0x0101) => Box::new(JLinkDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:672:52 [INFO] [stderr] | [INFO] [stderr] 672 | (0x1366, 0x0105) => Box::new(JLinkDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:673:53 [INFO] [stderr] | [INFO] [stderr] 673 | (0x1cbe, 0x00fd) => Box::new(TiIcdiDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:674:53 [INFO] [stderr] | [INFO] [stderr] 674 | (0x0451, 0xbef3) => Box::new(Xds110Device { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:675:54 [INFO] [stderr] | [INFO] [stderr] 675 | (0x239a, 0x801b) => Box::new(FeatherDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:676:54 [INFO] [stderr] | [INFO] [stderr] 676 | (0x239a, 0x800b) => Box::new(FeatherDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:677:54 [INFO] [stderr] | [INFO] [stderr] 677 | (0x239a, 0x001b) => Box::new(FeatherDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:678:54 [INFO] [stderr] | [INFO] [stderr] 678 | (0x239a, 0x000b) => Box::new(FeatherDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:679:53 [INFO] [stderr] | [INFO] [stderr] 679 | (0x16c0, 0x0486) => Box::new(TeensyDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:680:53 [INFO] [stderr] | [INFO] [stderr] 680 | (0x16c0, 0x0478) => Box::new(TeensyDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:681:52 [INFO] [stderr] | [INFO] [stderr] 681 | (0x0483, 0xdf11) => Box::new(Stm32Device { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:682:57 [INFO] [stderr] | [INFO] [stderr] 682 | (0x1d50, 0x6018) => Box::new(BlackMagicDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:683:53 [INFO] [stderr] | [INFO] [stderr] 683 | (0x15ba, 0x002a) => Box::new(OlimexDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:685:47 [INFO] [stderr] | [INFO] [stderr] 685 | (0x1366, _) => Box::new(JLinkDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/device.rs:686:39 [INFO] [stderr] | [INFO] [stderr] 686 | _ => Box::new(UnknownDevice { usb: usb }), [INFO] [stderr] | ^^^^^^^^ help: replace it with: `usb` [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/console.rs:17:18 [INFO] [stderr] | [INFO] [stderr] 17 | Ok(Console { port: port }) [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `port` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/app.rs:3:15 [INFO] [stderr] | [INFO] [stderr] 3 | const ABOUT: &'static str = " [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/cmd.rs:305:20 [INFO] [stderr] | [INFO] [stderr] 305 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 306 | | if let Some(v) = cfg.itm_target_clock() { [INFO] [stderr] 307 | | v [INFO] [stderr] 308 | | } else { [INFO] [stderr] 309 | | bail!("itm-target-clock is required for ITM trace.") [INFO] [stderr] 310 | | } [INFO] [stderr] 311 | | }; [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] 305 | } else if let Some(v) = cfg.itm_target_clock() { [INFO] [stderr] 306 | v [INFO] [stderr] 307 | } else { [INFO] [stderr] 308 | bail!("itm-target-clock is required for ITM trace.") [INFO] [stderr] 309 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/cmd.rs:734:16 [INFO] [stderr] | [INFO] [stderr] 734 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 735 | | if let Some(v) = cfg.itm_target_clock() { [INFO] [stderr] 736 | | v [INFO] [stderr] 737 | | } else { [INFO] [stderr] 738 | | bail!("itm-target-clock is required for ITM trace.") [INFO] [stderr] 739 | | } [INFO] [stderr] 740 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 734 | } else if let Some(v) = cfg.itm_target_clock() { [INFO] [stderr] 735 | v [INFO] [stderr] 736 | } else { [INFO] [stderr] 737 | bail!("itm-target-clock is required for ITM trace.") [INFO] [stderr] 738 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/device.rs:702:17 [INFO] [stderr] | [INFO] [stderr] 702 | / if !filter.all { [INFO] [stderr] 703 | | if d.is_unknown() { [INFO] [stderr] 704 | | return false; [INFO] [stderr] 705 | | } [INFO] [stderr] 706 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [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] 702 | if !filter.all && d.is_unknown() { [INFO] [stderr] 703 | return false; [INFO] [stderr] 704 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::env::home_dir': This function's behavior is unexpected and probably not what you want. Consider using the home_dir function from https://crates.io/crates/dirs instead. [INFO] [stderr] --> src/loader.rs:61:29 [INFO] [stderr] | [INFO] [stderr] 61 | if let Some(home) = env::home_dir() { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::env::home_dir': This function's behavior is unexpected and probably not what you want. Consider using the home_dir function from https://crates.io/crates/dirs instead. [INFO] [stderr] --> src/debugger.rs:97:29 [INFO] [stderr] | [INFO] [stderr] 97 | if let Some(home) = env::home_dir() { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/app.rs:3:15 [INFO] [stderr] | [INFO] [stderr] 3 | const ABOUT: &'static str = " [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/cmd.rs:305:20 [INFO] [stderr] | [INFO] [stderr] 305 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 306 | | if let Some(v) = cfg.itm_target_clock() { [INFO] [stderr] 307 | | v [INFO] [stderr] 308 | | } else { [INFO] [stderr] 309 | | bail!("itm-target-clock is required for ITM trace.") [INFO] [stderr] 310 | | } [INFO] [stderr] 311 | | }; [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] 305 | } else if let Some(v) = cfg.itm_target_clock() { [INFO] [stderr] 306 | v [INFO] [stderr] 307 | } else { [INFO] [stderr] 308 | bail!("itm-target-clock is required for ITM trace.") [INFO] [stderr] 309 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/cmd.rs:734:16 [INFO] [stderr] | [INFO] [stderr] 734 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 735 | | if let Some(v) = cfg.itm_target_clock() { [INFO] [stderr] 736 | | v [INFO] [stderr] 737 | | } else { [INFO] [stderr] 738 | | bail!("itm-target-clock is required for ITM trace.") [INFO] [stderr] 739 | | } [INFO] [stderr] 740 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 734 | } else if let Some(v) = cfg.itm_target_clock() { [INFO] [stderr] 735 | v [INFO] [stderr] 736 | } else { [INFO] [stderr] 737 | bail!("itm-target-clock is required for ITM trace.") [INFO] [stderr] 738 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/device.rs:702:17 [INFO] [stderr] | [INFO] [stderr] 702 | / if !filter.all { [INFO] [stderr] 703 | | if d.is_unknown() { [INFO] [stderr] 704 | | return false; [INFO] [stderr] 705 | | } [INFO] [stderr] 706 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [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] 702 | if !filter.all && d.is_unknown() { [INFO] [stderr] 703 | return false; [INFO] [stderr] 704 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::env::home_dir': This function's behavior is unexpected and probably not what you want. Consider using the home_dir function from https://crates.io/crates/dirs instead. [INFO] [stderr] --> src/loader.rs:61:29 [INFO] [stderr] | [INFO] [stderr] 61 | if let Some(home) = env::home_dir() { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::env::home_dir': This function's behavior is unexpected and probably not what you want. Consider using the home_dir function from https://crates.io/crates/dirs instead. [INFO] [stderr] --> src/debugger.rs:97:29 [INFO] [stderr] | [INFO] [stderr] 97 | if let Some(home) = env::home_dir() { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/cmd.rs:27:58 [INFO] [stderr] | [INFO] [stderr] 27 | writeln!(out, " Rust {}", check::rust_version().unwrap_or(String::from("Not Found")))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| String::from("Not Found"))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/cmd.rs:28:59 [INFO] [stderr] | [INFO] [stderr] 28 | writeln!(out, " Cargo {}", check::cargo_version().unwrap_or(String::from("Not Found")))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| String::from("Not Found"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/cmd.rs:29:59 [INFO] [stderr] | [INFO] [stderr] 29 | writeln!(out, " Xargo {}", check::xargo_version().unwrap_or(String::from("Not Found")))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| String::from("Not Found"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/cmd.rs:30:57 [INFO] [stderr] | [INFO] [stderr] 30 | writeln!(out, " GCC {}", check::gcc_version().unwrap_or(String::from("Not Found")))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| String::from("Not Found"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/cmd.rs:31:61 [INFO] [stderr] | [INFO] [stderr] 31 | writeln!(out, " OpenOCD {}", check::openocd_version().unwrap_or(String::from("Not Found")))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| String::from("Not Found"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/cmd.rs:32:59 [INFO] [stderr] | [INFO] [stderr] 32 | writeln!(out, " JLink {}", check::jlink_version().unwrap_or(String::from("Not Found")))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| String::from("Not Found"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/cmd.rs:33:60 [INFO] [stderr] | [INFO] [stderr] 33 | writeln!(out, " Bossa {}", check::bossac_version().unwrap_or(String::from("Not Found")))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| String::from("Not Found"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/cmd.rs:34:60 [INFO] [stderr] | [INFO] [stderr] 34 | writeln!(out, " Teensy {}", check::teensy_version().unwrap_or(String::from("Not Found")))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| String::from("Not Found"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/cmd.rs:35:62 [INFO] [stderr] | [INFO] [stderr] 35 | writeln!(out, " dfu-util {}", check::dfu_util_version().unwrap_or(String::from("Not Found")))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| String::from("Not Found"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/cmd.rs:233:21 [INFO] [stderr] | [INFO] [stderr] 233 | let device = if devices.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `devices.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] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/cmd.rs:277:9 [INFO] [stderr] | [INFO] [stderr] 277 | tmpfile.write(buffer.as_ref())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let subcmd =` [INFO] [stderr] --> src/cmd.rs:348:9 [INFO] [stderr] | [INFO] [stderr] 348 | / let subcmd = if args.is_present("halt") { [INFO] [stderr] 349 | | cmd.arg("halt"); [INFO] [stderr] 350 | | } else if args.is_present("resume") { [INFO] [stderr] 351 | | cmd.arg("resume"); [INFO] [stderr] ... | [INFO] [stderr] 360 | | } [INFO] [stderr] 361 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_unit_value)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/cmd.rs:387:21 [INFO] [stderr] | [INFO] [stderr] 387 | let device = if devices.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `devices.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: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/cmd.rs:406:12 [INFO] [stderr] | [INFO] [stderr] 406 | if let Some(_) = args.subcommand_matches("halt") { [INFO] [stderr] | _____- ^^^^^^^ [INFO] [stderr] 407 | | dbg.halt(cfg, args, cmd_args, out, device.as_ref())?; [INFO] [stderr] 408 | | } else if let Some(_) = args.subcommand_matches("resume") { [INFO] [stderr] 409 | | dbg.resume(cfg, args, cmd_args, out, device.as_ref())?; [INFO] [stderr] ... | [INFO] [stderr] 419 | | } [INFO] [stderr] 420 | | } [INFO] [stderr] | |_____- help: try this: `if args.subcommand_matches("halt").is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/cmd.rs:408:19 [INFO] [stderr] | [INFO] [stderr] 408 | } else if let Some(_) = args.subcommand_matches("resume") { [INFO] [stderr] | ____________- ^^^^^^^ [INFO] [stderr] 409 | | dbg.resume(cfg, args, cmd_args, out, device.as_ref())?; [INFO] [stderr] 410 | | } else if let Some(_) = args.subcommand_matches("reset") { [INFO] [stderr] 411 | | if cmd_args.is_present("run") { [INFO] [stderr] ... | [INFO] [stderr] 419 | | } [INFO] [stderr] 420 | | } [INFO] [stderr] | |_____- help: try this: `if args.subcommand_matches("resume").is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/cmd.rs:410:19 [INFO] [stderr] | [INFO] [stderr] 410 | } else if let Some(_) = args.subcommand_matches("reset") { [INFO] [stderr] | ____________- ^^^^^^^ [INFO] [stderr] 411 | | if cmd_args.is_present("run") { [INFO] [stderr] 412 | | dbg.reset_run(cfg, args, cmd_args, out, device.as_ref())?; [INFO] [stderr] 413 | | } else if cmd_args.is_present("halt") { [INFO] [stderr] ... | [INFO] [stderr] 419 | | } [INFO] [stderr] 420 | | } [INFO] [stderr] | |_____- help: try this: `if args.subcommand_matches("reset").is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/cmd.rs:453:21 [INFO] [stderr] | [INFO] [stderr] 453 | let device = if devices.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `devices.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: length comparison to zero [INFO] [stderr] --> src/cmd.rs:497:21 [INFO] [stderr] | [INFO] [stderr] 497 | let device = if devices.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `devices.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: useless use of `format!` [INFO] [stderr] --> src/cmd.rs:544:28 [INFO] [stderr] | [INFO] [stderr] 544 | cmd.arg("-ex").arg(format!("target extended-remote :3333")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"target extended-remote :3333".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/cmd.rs:553:21 [INFO] [stderr] | [INFO] [stderr] 553 | let device = if devices.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `devices.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: length comparison to zero [INFO] [stderr] --> src/cmd.rs:611:21 [INFO] [stderr] | [INFO] [stderr] 611 | let device = if devices.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `devices.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: length comparison to zero [INFO] [stderr] --> src/cmd.rs:661:21 [INFO] [stderr] | [INFO] [stderr] 661 | let device = if devices.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `devices.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: length comparison to zero [INFO] [stderr] --> src/cmd.rs:722:21 [INFO] [stderr] | [INFO] [stderr] 722 | let device = if devices.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `devices.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] error: this loop never actually loops [INFO] [stderr] --> src/config.rs:44:21 [INFO] [stderr] | [INFO] [stderr] 44 | / for key in target.keys() { [INFO] [stderr] 45 | | return Some(key) [INFO] [stderr] 46 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::never_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/loader.rs:57:25 [INFO] [stderr] | [INFO] [stderr] 57 | return Some(bobbin_openocd.into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `bobbin_openocd` [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: useless use of `format!` [INFO] [stderr] --> src/loader.rs:120:18 [INFO] [stderr] | [INFO] [stderr] 120 | &format!("Successfully flashed device"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Successfully flashed device".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/loader.rs:187:18 [INFO] [stderr] | [INFO] [stderr] 187 | &format!("Successfully flashed device"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Successfully flashed device".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/loader.rs:231:18 [INFO] [stderr] | [INFO] [stderr] 231 | &format!("Successfully flashed device"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Successfully flashed device".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/loader.rs:280:18 [INFO] [stderr] | [INFO] [stderr] 280 | &format!("Successfully flashed device"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Successfully flashed device".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/loader.rs:324:18 [INFO] [stderr] | [INFO] [stderr] 324 | &format!("Successfully flashed device"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Successfully flashed device".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/loader.rs:373:18 [INFO] [stderr] | [INFO] [stderr] 373 | &format!("Successfully flashed device"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Successfully flashed device".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/debugger.rs:93:25 [INFO] [stderr] | [INFO] [stderr] 93 | return Some(bobbin_openocd.into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `bobbin_openocd` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/debugger.rs:172:30 [INFO] [stderr] | [INFO] [stderr] 172 | out.info("Halting", &format!("Halting Device"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Halting Device".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/debugger.rs:183:31 [INFO] [stderr] | [INFO] [stderr] 183 | out.info("Resuming", &format!("Resuming Device"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Resuming Device".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/debugger.rs:194:32 [INFO] [stderr] | [INFO] [stderr] 194 | out.info("Resetting", &format!("Resetting Device"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Resetting Device".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/debugger.rs:207:14 [INFO] [stderr] | [INFO] [stderr] 207 | &format!("Resetting and Halting Device"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Resetting and Halting Device".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/debugger.rs:221:14 [INFO] [stderr] | [INFO] [stderr] 221 | &format!("Resetting and Running Device"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Resetting and Running Device".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/debugger.rs:235:14 [INFO] [stderr] | [INFO] [stderr] 235 | &format!("Resetting and Initializing Device"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Resetting and Initializing Device".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/cmd.rs:27:58 [INFO] [stderr] | [INFO] [stderr] 27 | writeln!(out, " Rust {}", check::rust_version().unwrap_or(String::from("Not Found")))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| String::from("Not Found"))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/cmd.rs:28:59 [INFO] [stderr] | [INFO] [stderr] 28 | writeln!(out, " Cargo {}", check::cargo_version().unwrap_or(String::from("Not Found")))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| String::from("Not Found"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/cmd.rs:29:59 [INFO] [stderr] | [INFO] [stderr] 29 | writeln!(out, " Xargo {}", check::xargo_version().unwrap_or(String::from("Not Found")))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| String::from("Not Found"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/cmd.rs:30:57 [INFO] [stderr] | [INFO] [stderr] 30 | writeln!(out, " GCC {}", check::gcc_version().unwrap_or(String::from("Not Found")))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| String::from("Not Found"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/cmd.rs:31:61 [INFO] [stderr] | [INFO] [stderr] 31 | writeln!(out, " OpenOCD {}", check::openocd_version().unwrap_or(String::from("Not Found")))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| String::from("Not Found"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/cmd.rs:32:59 [INFO] [stderr] | [INFO] [stderr] 32 | writeln!(out, " JLink {}", check::jlink_version().unwrap_or(String::from("Not Found")))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| String::from("Not Found"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/cmd.rs:33:60 [INFO] [stderr] | [INFO] [stderr] 33 | writeln!(out, " Bossa {}", check::bossac_version().unwrap_or(String::from("Not Found")))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| String::from("Not Found"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/cmd.rs:34:60 [INFO] [stderr] | [INFO] [stderr] 34 | writeln!(out, " Teensy {}", check::teensy_version().unwrap_or(String::from("Not Found")))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| String::from("Not Found"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/cmd.rs:35:62 [INFO] [stderr] | [INFO] [stderr] 35 | writeln!(out, " dfu-util {}", check::dfu_util_version().unwrap_or(String::from("Not Found")))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| String::from("Not Found"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/console.rs:64:13 [INFO] [stderr] | [INFO] [stderr] 64 | / match self.port.read(&mut buf[..]) { [INFO] [stderr] 65 | | Ok(n) => { [INFO] [stderr] 66 | | try!(stdout.write(&buf[..n])); [INFO] [stderr] 67 | | } [INFO] [stderr] 68 | | Err(_) => {} [INFO] [stderr] 69 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 64 | if let Ok(n) = self.port.read(&mut buf[..]) { [INFO] [stderr] 65 | try!(stdout.write(&buf[..n])); [INFO] [stderr] 66 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/console.rs:66:21 [INFO] [stderr] | [INFO] [stderr] 66 | try!(stdout.write(&buf[..n])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/console.rs:70:13 [INFO] [stderr] | [INFO] [stderr] 70 | / match stdin_rx.try_recv() { [INFO] [stderr] 71 | | Ok(s) => { [INFO] [stderr] 72 | | self.port.write(s.as_bytes())?; [INFO] [stderr] 73 | | }, [INFO] [stderr] 74 | | Err(_) => {}, [INFO] [stderr] 75 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 70 | if let Ok(s) = stdin_rx.try_recv() { [INFO] [stderr] 71 | self.port.write(s.as_bytes())?; [INFO] [stderr] 72 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/console.rs:72:21 [INFO] [stderr] | [INFO] [stderr] 72 | self.port.write(s.as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [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/console.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | / match self.port.read(&mut buf[..]) { [INFO] [stderr] 91 | | Ok(n) => { [INFO] [stderr] 92 | | for b in (&buf[..n]).iter() { [INFO] [stderr] 93 | | if *b == b'\n' { [INFO] [stderr] ... | [INFO] [stderr] 102 | | Err(_) => {} [INFO] [stderr] 103 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 90 | if let Ok(n) = self.port.read(&mut buf[..]) { [INFO] [stderr] 91 | for b in (&buf[..n]).iter() { [INFO] [stderr] 92 | if *b == b'\n' { [INFO] [stderr] 93 | self.handle_line(line.as_ref())?; [INFO] [stderr] 94 | line_time = Instant::now(); [INFO] [stderr] 95 | line.clear(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/console.rs:120:9 [INFO] [stderr] | [INFO] [stderr] 120 | out.write(line_str.as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/console.rs:121:9 [INFO] [stderr] | [INFO] [stderr] 121 | out.write(b"\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/sysfs.rs:30:28 [INFO] [stderr] | [INFO] [stderr] 30 | vendor_string: read_file(&path.join("manufacturer")).unwrap_or(String::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `read_file(&path.join("manufacturer")).unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/sysfs.rs:32:29 [INFO] [stderr] | [INFO] [stderr] 32 | product_string: read_file(&path.join("product")).unwrap_or(String::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `read_file(&path.join("product")).unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/sysfs.rs:33:28 [INFO] [stderr] | [INFO] [stderr] 33 | serial_number: read_file(&path.join("serial")).unwrap_or(String::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `read_file(&path.join("serial")).unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/cmd.rs:233:21 [INFO] [stderr] | [INFO] [stderr] 233 | let device = if devices.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `devices.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] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/cmd.rs:277:9 [INFO] [stderr] | [INFO] [stderr] 277 | tmpfile.write(buffer.as_ref())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/sysfs.rs:61:5 [INFO] [stderr] | [INFO] [stderr] 61 | / for entry in fs::read_dir(tty_dir).unwrap() { [INFO] [stderr] 62 | | let entry = entry.unwrap(); [INFO] [stderr] 63 | | return Some(format!("/dev/{}", entry.file_name().to_str().unwrap())); [INFO] [stderr] 64 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let subcmd =` [INFO] [stderr] --> src/cmd.rs:348:9 [INFO] [stderr] | [INFO] [stderr] 348 | / let subcmd = if args.is_present("halt") { [INFO] [stderr] 349 | | cmd.arg("halt"); [INFO] [stderr] 350 | | } else if args.is_present("resume") { [INFO] [stderr] 351 | | cmd.arg("resume"); [INFO] [stderr] ... | [INFO] [stderr] 360 | | } [INFO] [stderr] 361 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_unit_value)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/cmd.rs:387:21 [INFO] [stderr] | [INFO] [stderr] 387 | let device = if devices.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `devices.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: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/cmd.rs:406:12 [INFO] [stderr] | [INFO] [stderr] 406 | if let Some(_) = args.subcommand_matches("halt") { [INFO] [stderr] | _____- ^^^^^^^ [INFO] [stderr] 407 | | dbg.halt(cfg, args, cmd_args, out, device.as_ref())?; [INFO] [stderr] 408 | | } else if let Some(_) = args.subcommand_matches("resume") { [INFO] [stderr] 409 | | dbg.resume(cfg, args, cmd_args, out, device.as_ref())?; [INFO] [stderr] ... | [INFO] [stderr] 419 | | } [INFO] [stderr] 420 | | } [INFO] [stderr] | |_____- help: try this: `if args.subcommand_matches("halt").is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/cmd.rs:408:19 [INFO] [stderr] | [INFO] [stderr] 408 | } else if let Some(_) = args.subcommand_matches("resume") { [INFO] [stderr] | ____________- ^^^^^^^ [INFO] [stderr] 409 | | dbg.resume(cfg, args, cmd_args, out, device.as_ref())?; [INFO] [stderr] 410 | | } else if let Some(_) = args.subcommand_matches("reset") { [INFO] [stderr] 411 | | if cmd_args.is_present("run") { [INFO] [stderr] ... | [INFO] [stderr] 419 | | } [INFO] [stderr] 420 | | } [INFO] [stderr] | |_____- help: try this: `if args.subcommand_matches("resume").is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/cmd.rs:410:19 [INFO] [stderr] | [INFO] [stderr] 410 | } else if let Some(_) = args.subcommand_matches("reset") { [INFO] [stderr] | ____________- ^^^^^^^ [INFO] [stderr] 411 | | if cmd_args.is_present("run") { [INFO] [stderr] 412 | | dbg.reset_run(cfg, args, cmd_args, out, device.as_ref())?; [INFO] [stderr] 413 | | } else if cmd_args.is_present("halt") { [INFO] [stderr] ... | [INFO] [stderr] 419 | | } [INFO] [stderr] 420 | | } [INFO] [stderr] | |_____- help: try this: `if args.subcommand_matches("reset").is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/cmd.rs:453:21 [INFO] [stderr] | [INFO] [stderr] 453 | let device = if devices.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `devices.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: length comparison to zero [INFO] [stderr] --> src/cmd.rs:497:21 [INFO] [stderr] | [INFO] [stderr] 497 | let device = if devices.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `devices.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: useless use of `format!` [INFO] [stderr] --> src/cmd.rs:544:28 [INFO] [stderr] | [INFO] [stderr] 544 | cmd.arg("-ex").arg(format!("target extended-remote :3333")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"target extended-remote :3333".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/cmd.rs:553:21 [INFO] [stderr] | [INFO] [stderr] 553 | let device = if devices.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `devices.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: length comparison to zero [INFO] [stderr] --> src/cmd.rs:611:21 [INFO] [stderr] | [INFO] [stderr] 611 | let device = if devices.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `devices.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: length comparison to zero [INFO] [stderr] --> src/cmd.rs:661:21 [INFO] [stderr] | [INFO] [stderr] 661 | let device = if devices.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `devices.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: length comparison to zero [INFO] [stderr] --> src/cmd.rs:722:21 [INFO] [stderr] | [INFO] [stderr] 722 | let device = if devices.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `devices.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] error: this loop never actually loops [INFO] [stderr] --> src/config.rs:44:21 [INFO] [stderr] | [INFO] [stderr] 44 | / for key in target.keys() { [INFO] [stderr] 45 | | return Some(key) [INFO] [stderr] 46 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::never_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] error: aborting due to 7 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `bobbin-cli`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/loader.rs:57:25 [INFO] [stderr] | [INFO] [stderr] 57 | return Some(bobbin_openocd.into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `bobbin_openocd` [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: useless use of `format!` [INFO] [stderr] --> src/loader.rs:120:18 [INFO] [stderr] | [INFO] [stderr] 120 | &format!("Successfully flashed device"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Successfully flashed device".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/loader.rs:187:18 [INFO] [stderr] | [INFO] [stderr] 187 | &format!("Successfully flashed device"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Successfully flashed device".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/loader.rs:231:18 [INFO] [stderr] | [INFO] [stderr] 231 | &format!("Successfully flashed device"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Successfully flashed device".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/loader.rs:280:18 [INFO] [stderr] | [INFO] [stderr] 280 | &format!("Successfully flashed device"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Successfully flashed device".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/loader.rs:324:18 [INFO] [stderr] | [INFO] [stderr] 324 | &format!("Successfully flashed device"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Successfully flashed device".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/loader.rs:373:18 [INFO] [stderr] | [INFO] [stderr] 373 | &format!("Successfully flashed device"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Successfully flashed device".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/debugger.rs:93:25 [INFO] [stderr] | [INFO] [stderr] 93 | return Some(bobbin_openocd.into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `bobbin_openocd` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/debugger.rs:172:30 [INFO] [stderr] | [INFO] [stderr] 172 | out.info("Halting", &format!("Halting Device"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Halting Device".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/debugger.rs:183:31 [INFO] [stderr] | [INFO] [stderr] 183 | out.info("Resuming", &format!("Resuming Device"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Resuming Device".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/debugger.rs:194:32 [INFO] [stderr] | [INFO] [stderr] 194 | out.info("Resetting", &format!("Resetting Device"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Resetting Device".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/debugger.rs:207:14 [INFO] [stderr] | [INFO] [stderr] 207 | &format!("Resetting and Halting Device"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Resetting and Halting Device".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/debugger.rs:221:14 [INFO] [stderr] | [INFO] [stderr] 221 | &format!("Resetting and Running Device"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Resetting and Running Device".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/debugger.rs:235:14 [INFO] [stderr] | [INFO] [stderr] 235 | &format!("Resetting and Initializing Device"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Resetting and Initializing Device".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [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/console.rs:64:13 [INFO] [stderr] | [INFO] [stderr] 64 | / match self.port.read(&mut buf[..]) { [INFO] [stderr] 65 | | Ok(n) => { [INFO] [stderr] 66 | | try!(stdout.write(&buf[..n])); [INFO] [stderr] 67 | | } [INFO] [stderr] 68 | | Err(_) => {} [INFO] [stderr] 69 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 64 | if let Ok(n) = self.port.read(&mut buf[..]) { [INFO] [stderr] 65 | try!(stdout.write(&buf[..n])); [INFO] [stderr] 66 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/console.rs:66:21 [INFO] [stderr] | [INFO] [stderr] 66 | try!(stdout.write(&buf[..n])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/console.rs:70:13 [INFO] [stderr] | [INFO] [stderr] 70 | / match stdin_rx.try_recv() { [INFO] [stderr] 71 | | Ok(s) => { [INFO] [stderr] 72 | | self.port.write(s.as_bytes())?; [INFO] [stderr] 73 | | }, [INFO] [stderr] 74 | | Err(_) => {}, [INFO] [stderr] 75 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 70 | if let Ok(s) = stdin_rx.try_recv() { [INFO] [stderr] 71 | self.port.write(s.as_bytes())?; [INFO] [stderr] 72 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/console.rs:72:21 [INFO] [stderr] | [INFO] [stderr] 72 | self.port.write(s.as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [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/console.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | / match self.port.read(&mut buf[..]) { [INFO] [stderr] 91 | | Ok(n) => { [INFO] [stderr] 92 | | for b in (&buf[..n]).iter() { [INFO] [stderr] 93 | | if *b == b'\n' { [INFO] [stderr] ... | [INFO] [stderr] 102 | | Err(_) => {} [INFO] [stderr] 103 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 90 | if let Ok(n) = self.port.read(&mut buf[..]) { [INFO] [stderr] 91 | for b in (&buf[..n]).iter() { [INFO] [stderr] 92 | if *b == b'\n' { [INFO] [stderr] 93 | self.handle_line(line.as_ref())?; [INFO] [stderr] 94 | line_time = Instant::now(); [INFO] [stderr] 95 | line.clear(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/console.rs:120:9 [INFO] [stderr] | [INFO] [stderr] 120 | out.write(line_str.as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/console.rs:121:9 [INFO] [stderr] | [INFO] [stderr] 121 | out.write(b"\n")?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/sysfs.rs:30:28 [INFO] [stderr] | [INFO] [stderr] 30 | vendor_string: read_file(&path.join("manufacturer")).unwrap_or(String::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `read_file(&path.join("manufacturer")).unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/sysfs.rs:32:29 [INFO] [stderr] | [INFO] [stderr] 32 | product_string: read_file(&path.join("product")).unwrap_or(String::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `read_file(&path.join("product")).unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/sysfs.rs:33:28 [INFO] [stderr] | [INFO] [stderr] 33 | serial_number: read_file(&path.join("serial")).unwrap_or(String::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `read_file(&path.join("serial")).unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/sysfs.rs:61:5 [INFO] [stderr] | [INFO] [stderr] 61 | / for entry in fs::read_dir(tty_dir).unwrap() { [INFO] [stderr] 62 | | let entry = entry.unwrap(); [INFO] [stderr] 63 | | return Some(format!("/dev/{}", entry.file_name().to_str().unwrap())); [INFO] [stderr] 64 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] error: aborting due to 7 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `bobbin-cli`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "5fab4c18705d585a52132795cd2a5483c30ad1fdc670ed968966202f344152f0"` [INFO] running `"docker" "rm" "-f" "5fab4c18705d585a52132795cd2a5483c30ad1fdc670ed968966202f344152f0"` [INFO] [stdout] 5fab4c18705d585a52132795cd2a5483c30ad1fdc670ed968966202f344152f0