[INFO] crate lcov-parser 3.2.2 is already in cache [INFO] extracting crate lcov-parser 3.2.2 into work/ex/clippy-test-run/sources/stable/reg/lcov-parser/3.2.2 [INFO] extracting crate lcov-parser 3.2.2 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/lcov-parser/3.2.2 [INFO] validating manifest of lcov-parser-3.2.2 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 lcov-parser-3.2.2 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 lcov-parser-3.2.2 [INFO] finished frobbing lcov-parser-3.2.2 [INFO] frobbed toml for lcov-parser-3.2.2 written to work/ex/clippy-test-run/sources/stable/reg/lcov-parser/3.2.2/Cargo.toml [INFO] started frobbing lcov-parser-3.2.2 [INFO] finished frobbing lcov-parser-3.2.2 [INFO] frobbed toml for lcov-parser-3.2.2 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/lcov-parser/3.2.2/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 lcov-parser-3.2.2 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/lcov-parser/3.2.2:/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] b0aae60a96092bbc507870fa746490b7ba2fc50b197c236ce587c98b0c9e5200 [INFO] running `"docker" "start" "-a" "b0aae60a96092bbc507870fa746490b7ba2fc50b197c236ce587c98b0c9e5200"` [INFO] [stderr] Checking lcov-parser v3.2.2 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/merger/ops/mod.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | checksum: checksum [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `checksum` [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/report/file.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | tests: tests [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `tests` [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/report/branch.rs:75:13 [INFO] [stderr] | [INFO] [stderr] 75 | line_number: line_number, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `line_number` [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/report/branch.rs:76:13 [INFO] [stderr] | [INFO] [stderr] 76 | block: block, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `block` [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/report/branch.rs:77:13 [INFO] [stderr] | [INFO] [stderr] 77 | branch: branch, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `branch` [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/report/branch.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 78 | execution_count: execution_count [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `execution_count` [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/report/line.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | line_number: line_number, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `line_number` [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/report/line.rs:35:13 [INFO] [stderr] | [INFO] [stderr] 35 | execution_count: execution_count, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `execution_count` [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/report/line.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | checksum: checksum [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `checksum` [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/report/function.rs:128:13 [INFO] [stderr] | [INFO] [stderr] 128 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/report/function.rs:129:13 [INFO] [stderr] | [INFO] [stderr] 129 | line_number: line_number, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `line_number` [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/report/function.rs:130:13 [INFO] [stderr] | [INFO] [stderr] 130 | execution_count: execution_count [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `execution_count` [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/report/mod.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | files: files [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `files` [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/combinator/general.rs:47:13 [INFO] [stderr] | [INFO] [stderr] 47 | checksum: checksum [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `checksum` [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/combinator/branch.rs:41:13 [INFO] [stderr] | [INFO] [stderr] 41 | taken: taken [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `taken` [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/merger/ops/mod.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | checksum: checksum [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `checksum` [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/report/file.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | tests: tests [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `tests` [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/report/branch.rs:75:13 [INFO] [stderr] | [INFO] [stderr] 75 | line_number: line_number, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `line_number` [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/report/branch.rs:76:13 [INFO] [stderr] | [INFO] [stderr] 76 | block: block, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `block` [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/report/branch.rs:77:13 [INFO] [stderr] | [INFO] [stderr] 77 | branch: branch, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `branch` [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/report/branch.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 78 | execution_count: execution_count [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `execution_count` [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/report/line.rs:34:13 [INFO] [stderr] | [INFO] [stderr] 34 | line_number: line_number, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `line_number` [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/report/line.rs:35:13 [INFO] [stderr] | [INFO] [stderr] 35 | execution_count: execution_count, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `execution_count` [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/report/line.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | checksum: checksum [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `checksum` [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/report/function.rs:128:13 [INFO] [stderr] | [INFO] [stderr] 128 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [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/report/function.rs:129:13 [INFO] [stderr] | [INFO] [stderr] 129 | line_number: line_number, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `line_number` [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/report/function.rs:130:13 [INFO] [stderr] | [INFO] [stderr] 130 | execution_count: execution_count [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `execution_count` [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/report/mod.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | files: files [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `files` [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/combinator/general.rs:47:13 [INFO] [stderr] | [INFO] [stderr] 47 | checksum: checksum [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `checksum` [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/combinator/branch.rs:41:13 [INFO] [stderr] | [INFO] [stderr] 41 | taken: taken [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `taken` [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: module has the same name as its containing module [INFO] [stderr] --> src/merger/mod.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | mod merger; [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/report/branch.rs:105:9 [INFO] [stderr] | [INFO] [stderr] 105 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/report/branch.rs:119:9 [INFO] [stderr] | [INFO] [stderr] 119 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/report/line.rs:75:9 [INFO] [stderr] | [INFO] [stderr] 75 | return &self.line_number == other.line_number(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.line_number == other.line_number()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:145:9 [INFO] [stderr] | [INFO] [stderr] 145 | return Ok( Some(record) ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok( Some(record) )` [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: module has the same name as its containing module [INFO] [stderr] --> src/merger/mod.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | mod merger; [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/report/branch.rs:105:9 [INFO] [stderr] | [INFO] [stderr] 105 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/report/branch.rs:119:9 [INFO] [stderr] | [INFO] [stderr] 119 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/report/line.rs:75:9 [INFO] [stderr] | [INFO] [stderr] 75 | return &self.line_number == other.line_number(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.line_number == other.line_number()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:145:9 [INFO] [stderr] | [INFO] [stderr] 145 | return Ok( Some(record) ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok( Some(record) )` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/merger/merger.rs:67:26 [INFO] [stderr] | [INFO] [stderr] 67 | self.test_name = match test_name { [INFO] [stderr] | __________________________^ [INFO] [stderr] 68 | | &Some(ref name) => Some(name.clone()), [INFO] [stderr] 69 | | &None => Some(String::new()) [INFO] [stderr] 70 | | }; [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] 67 | self.test_name = match *test_name { [INFO] [stderr] 68 | Some(ref name) => Some(name.clone()), [INFO] [stderr] 69 | None => Some(String::new()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/merger/merger.rs:74:47 [INFO] [stderr] | [INFO] [stderr] 74 | fn on_source_file(&mut self, source_name: &String) { [INFO] [stderr] | ^^^^^^^ [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] help: change this to [INFO] [stderr] | [INFO] [stderr] 74 | fn on_source_file(&mut self, source_name: &str) { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `source_name.clone()` to [INFO] [stderr] | [INFO] [stderr] 75 | self.source_name = Some(source_name.to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/merger/ops/mod.rs:37:9 [INFO] [stderr] | [INFO] [stderr] 37 | / match self { [INFO] [stderr] 38 | | &ChecksumError::Mismatch(ref line1, ref line2) => { [INFO] [stderr] 39 | | write!(f, "Source code checksums do not match: line: {}, left: {}, right: {}", [INFO] [stderr] 40 | | line1.line(), [INFO] [stderr] ... | [INFO] [stderr] 43 | | } [INFO] [stderr] 44 | | } [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] 37 | match *self { [INFO] [stderr] 38 | ChecksumError::Mismatch(ref line1, ref line2) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/merger/ops/mod.rs:74:27 [INFO] [stderr] | [INFO] [stderr] 74 | let line_number = line.line_number().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*line.line_number()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/merger/ops/mod.rs:96:9 [INFO] [stderr] | [INFO] [stderr] 96 | / match self { [INFO] [stderr] 97 | | &FunctionError::Mismatch(ref func1, ref func2) => { [INFO] [stderr] 98 | | write!(f, "Function name mismatch: left = {}, right = {}", func1, func2) [INFO] [stderr] 99 | | } [INFO] [stderr] 100 | | } [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] 96 | match *self { [INFO] [stderr] 97 | FunctionError::Mismatch(ref func1, ref func2) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/merger/ops/mod.rs:147:9 [INFO] [stderr] | [INFO] [stderr] 147 | / match self { [INFO] [stderr] 148 | | &BranchError::Mismatch(ref branch1, ref branch2) => { [INFO] [stderr] 149 | | write!(f, "Branch mismatch: left = {}, right = {}", branch1, branch2) [INFO] [stderr] 150 | | } [INFO] [stderr] 151 | | } [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] 147 | match *self { [INFO] [stderr] 148 | BranchError::Mismatch(ref branch1, ref branch2) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/merger/ops/mod.rs:164:9 [INFO] [stderr] | [INFO] [stderr] 164 | / match self { [INFO] [stderr] 165 | | &TestError::Checksum(ref err) => write!(f, "{}", err), [INFO] [stderr] 166 | | &TestError::Function(ref err) => write!(f, "{}", err), [INFO] [stderr] 167 | | &TestError::Branch(ref err) => write!(f, "{}", err) [INFO] [stderr] 168 | | } [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] 164 | match *self { [INFO] [stderr] 165 | TestError::Checksum(ref err) => write!(f, "{}", err), [INFO] [stderr] 166 | TestError::Function(ref err) => write!(f, "{}", err), [INFO] [stderr] 167 | TestError::Branch(ref err) => write!(f, "{}", err) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/merger/ops/mod.rs:201:9 [INFO] [stderr] | [INFO] [stderr] 201 | / match self { [INFO] [stderr] 202 | | &MergeError::IO(ref err) => write!(f, "{}", err), [INFO] [stderr] 203 | | &MergeError::RecordParse(ref err) => write!(f, "{}", err), [INFO] [stderr] 204 | | &MergeError::Process(ref err) => write!(f, "{}", err) [INFO] [stderr] 205 | | } [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] 201 | match *self { [INFO] [stderr] 202 | MergeError::IO(ref err) => write!(f, "{}", err), [INFO] [stderr] 203 | MergeError::RecordParse(ref err) => write!(f, "{}", err), [INFO] [stderr] 204 | MergeError::Process(ref err) => write!(f, "{}", err) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/report/summary.rs:17:9 [INFO] [stderr] | [INFO] [stderr] 17 | self.len() <= 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::absurd_extreme_comparisons)] on by default [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using self.len() == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/report/file.rs:29:34 [INFO] [stderr] | [INFO] [stderr] 29 | pub fn get_test(&self, name: &String) -> Option<&Test> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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 should consider deriving a `Default` implementation for `report::file::Files` [INFO] [stderr] --> src/report/file.rs:50:5 [INFO] [stderr] | [INFO] [stderr] 50 | / pub fn new() -> Self { [INFO] [stderr] 51 | | Files { [INFO] [stderr] 52 | | files: BTreeMap::new() [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] 45 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `report::branch::BranchBlocks` [INFO] [stderr] --> src/report/branch.rs:189:5 [INFO] [stderr] | [INFO] [stderr] 189 | / pub fn new() -> Self { [INFO] [stderr] 190 | | BranchBlocks { [INFO] [stderr] 191 | | blocks: BTreeMap::new() [INFO] [stderr] 192 | | } [INFO] [stderr] 193 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 184 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `BTreeMap` [INFO] [stderr] --> src/report/branch.rs:222:9 [INFO] [stderr] | [INFO] [stderr] 222 | / if !self.blocks.contains_key(&unit) { [INFO] [stderr] 223 | | self.blocks.insert(unit, Branch::from(data)); [INFO] [stderr] 224 | | return Ok(()); [INFO] [stderr] 225 | | } [INFO] [stderr] | |_________^ help: consider using: `self.blocks.entry(unit)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `report::branch::Branches` [INFO] [stderr] --> src/report/branch.rs:241:5 [INFO] [stderr] | [INFO] [stderr] 241 | / pub fn new() -> Self { [INFO] [stderr] 242 | | Branches { [INFO] [stderr] 243 | | branches: BTreeMap::new() [INFO] [stderr] 244 | | } [INFO] [stderr] 245 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 236 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/report/branch.rs:306:17 [INFO] [stderr] | [INFO] [stderr] 306 | let _ = blocks.try_merge(data)?; [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/report/branch.rs:310:17 [INFO] [stderr] | [INFO] [stderr] 310 | data.line.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `data.line` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: use as_ref() instead [INFO] [stderr] --> src/report/line.rs:46:9 [INFO] [stderr] | [INFO] [stderr] 46 | / match self.checksum { [INFO] [stderr] 47 | | Some(ref v) => Some(v), [INFO] [stderr] 48 | | None => None [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ help: try this: `self.checksum.as_ref()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_as_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_as_ref [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `report::line::Lines` [INFO] [stderr] --> src/report/line.rs:114:5 [INFO] [stderr] | [INFO] [stderr] 114 | / pub fn new() -> Self { [INFO] [stderr] 115 | | Lines { [INFO] [stderr] 116 | | lines: BTreeMap::new() [INFO] [stderr] 117 | | } [INFO] [stderr] 118 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 109 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `BTreeMap` [INFO] [stderr] --> src/report/line.rs:177:9 [INFO] [stderr] | [INFO] [stderr] 177 | / if !self.lines.contains_key(&line_data.line) { [INFO] [stderr] 178 | | self.lines.insert(line_data.line, Line::from(line_data)); [INFO] [stderr] 179 | | return Ok(()); [INFO] [stderr] 180 | | } [INFO] [stderr] | |_________^ help: consider using: `self.lines.entry(line_data.line)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `report::function::Functions` [INFO] [stderr] --> src/report/function.rs:28:5 [INFO] [stderr] | [INFO] [stderr] 28 | / pub fn new() -> Self { [INFO] [stderr] 29 | | Functions { [INFO] [stderr] 30 | | functions: BTreeMap::new() [INFO] [stderr] 31 | | } [INFO] [stderr] 32 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 23 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `report::test::Tests` [INFO] [stderr] --> src/report/test.rs:79:5 [INFO] [stderr] | [INFO] [stderr] 79 | / pub fn new() -> Self { [INFO] [stderr] 80 | | Tests { [INFO] [stderr] 81 | | tests: BTreeMap::new() [INFO] [stderr] 82 | | } [INFO] [stderr] 83 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 74 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: item `report::Report` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/report/mod.rs:33:1 [INFO] [stderr] | [INFO] [stderr] 33 | / impl Report { [INFO] [stderr] 34 | | pub fn new(files: Files) -> Self { [INFO] [stderr] 35 | | Report { [INFO] [stderr] 36 | | files: files [INFO] [stderr] ... | [INFO] [stderr] 51 | | } [INFO] [stderr] 52 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/combinator/general.rs:27:14 [INFO] [stderr] | [INFO] [stderr] 27 | .map(| s: Option | LCOVRecord::TestName(s)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `LCOVRecord::TestName` [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] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/combinator/general.rs:33:52 [INFO] [stderr] | [INFO] [stderr] 33 | let source_file = parser(to_string::).map( | s: String | LCOVRecord::SourceFile(s) ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `LCOVRecord::SourceFile` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/combinator/branch.rs:51:15 [INFO] [stderr] | [INFO] [stderr] 51 | .map( | branches_found | LCOVRecord::BranchesFound(branches_found) ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `LCOVRecord::BranchesFound` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/combinator/branch.rs:59:15 [INFO] [stderr] | [INFO] [stderr] 59 | .map( | branches_hit | LCOVRecord::BranchesHit(branches_hit) ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `LCOVRecord::BranchesHit` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/combinator/function.rs:53:15 [INFO] [stderr] | [INFO] [stderr] 53 | .map( | functions_found | LCOVRecord::FunctionsFound(functions_found) ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `LCOVRecord::FunctionsFound` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/combinator/function.rs:60:15 [INFO] [stderr] | [INFO] [stderr] 60 | .map( | functions_hit | LCOVRecord::FunctionsHit(functions_hit) ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `LCOVRecord::FunctionsHit` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/combinator/line.rs:24:15 [INFO] [stderr] | [INFO] [stderr] 24 | .map( | lines_hit | LCOVRecord::LinesHit(lines_hit) ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `LCOVRecord::LinesHit` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/combinator/line.rs:32:15 [INFO] [stderr] | [INFO] [stderr] 32 | .map( | line_found | LCOVRecord::LinesFound(line_found) ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `LCOVRecord::LinesFound` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:75:9 [INFO] [stderr] | [INFO] [stderr] 75 | / match self { [INFO] [stderr] 76 | | &ParseError::IOError(ref err) => err.description(), [INFO] [stderr] 77 | | &ParseError::RecordParseError(ref err) => err.description(), [INFO] [stderr] 78 | | } [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] 75 | match *self { [INFO] [stderr] 76 | ParseError::IOError(ref err) => err.description(), [INFO] [stderr] 77 | ParseError::RecordParseError(ref err) => err.description(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:84:9 [INFO] [stderr] | [INFO] [stderr] 84 | / match self { [INFO] [stderr] 85 | | &ParseError::IOError(ref err) => err.fmt(formatter), [INFO] [stderr] 86 | | &ParseError::RecordParseError(ref err) => err.fmt(formatter), [INFO] [stderr] 87 | | } [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] 84 | match *self { [INFO] [stderr] 85 | ParseError::IOError(ref err) => err.fmt(formatter), [INFO] [stderr] 86 | ParseError::RecordParseError(ref err) => err.fmt(formatter), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: defining a method called `next` on this type; consider implementing the `std::iter::Iterator` trait or choosing a less ambiguous name [INFO] [stderr] --> src/parser.rs:137:5 [INFO] [stderr] | [INFO] [stderr] 137 | / pub fn next(&mut self) -> Result, ParseError> { [INFO] [stderr] 138 | | let mut line = String::new(); [INFO] [stderr] 139 | | let size = self.reader.read_line(&mut line)?; [INFO] [stderr] 140 | | if size <= 0 { [INFO] [stderr] ... | [INFO] [stderr] 145 | | return Ok( Some(record) ); [INFO] [stderr] 146 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/parser.rs:140:12 [INFO] [stderr] | [INFO] [stderr] 140 | if size <= 0 { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using size == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/parser.rs:152:27 [INFO] [stderr] | [INFO] [stderr] 152 | line: self.line.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.line` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `lcov-parser`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/merger/merger.rs:67:26 [INFO] [stderr] | [INFO] [stderr] 67 | self.test_name = match test_name { [INFO] [stderr] | __________________________^ [INFO] [stderr] 68 | | &Some(ref name) => Some(name.clone()), [INFO] [stderr] 69 | | &None => Some(String::new()) [INFO] [stderr] 70 | | }; [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] 67 | self.test_name = match *test_name { [INFO] [stderr] 68 | Some(ref name) => Some(name.clone()), [INFO] [stderr] 69 | None => Some(String::new()) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/merger/merger.rs:74:47 [INFO] [stderr] | [INFO] [stderr] 74 | fn on_source_file(&mut self, source_name: &String) { [INFO] [stderr] | ^^^^^^^ [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] help: change this to [INFO] [stderr] | [INFO] [stderr] 74 | fn on_source_file(&mut self, source_name: &str) { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `source_name.clone()` to [INFO] [stderr] | [INFO] [stderr] 75 | self.source_name = Some(source_name.to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/merger/ops/mod.rs:37:9 [INFO] [stderr] | [INFO] [stderr] 37 | / match self { [INFO] [stderr] 38 | | &ChecksumError::Mismatch(ref line1, ref line2) => { [INFO] [stderr] 39 | | write!(f, "Source code checksums do not match: line: {}, left: {}, right: {}", [INFO] [stderr] 40 | | line1.line(), [INFO] [stderr] ... | [INFO] [stderr] 43 | | } [INFO] [stderr] 44 | | } [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] 37 | match *self { [INFO] [stderr] 38 | ChecksumError::Mismatch(ref line1, ref line2) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/merger/ops/mod.rs:74:27 [INFO] [stderr] | [INFO] [stderr] 74 | let line_number = line.line_number().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*line.line_number()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/merger/ops/mod.rs:96:9 [INFO] [stderr] | [INFO] [stderr] 96 | / match self { [INFO] [stderr] 97 | | &FunctionError::Mismatch(ref func1, ref func2) => { [INFO] [stderr] 98 | | write!(f, "Function name mismatch: left = {}, right = {}", func1, func2) [INFO] [stderr] 99 | | } [INFO] [stderr] 100 | | } [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] 96 | match *self { [INFO] [stderr] 97 | FunctionError::Mismatch(ref func1, ref func2) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/merger/ops/mod.rs:147:9 [INFO] [stderr] | [INFO] [stderr] 147 | / match self { [INFO] [stderr] 148 | | &BranchError::Mismatch(ref branch1, ref branch2) => { [INFO] [stderr] 149 | | write!(f, "Branch mismatch: left = {}, right = {}", branch1, branch2) [INFO] [stderr] 150 | | } [INFO] [stderr] 151 | | } [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] 147 | match *self { [INFO] [stderr] 148 | BranchError::Mismatch(ref branch1, ref branch2) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/merger/ops/mod.rs:164:9 [INFO] [stderr] | [INFO] [stderr] 164 | / match self { [INFO] [stderr] 165 | | &TestError::Checksum(ref err) => write!(f, "{}", err), [INFO] [stderr] 166 | | &TestError::Function(ref err) => write!(f, "{}", err), [INFO] [stderr] 167 | | &TestError::Branch(ref err) => write!(f, "{}", err) [INFO] [stderr] 168 | | } [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] 164 | match *self { [INFO] [stderr] 165 | TestError::Checksum(ref err) => write!(f, "{}", err), [INFO] [stderr] 166 | TestError::Function(ref err) => write!(f, "{}", err), [INFO] [stderr] 167 | TestError::Branch(ref err) => write!(f, "{}", err) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/merger/ops/mod.rs:201:9 [INFO] [stderr] | [INFO] [stderr] 201 | / match self { [INFO] [stderr] 202 | | &MergeError::IO(ref err) => write!(f, "{}", err), [INFO] [stderr] 203 | | &MergeError::RecordParse(ref err) => write!(f, "{}", err), [INFO] [stderr] 204 | | &MergeError::Process(ref err) => write!(f, "{}", err) [INFO] [stderr] 205 | | } [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] 201 | match *self { [INFO] [stderr] 202 | MergeError::IO(ref err) => write!(f, "{}", err), [INFO] [stderr] 203 | MergeError::RecordParse(ref err) => write!(f, "{}", err), [INFO] [stderr] 204 | MergeError::Process(ref err) => write!(f, "{}", err) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/report/summary.rs:17:9 [INFO] [stderr] | [INFO] [stderr] 17 | self.len() <= 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::absurd_extreme_comparisons)] on by default [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using self.len() == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/report/file.rs:29:34 [INFO] [stderr] | [INFO] [stderr] 29 | pub fn get_test(&self, name: &String) -> Option<&Test> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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 should consider deriving a `Default` implementation for `report::file::Files` [INFO] [stderr] --> src/report/file.rs:50:5 [INFO] [stderr] | [INFO] [stderr] 50 | / pub fn new() -> Self { [INFO] [stderr] 51 | | Files { [INFO] [stderr] 52 | | files: BTreeMap::new() [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] 45 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `report::branch::BranchBlocks` [INFO] [stderr] --> src/report/branch.rs:189:5 [INFO] [stderr] | [INFO] [stderr] 189 | / pub fn new() -> Self { [INFO] [stderr] 190 | | BranchBlocks { [INFO] [stderr] 191 | | blocks: BTreeMap::new() [INFO] [stderr] 192 | | } [INFO] [stderr] 193 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 184 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `BTreeMap` [INFO] [stderr] --> src/report/branch.rs:222:9 [INFO] [stderr] | [INFO] [stderr] 222 | / if !self.blocks.contains_key(&unit) { [INFO] [stderr] 223 | | self.blocks.insert(unit, Branch::from(data)); [INFO] [stderr] 224 | | return Ok(()); [INFO] [stderr] 225 | | } [INFO] [stderr] | |_________^ help: consider using: `self.blocks.entry(unit)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `report::branch::Branches` [INFO] [stderr] --> src/report/branch.rs:241:5 [INFO] [stderr] | [INFO] [stderr] 241 | / pub fn new() -> Self { [INFO] [stderr] 242 | | Branches { [INFO] [stderr] 243 | | branches: BTreeMap::new() [INFO] [stderr] 244 | | } [INFO] [stderr] 245 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 236 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/report/branch.rs:306:17 [INFO] [stderr] | [INFO] [stderr] 306 | let _ = blocks.try_merge(data)?; [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/report/branch.rs:310:17 [INFO] [stderr] | [INFO] [stderr] 310 | data.line.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `data.line` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: use as_ref() instead [INFO] [stderr] --> src/report/line.rs:46:9 [INFO] [stderr] | [INFO] [stderr] 46 | / match self.checksum { [INFO] [stderr] 47 | | Some(ref v) => Some(v), [INFO] [stderr] 48 | | None => None [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ help: try this: `self.checksum.as_ref()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_as_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_as_ref [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `report::line::Lines` [INFO] [stderr] --> src/report/line.rs:114:5 [INFO] [stderr] | [INFO] [stderr] 114 | / pub fn new() -> Self { [INFO] [stderr] 115 | | Lines { [INFO] [stderr] 116 | | lines: BTreeMap::new() [INFO] [stderr] 117 | | } [INFO] [stderr] 118 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 109 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `BTreeMap` [INFO] [stderr] --> src/report/line.rs:177:9 [INFO] [stderr] | [INFO] [stderr] 177 | / if !self.lines.contains_key(&line_data.line) { [INFO] [stderr] 178 | | self.lines.insert(line_data.line, Line::from(line_data)); [INFO] [stderr] 179 | | return Ok(()); [INFO] [stderr] 180 | | } [INFO] [stderr] | |_________^ help: consider using: `self.lines.entry(line_data.line)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/report/line.rs:213:13 [INFO] [stderr] | [INFO] [stderr] 213 | let ref cloned_lines = lines.clone(); [INFO] [stderr] | ----^^^^^^^^^^^^^^^^----------------- help: try: `let cloned_lines = &lines.clone();` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `report::function::Functions` [INFO] [stderr] --> src/report/function.rs:28:5 [INFO] [stderr] | [INFO] [stderr] 28 | / pub fn new() -> Self { [INFO] [stderr] 29 | | Functions { [INFO] [stderr] 30 | | functions: BTreeMap::new() [INFO] [stderr] 31 | | } [INFO] [stderr] 32 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 23 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/report/function.rs:249:13 [INFO] [stderr] | [INFO] [stderr] 249 | let ref cloned_functions = functions.clone(); [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^--------------------- help: try: `let cloned_functions = &functions.clone();` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `report::test::Tests` [INFO] [stderr] --> src/report/test.rs:79:5 [INFO] [stderr] | [INFO] [stderr] 79 | / pub fn new() -> Self { [INFO] [stderr] 80 | | Tests { [INFO] [stderr] 81 | | tests: BTreeMap::new() [INFO] [stderr] 82 | | } [INFO] [stderr] 83 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 74 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: item `report::Report` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/report/mod.rs:33:1 [INFO] [stderr] | [INFO] [stderr] 33 | / impl Report { [INFO] [stderr] 34 | | pub fn new(files: Files) -> Self { [INFO] [stderr] 35 | | Report { [INFO] [stderr] 36 | | files: files [INFO] [stderr] ... | [INFO] [stderr] 51 | | } [INFO] [stderr] 52 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: this let-binding has unit value. Consider omitting `let _ =` [INFO] [stderr] --> src/report/mod.rs:112:9 [INFO] [stderr] | [INFO] [stderr] 112 | let _ = report.save_as(file_path.clone()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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: redundant closure found [INFO] [stderr] --> src/combinator/general.rs:27:14 [INFO] [stderr] | [INFO] [stderr] 27 | .map(| s: Option | LCOVRecord::TestName(s)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `LCOVRecord::TestName` [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] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/combinator/general.rs:33:52 [INFO] [stderr] | [INFO] [stderr] 33 | let source_file = parser(to_string::).map( | s: String | LCOVRecord::SourceFile(s) ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `LCOVRecord::SourceFile` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/combinator/branch.rs:51:15 [INFO] [stderr] | [INFO] [stderr] 51 | .map( | branches_found | LCOVRecord::BranchesFound(branches_found) ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `LCOVRecord::BranchesFound` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/combinator/branch.rs:59:15 [INFO] [stderr] | [INFO] [stderr] 59 | .map( | branches_hit | LCOVRecord::BranchesHit(branches_hit) ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `LCOVRecord::BranchesHit` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/combinator/function.rs:53:15 [INFO] [stderr] | [INFO] [stderr] 53 | .map( | functions_found | LCOVRecord::FunctionsFound(functions_found) ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `LCOVRecord::FunctionsFound` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/combinator/function.rs:60:15 [INFO] [stderr] | [INFO] [stderr] 60 | .map( | functions_hit | LCOVRecord::FunctionsHit(functions_hit) ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `LCOVRecord::FunctionsHit` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/combinator/line.rs:24:15 [INFO] [stderr] | [INFO] [stderr] 24 | .map( | lines_hit | LCOVRecord::LinesHit(lines_hit) ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `LCOVRecord::LinesHit` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/combinator/line.rs:32:15 [INFO] [stderr] | [INFO] [stderr] 32 | .map( | line_found | LCOVRecord::LinesFound(line_found) ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `LCOVRecord::LinesFound` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:75:9 [INFO] [stderr] | [INFO] [stderr] 75 | / match self { [INFO] [stderr] 76 | | &ParseError::IOError(ref err) => err.description(), [INFO] [stderr] 77 | | &ParseError::RecordParseError(ref err) => err.description(), [INFO] [stderr] 78 | | } [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] 75 | match *self { [INFO] [stderr] 76 | ParseError::IOError(ref err) => err.description(), [INFO] [stderr] 77 | ParseError::RecordParseError(ref err) => err.description(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:84:9 [INFO] [stderr] | [INFO] [stderr] 84 | / match self { [INFO] [stderr] 85 | | &ParseError::IOError(ref err) => err.fmt(formatter), [INFO] [stderr] 86 | | &ParseError::RecordParseError(ref err) => err.fmt(formatter), [INFO] [stderr] 87 | | } [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] 84 | match *self { [INFO] [stderr] 85 | ParseError::IOError(ref err) => err.fmt(formatter), [INFO] [stderr] 86 | ParseError::RecordParseError(ref err) => err.fmt(formatter), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: defining a method called `next` on this type; consider implementing the `std::iter::Iterator` trait or choosing a less ambiguous name [INFO] [stderr] --> src/parser.rs:137:5 [INFO] [stderr] | [INFO] [stderr] 137 | / pub fn next(&mut self) -> Result, ParseError> { [INFO] [stderr] 138 | | let mut line = String::new(); [INFO] [stderr] 139 | | let size = self.reader.read_line(&mut line)?; [INFO] [stderr] 140 | | if size <= 0 { [INFO] [stderr] ... | [INFO] [stderr] 145 | | return Ok( Some(record) ); [INFO] [stderr] 146 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::should_implement_trait)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/parser.rs:140:12 [INFO] [stderr] | [INFO] [stderr] 140 | if size <= 0 { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using size == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/parser.rs:152:27 [INFO] [stderr] | [INFO] [stderr] 152 | line: self.line.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.line` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `lcov-parser`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "b0aae60a96092bbc507870fa746490b7ba2fc50b197c236ce587c98b0c9e5200"` [INFO] running `"docker" "rm" "-f" "b0aae60a96092bbc507870fa746490b7ba2fc50b197c236ce587c98b0c9e5200"` [INFO] [stdout] b0aae60a96092bbc507870fa746490b7ba2fc50b197c236ce587c98b0c9e5200