[INFO] updating cached repository TuBieJun/consensus [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/TuBieJun/consensus [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/TuBieJun/consensus" "work/ex/clippy-test-run/sources/stable/gh/TuBieJun/consensus"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/TuBieJun/consensus'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/TuBieJun/consensus" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/TuBieJun/consensus"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/TuBieJun/consensus'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] c40ebfab0e62be16d5d1c67214244e4f6e3edaec [INFO] sha for GitHub repo TuBieJun/consensus: c40ebfab0e62be16d5d1c67214244e4f6e3edaec [INFO] validating manifest of TuBieJun/consensus 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 TuBieJun/consensus 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 TuBieJun/consensus [INFO] finished frobbing TuBieJun/consensus [INFO] frobbed toml for TuBieJun/consensus written to work/ex/clippy-test-run/sources/stable/gh/TuBieJun/consensus/Cargo.toml [INFO] started frobbing TuBieJun/consensus [INFO] finished frobbing TuBieJun/consensus [INFO] frobbed toml for TuBieJun/consensus written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/TuBieJun/consensus/Cargo.toml [INFO] crate TuBieJun/consensus has a lockfile. skipping [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 TuBieJun/consensus against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/TuBieJun/consensus:/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] 54af59819d9aad85bbccc51fc3c59a8fe5fb30533b2e28818b30e806fcbd5d6b [INFO] running `"docker" "start" "-a" "54af59819d9aad85bbccc51fc3c59a8fe5fb30533b2e28818b30e806fcbd5d6b"` [INFO] [stderr] Checking ieee754 v0.2.2 [INFO] [stderr] Compiling fs-utils v1.0.0 [INFO] [stderr] Checking itertools v0.6.5 [INFO] [stderr] Checking atty v0.2.6 [INFO] [stderr] Checking clap v2.29.0 [INFO] [stderr] Compiling rust-htslib v0.15.0 [INFO] [stderr] Checking consensus v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: unused import: `std::env` [INFO] [stderr] --> src/main.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | use std::env; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `rust_htslib::prelude::*` [INFO] [stderr] --> src/main.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | use rust_htslib::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io` [INFO] [stderr] --> src/main.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | use std::io; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `PathBuf` [INFO] [stderr] --> src/main.rs:25:23 [INFO] [stderr] | [INFO] [stderr] 25 | use std::path::{Path, PathBuf}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `SubCommand` [INFO] [stderr] --> src/main.rs:26:22 [INFO] [stderr] | [INFO] [stderr] 26 | use clap::{Arg, App, SubCommand}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/main.rs:217:20 [INFO] [stderr] | [INFO] [stderr] 217 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 218 | | if (num_position[&(i as usize)] == num_position[&(0 as usize)]) { [INFO] [stderr] 219 | | str_num = String::from(",."); [INFO] [stderr] 220 | | } else { [INFO] [stderr] 221 | | str_num = format!(",{}", num_position[&(i as usize)]); [INFO] [stderr] 222 | | } [INFO] [stderr] 223 | | } [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] 217 | } else if (num_position[&(i as usize)] == num_position[&(0 as usize)]) { [INFO] [stderr] 218 | str_num = String::from(",."); [INFO] [stderr] 219 | } else { [INFO] [stderr] 220 | str_num = format!(",{}", num_position[&(i as usize)]); [INFO] [stderr] 221 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:218:20 [INFO] [stderr] | [INFO] [stderr] 218 | if (num_position[&(i as usize)] == num_position[&(0 as usize)]) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:239:16 [INFO] [stderr] | [INFO] [stderr] 239 | if (baseEach_percent_record.len() > 0) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/main.rs:287:9 [INFO] [stderr] | [INFO] [stderr] 287 | / if pair_dup.len() == 2 { [INFO] [stderr] 288 | | if (use_check && pair_dup.get("R1").unwrap().len() == pair_dup.get("R2").unwrap().len()) || (!use_check){ [INFO] [stderr] 289 | | can_consensus_v.push(key_dupGroup.to_string()); [INFO] [stderr] 290 | | } [INFO] [stderr] 291 | | } [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] 287 | if pair_dup.len() == 2 && ((use_check && pair_dup.get("R1").unwrap().len() == pair_dup.get("R2").unwrap().len()) || (!use_check)) { [INFO] [stderr] 288 | can_consensus_v.push(key_dupGroup.to_string()); [INFO] [stderr] 289 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::env` [INFO] [stderr] --> src/main.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | use std::env; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `rust_htslib::prelude::*` [INFO] [stderr] --> src/main.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | use rust_htslib::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io` [INFO] [stderr] --> src/main.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | use std::io; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `PathBuf` [INFO] [stderr] --> src/main.rs:25:23 [INFO] [stderr] | [INFO] [stderr] 25 | use std::path::{Path, PathBuf}; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `SubCommand` [INFO] [stderr] --> src/main.rs:26:22 [INFO] [stderr] | [INFO] [stderr] 26 | use clap::{Arg, App, SubCommand}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/main.rs:217:20 [INFO] [stderr] | [INFO] [stderr] 217 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 218 | | if (num_position[&(i as usize)] == num_position[&(0 as usize)]) { [INFO] [stderr] 219 | | str_num = String::from(",."); [INFO] [stderr] 220 | | } else { [INFO] [stderr] 221 | | str_num = format!(",{}", num_position[&(i as usize)]); [INFO] [stderr] 222 | | } [INFO] [stderr] 223 | | } [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] 217 | } else if (num_position[&(i as usize)] == num_position[&(0 as usize)]) { [INFO] [stderr] 218 | str_num = String::from(",."); [INFO] [stderr] 219 | } else { [INFO] [stderr] 220 | str_num = format!(",{}", num_position[&(i as usize)]); [INFO] [stderr] 221 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:218:20 [INFO] [stderr] | [INFO] [stderr] 218 | if (num_position[&(i as usize)] == num_position[&(0 as usize)]) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/main.rs:239:16 [INFO] [stderr] | [INFO] [stderr] 239 | if (baseEach_percent_record.len() > 0) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/main.rs:287:9 [INFO] [stderr] | [INFO] [stderr] 287 | / if pair_dup.len() == 2 { [INFO] [stderr] 288 | | if (use_check && pair_dup.get("R1").unwrap().len() == pair_dup.get("R2").unwrap().len()) || (!use_check){ [INFO] [stderr] 289 | | can_consensus_v.push(key_dupGroup.to_string()); [INFO] [stderr] 290 | | } [INFO] [stderr] 291 | | } [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] 287 | if pair_dup.len() == 2 && ((use_check && pair_dup.get("R1").unwrap().len() == pair_dup.get("R2").unwrap().len()) || (!use_check)) { [INFO] [stderr] 288 | can_consensus_v.push(key_dupGroup.to_string()); [INFO] [stderr] 289 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::prelude` [INFO] [stderr] --> src/main.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | use std::io::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `consensus_base` [INFO] [stderr] --> src/main.rs:139:9 [INFO] [stderr] | [INFO] [stderr] 139 | let consensus_base:Vec = Vec::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using `_consensus_base` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `consensus_source_reads` [INFO] [stderr] --> src/main.rs:144:13 [INFO] [stderr] | [INFO] [stderr] 144 | let mut consensus_source_reads = String::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using `_consensus_source_reads` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `chrom` [INFO] [stderr] --> src/main.rs:283:121 [INFO] [stderr] | [INFO] [stderr] 283 | fn block_consensus(pd:& mut HashMap, Vec, Vec, CigarStringView, bool)>>>, chrom: i32, use_check:bool, min_t_s: &u32, min_t_p: &f32, o_r1: & mut File, o_r2: & mut File, need_trim:bool) { [INFO] [stderr] | ^^^^^ help: consider using `_chrom` instead [INFO] [stderr] [INFO] [stderr] warning: value assigned to `new_seq_b` is never read [INFO] [stderr] --> src/main.rs:370:21 [INFO] [stderr] | [INFO] [stderr] 370 | let mut new_seq_b:Vec = Vec::new(); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:74:9 [INFO] [stderr] | [INFO] [stderr] 74 | let mut pair; [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:75:9 [INFO] [stderr] | [INFO] [stderr] 75 | let mut strand; [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:76:9 [INFO] [stderr] | [INFO] [stderr] 76 | let mut aln_pos; [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:144:9 [INFO] [stderr] | [INFO] [stderr] 144 | let mut consensus_source_reads = String::new(); [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:151:9 [INFO] [stderr] | [INFO] [stderr] 151 | let mut top_cigar:&CigarStringView; [INFO] [stderr] | ----^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:338:9 [INFO] [stderr] | [INFO] [stderr] 338 | let mut need_trim:bool; [INFO] [stderr] | ----^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:355:9 [INFO] [stderr] | [INFO] [stderr] 355 | let mut chrom = 0; [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/main.rs:28:25 [INFO] [stderr] | [INFO] [stderr] 28 | fn reverse_complement(v:&Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:31:18 [INFO] [stderr] | [INFO] [stderr] 31 | let c_r = match c { [INFO] [stderr] | __________________^ [INFO] [stderr] 32 | | &65u8 => 84u8, // A -> T [INFO] [stderr] 33 | | &84u8 => 65u8, // T -> A [INFO] [stderr] 34 | | &67u8 => 71u8, // C -> G [INFO] [stderr] ... | [INFO] [stderr] 37 | | [INFO] [stderr] 38 | | }; [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] 31 | let c_r = match *c { [INFO] [stderr] 32 | 65u8 => 84u8, // A -> T [INFO] [stderr] 33 | 84u8 => 65u8, // T -> A [INFO] [stderr] 34 | 67u8 => 71u8, // C -> G [INFO] [stderr] 35 | 71u8 => 67u8, // G -> C [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:52:20 [INFO] [stderr] | [INFO] [stderr] 52 | fn check_flag(flag:&u16) -> bool { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `u16` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/main.rs:61:5 [INFO] [stderr] | [INFO] [stderr] 61 | / if flag_set.contains(flag) { [INFO] [stderr] 62 | | true [INFO] [stderr] 63 | | } else { [INFO] [stderr] 64 | | false [INFO] [stderr] 65 | | } [INFO] [stderr] | |_____^ help: you can reduce it to: `flag_set.contains(flag)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: function `bamLineParse` should have a snake case name such as `bam_line_parse` [INFO] [stderr] --> src/main.rs:68:1 [INFO] [stderr] | [INFO] [stderr] 68 | / fn bamLineParse(record:&Record) -> (String, String, String, i32, i32){ [INFO] [stderr] 69 | | [INFO] [stderr] 70 | | let qname_str = String::from_utf8_lossy(record.qname()).to_string(); [INFO] [stderr] 71 | | let temp_v:Vec<&str> = qname_str.split('#').collect(); [INFO] [stderr] ... | [INFO] [stderr] 97 | | (index, pair.to_string(), strand.to_string(), insert_size.abs(), aln_pos) [INFO] [stderr] 98 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/main.rs:100:26 [INFO] [stderr] | [INFO] [stderr] 100 | fn trim_softclip(seq_raw:&Vec, qual_raw:&Vec, top_cigar:&CigarStringView, is_reverse:bool) -> (Vec, Vec) { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/main.rs:100:45 [INFO] [stderr] | [INFO] [stderr] 100 | fn trim_softclip(seq_raw:&Vec, qual_raw:&Vec, top_cigar:&CigarStringView, is_reverse:bool) -> (Vec, Vec) { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/main.rs:138:46 [INFO] [stderr] | [INFO] [stderr] 138 | fn dup2consensus_work(group_k:&str, pair_dup:& Vec<(Vec, Vec, Vec, CigarStringView, bool)>, pair_flag: &str, o_buff: & mut File, min_t_s: &u32, min_t_p: &f32, need_trim:bool) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(Vec, Vec, Vec, CigarStringView, bool)]` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/main.rs:138:46 [INFO] [stderr] | [INFO] [stderr] 138 | fn dup2consensus_work(group_k:&str, pair_dup:& Vec<(Vec, Vec, Vec, CigarStringView, bool)>, pair_flag: &str, o_buff: & mut File, min_t_s: &u32, min_t_p: &f32, need_trim:bool) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:138:151 [INFO] [stderr] | [INFO] [stderr] 138 | fn dup2consensus_work(group_k:&str, pair_dup:& Vec<(Vec, Vec, Vec, CigarStringView, bool)>, pair_flag: &str, o_buff: & mut File, min_t_s: &u32, min_t_p: &f32, need_trim:bool) { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `u32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:138:166 [INFO] [stderr] | [INFO] [stderr] 138 | fn dup2consensus_work(group_k:&str, pair_dup:& Vec<(Vec, Vec, Vec, CigarStringView, bool)>, pair_flag: &str, o_buff: & mut File, min_t_s: &u32, min_t_p: &f32, need_trim:bool) { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: variable `baseEach_num_record` should have a snake case name such as `base_each_num_record` [INFO] [stderr] --> src/main.rs:147:9 [INFO] [stderr] | [INFO] [stderr] 147 | let mut baseEach_num_record = String::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `baseEach_percent_record` should have a snake case name such as `base_each_percent_record` [INFO] [stderr] --> src/main.rs:148:9 [INFO] [stderr] | [INFO] [stderr] 148 | let mut baseEach_percent_record = String::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:171:25 [INFO] [stderr] | [INFO] [stderr] 171 | *q_p += tup.1[pos] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u32::from(tup.1[pos])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/main.rs:173:17 [INFO] [stderr] | [INFO] [stderr] 173 | / if !base_position.contains_key(&pos) { [INFO] [stderr] 174 | | let mut base_count:HashMap<&u8, u32> = HashMap::new(); [INFO] [stderr] 175 | | *base_count.entry(base).or_insert(0) += 1; [INFO] [stderr] 176 | | base_position.insert(pos, base_count); [INFO] [stderr] 177 | | } else { [INFO] [stderr] 178 | | *base_position.get_mut(&pos).unwrap().entry(base).or_insert(0) += 1; [INFO] [stderr] 179 | | } [INFO] [stderr] | |_________________^ help: consider using: `base_position.entry(pos)` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:190:21 [INFO] [stderr] | [INFO] [stderr] 190 | top_cigar = cigar_view_h.get(top_cigar_string).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&cigar_view_h[top_cigar_string]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:232:13 [INFO] [stderr] | [INFO] [stderr] 232 | / let mut str_percent:String; [INFO] [stderr] 233 | | if top_base_percent < 1.0f32 { [INFO] [stderr] 234 | | str_percent = format!("{}", top_base_percent); [INFO] [stderr] 235 | | } else { [INFO] [stderr] 236 | | str_percent = String::from("."); [INFO] [stderr] 237 | | } [INFO] [stderr] | |_____________^ help: it is more idiomatic to write: `let str_percent = if top_base_percent < 1.0f32 { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { String::from(".") };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:197:24 [INFO] [stderr] | [INFO] [stderr] 197 | let p_n = *num_position.get(&i).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&num_position[&i]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:198:16 [INFO] [stderr] | [INFO] [stderr] 198 | if num_position.get(&i).unwrap() >= min_t_s { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&num_position[&i]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:199:32 [INFO] [stderr] | [INFO] [stderr] 199 | let top_base = base_position.get(&i).unwrap().iter() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&base_position[&i]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:202:35 [INFO] [stderr] | [INFO] [stderr] 202 | let top_base_n = *base_position.get(&i).unwrap().get(top_base).unwrap() as f32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&base_position[&i]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:209:29 [INFO] [stderr] | [INFO] [stderr] 209 | let sum_qual = *qual_position.get(&i).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&qual_position[&i]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:214:16 [INFO] [stderr] | [INFO] [stderr] 214 | if baseEach_num_record.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `baseEach_num_record.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:239:16 [INFO] [stderr] | [INFO] [stderr] 239 | if (baseEach_percent_record.len() > 0) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!baseEach_percent_record.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: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/main.rs:264:5 [INFO] [stderr] | [INFO] [stderr] 264 | o_buff.write(&fq_id.as_bytes()).unwrap(); [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: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/main.rs:266:9 [INFO] [stderr] | [INFO] [stderr] 266 | o_buff.write(b"\t").unwrap(); [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:267:9 [INFO] [stderr] | [INFO] [stderr] 267 | o_buff.write(&member_record.2); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/main.rs:268:9 [INFO] [stderr] | [INFO] [stderr] 268 | o_buff.write(b"|").unwrap(); [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:269:9 [INFO] [stderr] | [INFO] [stderr] 269 | o_buff.write(&member_record.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/main.rs:270:9 [INFO] [stderr] | [INFO] [stderr] 270 | o_buff.write(b"|").unwrap(); [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:272:9 [INFO] [stderr] | [INFO] [stderr] 272 | o_buff.write(&real_qual_temp); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:274:5 [INFO] [stderr] | [INFO] [stderr] 274 | o_buff.write(b"\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/main.rs:276:5 [INFO] [stderr] | [INFO] [stderr] 276 | o_buff.write(&seq_consensus).unwrap(); [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:277:5 [INFO] [stderr] | [INFO] [stderr] 277 | o_buff.write(b"\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/main.rs:278:5 [INFO] [stderr] | [INFO] [stderr] 278 | o_buff.write(b"+\n").unwrap(); [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/main.rs:279:5 [INFO] [stderr] | [INFO] [stderr] 279 | o_buff.write(&qual_consnesus).unwrap(); [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:280:5 [INFO] [stderr] | [INFO] [stderr] 280 | o_buff.write(b"\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/main.rs:288:16 [INFO] [stderr] | [INFO] [stderr] 288 | if (use_check && pair_dup.get("R1").unwrap().len() == pair_dup.get("R2").unwrap().len()) || (!use_check){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 288 | if pair_dup.get("R1").unwrap().len() == pair_dup.get("R2").unwrap().len() || !use_check{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 288 | if !(use_check && pair_dup.get("R1").unwrap().len() != pair_dup.get("R2").unwrap().len()){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/main.rs:283:24 [INFO] [stderr] | [INFO] [stderr] 283 | fn block_consensus(pd:& mut HashMap, Vec, Vec, CigarStringView, bool)>>>, chrom: i32, use_check:bool, min_t_s: &u32, min_t_p: &f32, o_r1: & mut File, o_r2: & mut File, need_trim:bool) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/main.rs:283:1 [INFO] [stderr] | [INFO] [stderr] 283 | / fn block_consensus(pd:& mut HashMap, Vec, Vec, CigarStringView, bool)>>>, chrom: i32, use_check:bool, min_t_s: &u32, min_t_p: &f32, o_r1: & mut File, o_r2: & mut File, need_trim:bool) { [INFO] [stderr] 284 | | let mut can_consensus_v:Vec = Vec::new(); [INFO] [stderr] 285 | | [INFO] [stderr] 286 | | for (key_dupGroup, pair_dup) in pd.iter() { [INFO] [stderr] ... | [INFO] [stderr] 298 | | } [INFO] [stderr] 299 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:283:158 [INFO] [stderr] | [INFO] [stderr] 283 | fn block_consensus(pd:& mut HashMap, Vec, Vec, CigarStringView, bool)>>>, chrom: i32, use_check:bool, min_t_s: &u32, min_t_p: &f32, o_r1: & mut File, o_r2: & mut File, need_trim:bool) { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `u32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:283:173 [INFO] [stderr] | [INFO] [stderr] 283 | fn block_consensus(pd:& mut HashMap, Vec, Vec, CigarStringView, bool)>>>, chrom: i32, use_check:bool, min_t_s: &u32, min_t_p: &f32, o_r1: & mut File, o_r2: & mut File, need_trim:bool) { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: variable `key_dupGroup` should have a snake case name such as `key_dup_group` [INFO] [stderr] --> src/main.rs:286:10 [INFO] [stderr] | [INFO] [stderr] 286 | for (key_dupGroup, pair_dup) in pd.iter() { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:338:5 [INFO] [stderr] | [INFO] [stderr] 338 | / let mut need_trim:bool; [INFO] [stderr] 339 | | if matches.is_present("need_trim") { [INFO] [stderr] 340 | | need_trim = true; [INFO] [stderr] 341 | | } else { [INFO] [stderr] 342 | | need_trim = false; [INFO] [stderr] 343 | | } [INFO] [stderr] | |_____^ help: it is more idiomatic to write: `let need_trim = if matches.is_present("need_trim") { true } else { false };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/main.rs:357:32 [INFO] [stderr] | [INFO] [stderr] 357 | let mut position_dupGroup: HashMap, Vec, Vec, CigarStringView, bool)>>> = HashMap::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: variable `position_dupGroup` should have a snake case name such as `position_dup_group` [INFO] [stderr] --> src/main.rs:357:9 [INFO] [stderr] | [INFO] [stderr] 357 | let mut position_dupGroup: HashMap, Vec, Vec, CigarStringView, bool)>>> = HashMap::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `key_dupGroup` should have a snake case name such as `key_dup_group` [INFO] [stderr] --> src/main.rs:387:17 [INFO] [stderr] | [INFO] [stderr] 387 | let key_dupGroup = format!("{}_{}_{}_{}{}", index, chrom, aln_pos, strand, insert_size); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/main.rs:388:13 [INFO] [stderr] | [INFO] [stderr] 388 | / if position_dupGroup.contains_key(&key_dupGroup) { [INFO] [stderr] 389 | | position_dupGroup.get_mut(&key_dupGroup).unwrap().entry(pair).or_insert(Vec::new()).push((new_seq_b, new_qual_b, qname, cigar_view, is_reverse)); [INFO] [stderr] 390 | | [INFO] [stderr] 391 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 394 | | position_dupGroup.insert(key_dupGroup, pair_dup); [INFO] [stderr] 395 | | } [INFO] [stderr] | |_____________^ help: consider using: `position_dupGroup.entry(key_dupGroup)` [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: use of `or_insert` followed by a function call [INFO] [stderr] --> src/main.rs:389:83 [INFO] [stderr] | [INFO] [stderr] 389 | position_dupGroup.get_mut(&key_dupGroup).unwrap().entry(pair).or_insert(Vec::new()).push((new_seq_b, new_qual_b, qname, cigar_view, is_reverse)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(Vec::new)` [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: unused import: `std::io::prelude` [INFO] [stderr] --> src/main.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | use std::io::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: aborting due to 7 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `consensus`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: unused variable: `consensus_base` [INFO] [stderr] --> src/main.rs:139:9 [INFO] [stderr] | [INFO] [stderr] 139 | let consensus_base:Vec = Vec::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using `_consensus_base` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `consensus_source_reads` [INFO] [stderr] --> src/main.rs:144:13 [INFO] [stderr] | [INFO] [stderr] 144 | let mut consensus_source_reads = String::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using `_consensus_source_reads` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `chrom` [INFO] [stderr] --> src/main.rs:283:121 [INFO] [stderr] | [INFO] [stderr] 283 | fn block_consensus(pd:& mut HashMap, Vec, Vec, CigarStringView, bool)>>>, chrom: i32, use_check:bool, min_t_s: &u32, min_t_p: &f32, o_r1: & mut File, o_r2: & mut File, need_trim:bool) { [INFO] [stderr] | ^^^^^ help: consider using `_chrom` instead [INFO] [stderr] [INFO] [stderr] warning: value assigned to `new_seq_b` is never read [INFO] [stderr] --> src/main.rs:370:21 [INFO] [stderr] | [INFO] [stderr] 370 | let mut new_seq_b:Vec = Vec::new(); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:74:9 [INFO] [stderr] | [INFO] [stderr] 74 | let mut pair; [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:75:9 [INFO] [stderr] | [INFO] [stderr] 75 | let mut strand; [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:76:9 [INFO] [stderr] | [INFO] [stderr] 76 | let mut aln_pos; [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:144:9 [INFO] [stderr] | [INFO] [stderr] 144 | let mut consensus_source_reads = String::new(); [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:151:9 [INFO] [stderr] | [INFO] [stderr] 151 | let mut top_cigar:&CigarStringView; [INFO] [stderr] | ----^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:338:9 [INFO] [stderr] | [INFO] [stderr] 338 | let mut need_trim:bool; [INFO] [stderr] | ----^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:355:9 [INFO] [stderr] | [INFO] [stderr] 355 | let mut chrom = 0; [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/main.rs:28:25 [INFO] [stderr] | [INFO] [stderr] 28 | fn reverse_complement(v:&Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:31:18 [INFO] [stderr] | [INFO] [stderr] 31 | let c_r = match c { [INFO] [stderr] | __________________^ [INFO] [stderr] 32 | | &65u8 => 84u8, // A -> T [INFO] [stderr] 33 | | &84u8 => 65u8, // T -> A [INFO] [stderr] 34 | | &67u8 => 71u8, // C -> G [INFO] [stderr] ... | [INFO] [stderr] 37 | | [INFO] [stderr] 38 | | }; [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] 31 | let c_r = match *c { [INFO] [stderr] 32 | 65u8 => 84u8, // A -> T [INFO] [stderr] 33 | 84u8 => 65u8, // T -> A [INFO] [stderr] 34 | 67u8 => 71u8, // C -> G [INFO] [stderr] 35 | 71u8 => 67u8, // G -> C [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:52:20 [INFO] [stderr] | [INFO] [stderr] 52 | fn check_flag(flag:&u16) -> bool { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `u16` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/main.rs:61:5 [INFO] [stderr] | [INFO] [stderr] 61 | / if flag_set.contains(flag) { [INFO] [stderr] 62 | | true [INFO] [stderr] 63 | | } else { [INFO] [stderr] 64 | | false [INFO] [stderr] 65 | | } [INFO] [stderr] | |_____^ help: you can reduce it to: `flag_set.contains(flag)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: function `bamLineParse` should have a snake case name such as `bam_line_parse` [INFO] [stderr] --> src/main.rs:68:1 [INFO] [stderr] | [INFO] [stderr] 68 | / fn bamLineParse(record:&Record) -> (String, String, String, i32, i32){ [INFO] [stderr] 69 | | [INFO] [stderr] 70 | | let qname_str = String::from_utf8_lossy(record.qname()).to_string(); [INFO] [stderr] 71 | | let temp_v:Vec<&str> = qname_str.split('#').collect(); [INFO] [stderr] ... | [INFO] [stderr] 97 | | (index, pair.to_string(), strand.to_string(), insert_size.abs(), aln_pos) [INFO] [stderr] 98 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/main.rs:100:26 [INFO] [stderr] | [INFO] [stderr] 100 | fn trim_softclip(seq_raw:&Vec, qual_raw:&Vec, top_cigar:&CigarStringView, is_reverse:bool) -> (Vec, Vec) { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/main.rs:100:45 [INFO] [stderr] | [INFO] [stderr] 100 | fn trim_softclip(seq_raw:&Vec, qual_raw:&Vec, top_cigar:&CigarStringView, is_reverse:bool) -> (Vec, Vec) { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/main.rs:138:46 [INFO] [stderr] | [INFO] [stderr] 138 | fn dup2consensus_work(group_k:&str, pair_dup:& Vec<(Vec, Vec, Vec, CigarStringView, bool)>, pair_flag: &str, o_buff: & mut File, min_t_s: &u32, min_t_p: &f32, need_trim:bool) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[(Vec, Vec, Vec, CigarStringView, bool)]` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/main.rs:138:46 [INFO] [stderr] | [INFO] [stderr] 138 | fn dup2consensus_work(group_k:&str, pair_dup:& Vec<(Vec, Vec, Vec, CigarStringView, bool)>, pair_flag: &str, o_buff: & mut File, min_t_s: &u32, min_t_p: &f32, need_trim:bool) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:138:151 [INFO] [stderr] | [INFO] [stderr] 138 | fn dup2consensus_work(group_k:&str, pair_dup:& Vec<(Vec, Vec, Vec, CigarStringView, bool)>, pair_flag: &str, o_buff: & mut File, min_t_s: &u32, min_t_p: &f32, need_trim:bool) { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `u32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:138:166 [INFO] [stderr] | [INFO] [stderr] 138 | fn dup2consensus_work(group_k:&str, pair_dup:& Vec<(Vec, Vec, Vec, CigarStringView, bool)>, pair_flag: &str, o_buff: & mut File, min_t_s: &u32, min_t_p: &f32, need_trim:bool) { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: variable `baseEach_num_record` should have a snake case name such as `base_each_num_record` [INFO] [stderr] --> src/main.rs:147:9 [INFO] [stderr] | [INFO] [stderr] 147 | let mut baseEach_num_record = String::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `baseEach_percent_record` should have a snake case name such as `base_each_percent_record` [INFO] [stderr] --> src/main.rs:148:9 [INFO] [stderr] | [INFO] [stderr] 148 | let mut baseEach_percent_record = String::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:171:25 [INFO] [stderr] | [INFO] [stderr] 171 | *q_p += tup.1[pos] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u32::from(tup.1[pos])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/main.rs:173:17 [INFO] [stderr] | [INFO] [stderr] 173 | / if !base_position.contains_key(&pos) { [INFO] [stderr] 174 | | let mut base_count:HashMap<&u8, u32> = HashMap::new(); [INFO] [stderr] 175 | | *base_count.entry(base).or_insert(0) += 1; [INFO] [stderr] 176 | | base_position.insert(pos, base_count); [INFO] [stderr] 177 | | } else { [INFO] [stderr] 178 | | *base_position.get_mut(&pos).unwrap().entry(base).or_insert(0) += 1; [INFO] [stderr] 179 | | } [INFO] [stderr] | |_________________^ help: consider using: `base_position.entry(pos)` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:190:21 [INFO] [stderr] | [INFO] [stderr] 190 | top_cigar = cigar_view_h.get(top_cigar_string).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&cigar_view_h[top_cigar_string]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:232:13 [INFO] [stderr] | [INFO] [stderr] 232 | / let mut str_percent:String; [INFO] [stderr] 233 | | if top_base_percent < 1.0f32 { [INFO] [stderr] 234 | | str_percent = format!("{}", top_base_percent); [INFO] [stderr] 235 | | } else { [INFO] [stderr] 236 | | str_percent = String::from("."); [INFO] [stderr] 237 | | } [INFO] [stderr] | |_____________^ help: it is more idiomatic to write: `let str_percent = if top_base_percent < 1.0f32 { $ crate :: fmt :: format ( format_args ! ( $ ( $ arg ) * ) ) } else { String::from(".") };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:197:24 [INFO] [stderr] | [INFO] [stderr] 197 | let p_n = *num_position.get(&i).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&num_position[&i]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:198:16 [INFO] [stderr] | [INFO] [stderr] 198 | if num_position.get(&i).unwrap() >= min_t_s { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&num_position[&i]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:199:32 [INFO] [stderr] | [INFO] [stderr] 199 | let top_base = base_position.get(&i).unwrap().iter() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&base_position[&i]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:202:35 [INFO] [stderr] | [INFO] [stderr] 202 | let top_base_n = *base_position.get(&i).unwrap().get(top_base).unwrap() as f32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&base_position[&i]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:209:29 [INFO] [stderr] | [INFO] [stderr] 209 | let sum_qual = *qual_position.get(&i).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&qual_position[&i]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:214:16 [INFO] [stderr] | [INFO] [stderr] 214 | if baseEach_num_record.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `baseEach_num_record.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:239:16 [INFO] [stderr] | [INFO] [stderr] 239 | if (baseEach_percent_record.len() > 0) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!baseEach_percent_record.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: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/main.rs:264:5 [INFO] [stderr] | [INFO] [stderr] 264 | o_buff.write(&fq_id.as_bytes()).unwrap(); [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: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/main.rs:266:9 [INFO] [stderr] | [INFO] [stderr] 266 | o_buff.write(b"\t").unwrap(); [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:267:9 [INFO] [stderr] | [INFO] [stderr] 267 | o_buff.write(&member_record.2); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/main.rs:268:9 [INFO] [stderr] | [INFO] [stderr] 268 | o_buff.write(b"|").unwrap(); [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:269:9 [INFO] [stderr] | [INFO] [stderr] 269 | o_buff.write(&member_record.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/main.rs:270:9 [INFO] [stderr] | [INFO] [stderr] 270 | o_buff.write(b"|").unwrap(); [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:272:9 [INFO] [stderr] | [INFO] [stderr] 272 | o_buff.write(&real_qual_temp); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:274:5 [INFO] [stderr] | [INFO] [stderr] 274 | o_buff.write(b"\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/main.rs:276:5 [INFO] [stderr] | [INFO] [stderr] 276 | o_buff.write(&seq_consensus).unwrap(); [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:277:5 [INFO] [stderr] | [INFO] [stderr] 277 | o_buff.write(b"\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/main.rs:278:5 [INFO] [stderr] | [INFO] [stderr] 278 | o_buff.write(b"+\n").unwrap(); [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/main.rs:279:5 [INFO] [stderr] | [INFO] [stderr] 279 | o_buff.write(&qual_consnesus).unwrap(); [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/main.rs:280:5 [INFO] [stderr] | [INFO] [stderr] 280 | o_buff.write(b"\n"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/main.rs:288:16 [INFO] [stderr] | [INFO] [stderr] 288 | if (use_check && pair_dup.get("R1").unwrap().len() == pair_dup.get("R2").unwrap().len()) || (!use_check){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 288 | if pair_dup.get("R1").unwrap().len() == pair_dup.get("R2").unwrap().len() || !use_check{ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] 288 | if !(use_check && pair_dup.get("R1").unwrap().len() != pair_dup.get("R2").unwrap().len()){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/main.rs:283:24 [INFO] [stderr] | [INFO] [stderr] 283 | fn block_consensus(pd:& mut HashMap, Vec, Vec, CigarStringView, bool)>>>, chrom: i32, use_check:bool, min_t_s: &u32, min_t_p: &f32, o_r1: & mut File, o_r2: & mut File, need_trim:bool) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/main.rs:283:1 [INFO] [stderr] | [INFO] [stderr] 283 | / fn block_consensus(pd:& mut HashMap, Vec, Vec, CigarStringView, bool)>>>, chrom: i32, use_check:bool, min_t_s: &u32, min_t_p: &f32, o_r1: & mut File, o_r2: & mut File, need_trim:bool) { [INFO] [stderr] 284 | | let mut can_consensus_v:Vec = Vec::new(); [INFO] [stderr] 285 | | [INFO] [stderr] 286 | | for (key_dupGroup, pair_dup) in pd.iter() { [INFO] [stderr] ... | [INFO] [stderr] 298 | | } [INFO] [stderr] 299 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:283:158 [INFO] [stderr] | [INFO] [stderr] 283 | fn block_consensus(pd:& mut HashMap, Vec, Vec, CigarStringView, bool)>>>, chrom: i32, use_check:bool, min_t_s: &u32, min_t_p: &f32, o_r1: & mut File, o_r2: & mut File, need_trim:bool) { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `u32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:283:173 [INFO] [stderr] | [INFO] [stderr] 283 | fn block_consensus(pd:& mut HashMap, Vec, Vec, CigarStringView, bool)>>>, chrom: i32, use_check:bool, min_t_s: &u32, min_t_p: &f32, o_r1: & mut File, o_r2: & mut File, need_trim:bool) { [INFO] [stderr] | ^^^^ help: consider passing by value instead: `f32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: variable `key_dupGroup` should have a snake case name such as `key_dup_group` [INFO] [stderr] --> src/main.rs:286:10 [INFO] [stderr] | [INFO] [stderr] 286 | for (key_dupGroup, pair_dup) in pd.iter() { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:338:5 [INFO] [stderr] | [INFO] [stderr] 338 | / let mut need_trim:bool; [INFO] [stderr] 339 | | if matches.is_present("need_trim") { [INFO] [stderr] 340 | | need_trim = true; [INFO] [stderr] 341 | | } else { [INFO] [stderr] 342 | | need_trim = false; [INFO] [stderr] 343 | | } [INFO] [stderr] | |_____^ help: it is more idiomatic to write: `let need_trim = if matches.is_present("need_trim") { true } else { false };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/main.rs:357:32 [INFO] [stderr] | [INFO] [stderr] 357 | let mut position_dupGroup: HashMap, Vec, Vec, CigarStringView, bool)>>> = HashMap::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: variable `position_dupGroup` should have a snake case name such as `position_dup_group` [INFO] [stderr] --> src/main.rs:357:9 [INFO] [stderr] | [INFO] [stderr] 357 | let mut position_dupGroup: HashMap, Vec, Vec, CigarStringView, bool)>>> = HashMap::new(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `key_dupGroup` should have a snake case name such as `key_dup_group` [INFO] [stderr] --> src/main.rs:387:17 [INFO] [stderr] | [INFO] [stderr] 387 | let key_dupGroup = format!("{}_{}_{}_{}{}", index, chrom, aln_pos, strand, insert_size); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/main.rs:388:13 [INFO] [stderr] | [INFO] [stderr] 388 | / if position_dupGroup.contains_key(&key_dupGroup) { [INFO] [stderr] 389 | | position_dupGroup.get_mut(&key_dupGroup).unwrap().entry(pair).or_insert(Vec::new()).push((new_seq_b, new_qual_b, qname, cigar_view, is_reverse)); [INFO] [stderr] 390 | | [INFO] [stderr] 391 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 394 | | position_dupGroup.insert(key_dupGroup, pair_dup); [INFO] [stderr] 395 | | } [INFO] [stderr] | |_____________^ help: consider using: `position_dupGroup.entry(key_dupGroup)` [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: use of `or_insert` followed by a function call [INFO] [stderr] --> src/main.rs:389:83 [INFO] [stderr] | [INFO] [stderr] 389 | position_dupGroup.get_mut(&key_dupGroup).unwrap().entry(pair).or_insert(Vec::new()).push((new_seq_b, new_qual_b, qname, cigar_view, is_reverse)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(Vec::new)` [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] error: aborting due to 7 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `consensus`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "54af59819d9aad85bbccc51fc3c59a8fe5fb30533b2e28818b30e806fcbd5d6b"` [INFO] running `"docker" "rm" "-f" "54af59819d9aad85bbccc51fc3c59a8fe5fb30533b2e28818b30e806fcbd5d6b"` [INFO] [stdout] 54af59819d9aad85bbccc51fc3c59a8fe5fb30533b2e28818b30e806fcbd5d6b