[INFO] crate fasten 0.1.13 is already in cache [INFO] extracting crate fasten 0.1.13 into work/ex/clippy-test-run/sources/stable/reg/fasten/0.1.13 [INFO] extracting crate fasten 0.1.13 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/fasten/0.1.13 [INFO] validating manifest of fasten-0.1.13 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 fasten-0.1.13 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 fasten-0.1.13 [INFO] finished frobbing fasten-0.1.13 [INFO] frobbed toml for fasten-0.1.13 written to work/ex/clippy-test-run/sources/stable/reg/fasten/0.1.13/Cargo.toml [INFO] started frobbing fasten-0.1.13 [INFO] finished frobbing fasten-0.1.13 [INFO] frobbed toml for fasten-0.1.13 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/fasten/0.1.13/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 fasten-0.1.13 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/fasten/0.1.13:/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] e23ecc15233c93006e1ae1d79dec0c7cee54e571b7ada1bf0ced9f5f4f559723 [INFO] running `"docker" "start" "-a" "e23ecc15233c93006e1ae1d79dec0c7cee54e571b7ada1bf0ced9f5f4f559723"` [INFO] [stderr] Checking multiqueue v0.3.2 [INFO] [stderr] Checking statistical v0.1.1 [INFO] [stderr] Checking fasten v0.1.13 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/io/seq.rs:76:13 [INFO] [stderr] | [INFO] [stderr] 76 | thresholds: thresholds, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `thresholds` [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/io/seq.rs:76:13 [INFO] [stderr] | [INFO] [stderr] 76 | thresholds: thresholds, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `thresholds` [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: unneeded return statement [INFO] [stderr] --> src/io/fastq.rs:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | return Some(seq) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(seq)` [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/io/fastq.rs:168:13 [INFO] [stderr] | [INFO] [stderr] 168 | return Some(seq) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(seq)` [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/io/seq.rs:71:9 [INFO] [stderr] | [INFO] [stderr] 71 | / return Seq{ [INFO] [stderr] 72 | | id: id_copy, [INFO] [stderr] 73 | | seq: seq.clone(), [INFO] [stderr] 74 | | qual: qual.clone(), [INFO] [stderr] 75 | | pairid: String::new(), [INFO] [stderr] 76 | | thresholds: thresholds, [INFO] [stderr] 77 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 71 | Seq{ [INFO] [stderr] 72 | id: id_copy, [INFO] [stderr] 73 | seq: seq.clone(), [INFO] [stderr] 74 | qual: qual.clone(), [INFO] [stderr] 75 | pairid: String::new(), [INFO] [stderr] 76 | thresholds: thresholds, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/io/seq.rs:81:9 [INFO] [stderr] | [INFO] [stderr] 81 | return Seq::new(&String::new(),&String::new(),&String::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Seq::new(&String::new(),&String::new(),&String::new())` [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/io/seq.rs:88:9 [INFO] [stderr] | [INFO] [stderr] 88 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [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/io/seq.rs:105:9 [INFO] [stderr] | [INFO] [stderr] 105 | / return Seq{ [INFO] [stderr] 106 | | id: id.to_string(), [INFO] [stderr] 107 | | seq: seq.to_string(), [INFO] [stderr] 108 | | qual: qual.to_string(), [INFO] [stderr] 109 | | pairid: String::new(), [INFO] [stderr] 110 | | thresholds: HashMap::new(), [INFO] [stderr] 111 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 105 | Seq{ [INFO] [stderr] 106 | id: id.to_string(), [INFO] [stderr] 107 | seq: seq.to_string(), [INFO] [stderr] 108 | qual: qual.to_string(), [INFO] [stderr] 109 | pairid: String::new(), [INFO] [stderr] 110 | thresholds: HashMap::new(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/io/seq.rs:124:9 [INFO] [stderr] | [INFO] [stderr] 124 | return id_copy; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `id_copy` [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/io/seq.rs:215:9 [INFO] [stderr] | [INFO] [stderr] 215 | 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/io/seq.rs:228:9 [INFO] [stderr] | [INFO] [stderr] 228 | return entry; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `entry` [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 unit return type [INFO] [stderr] --> src/io/seq.rs:230:21 [INFO] [stderr] | [INFO] [stderr] 230 | fn print(&self) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/io/seq.rs:237:9 [INFO] [stderr] | [INFO] [stderr] 237 | / return Seq{ [INFO] [stderr] 238 | | id: self.id.clone(), [INFO] [stderr] 239 | | seq: self.seq.clone(), [INFO] [stderr] 240 | | qual: self.qual.clone(), [INFO] [stderr] 241 | | pairid: self.pairid.clone(), [INFO] [stderr] 242 | | thresholds: self.thresholds.clone(), [INFO] [stderr] 243 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 237 | Seq{ [INFO] [stderr] 238 | id: self.id.clone(), [INFO] [stderr] 239 | seq: self.seq.clone(), [INFO] [stderr] 240 | qual: self.qual.clone(), [INFO] [stderr] 241 | pairid: self.pairid.clone(), [INFO] [stderr] 242 | thresholds: self.thresholds.clone(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/lib.rs:24:16 [INFO] [stderr] | [INFO] [stderr] 24 | pub fn eexit() -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:54:5 [INFO] [stderr] | [INFO] [stderr] 54 | return opts; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `opts` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/io/seq.rs:41:17 [INFO] [stderr] | [INFO] [stderr] 41 | fn new (id: &String, seq: &String, qual: &String) -> Seq; [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/io/seq.rs:41:31 [INFO] [stderr] | [INFO] [stderr] 41 | fn new (id: &String, seq: &String, qual: &String) -> Seq; [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/io/seq.rs:41:46 [INFO] [stderr] | [INFO] [stderr] 41 | fn new (id: &String, seq: &String, qual: &String) -> Seq; [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/io/seq.rs:47:30 [INFO] [stderr] | [INFO] [stderr] 47 | fn from_string (seq_str: &String) -> Seq; [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/io/seq.rs:49:24 [INFO] [stderr] | [INFO] [stderr] 49 | fn sanitize_id(id: &String) -> (String); [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: length comparison to zero [INFO] [stderr] --> src/io/seq.rs:85:12 [INFO] [stderr] | [INFO] [stderr] 85 | if self.seq.len() == 0 && self.qual.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.seq.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/io/seq.rs:85:35 [INFO] [stderr] | [INFO] [stderr] 85 | if self.seq.len() == 0 && self.qual.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.qual.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/io/seq.rs:117:12 [INFO] [stderr] | [INFO] [stderr] 117 | if id.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `id.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `33` [INFO] [stderr] --> src/io/seq.rs:131:32 [INFO] [stderr] | [INFO] [stderr] 131 | let low_score :char = (33 + 0) as u8 as char; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/io/seq.rs:150:46 [INFO] [stderr] | [INFO] [stderr] 150 | new_qual.push_str(&self.qual[i..i+1]); [INFO] [stderr] | ^^^^^^ help: use: `i..=i` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `&self.qual.len()` [INFO] [stderr] --> src/io/seq.rs:164:23 [INFO] [stderr] | [INFO] [stderr] 164 | let mut trim3=&self.qual.len()-0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/io/seq.rs:220:12 [INFO] [stderr] | [INFO] [stderr] 220 | if self.id.len() > 0 && self.id.chars().nth(0).expect("Seq ID was not set") != '@' { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.id.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/io/fastq.rs:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | return Some(seq) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(seq)` [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/io/fastq.rs:168:13 [INFO] [stderr] | [INFO] [stderr] 168 | return Some(seq) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(seq)` [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/io/seq.rs:71:9 [INFO] [stderr] | [INFO] [stderr] 71 | / return Seq{ [INFO] [stderr] 72 | | id: id_copy, [INFO] [stderr] 73 | | seq: seq.clone(), [INFO] [stderr] 74 | | qual: qual.clone(), [INFO] [stderr] 75 | | pairid: String::new(), [INFO] [stderr] 76 | | thresholds: thresholds, [INFO] [stderr] 77 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 71 | Seq{ [INFO] [stderr] 72 | id: id_copy, [INFO] [stderr] 73 | seq: seq.clone(), [INFO] [stderr] 74 | qual: qual.clone(), [INFO] [stderr] 75 | pairid: String::new(), [INFO] [stderr] 76 | thresholds: thresholds, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/io/seq.rs:81:9 [INFO] [stderr] | [INFO] [stderr] 81 | return Seq::new(&String::new(),&String::new(),&String::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Seq::new(&String::new(),&String::new(),&String::new())` [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/io/seq.rs:88:9 [INFO] [stderr] | [INFO] [stderr] 88 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [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/io/seq.rs:105:9 [INFO] [stderr] | [INFO] [stderr] 105 | / return Seq{ [INFO] [stderr] 106 | | id: id.to_string(), [INFO] [stderr] 107 | | seq: seq.to_string(), [INFO] [stderr] 108 | | qual: qual.to_string(), [INFO] [stderr] 109 | | pairid: String::new(), [INFO] [stderr] 110 | | thresholds: HashMap::new(), [INFO] [stderr] 111 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 105 | Seq{ [INFO] [stderr] 106 | id: id.to_string(), [INFO] [stderr] 107 | seq: seq.to_string(), [INFO] [stderr] 108 | qual: qual.to_string(), [INFO] [stderr] 109 | pairid: String::new(), [INFO] [stderr] 110 | thresholds: HashMap::new(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/io/seq.rs:124:9 [INFO] [stderr] | [INFO] [stderr] 124 | return id_copy; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove `return` as shown: `id_copy` [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/io/seq.rs:215:9 [INFO] [stderr] | [INFO] [stderr] 215 | 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/io/seq.rs:228:9 [INFO] [stderr] | [INFO] [stderr] 228 | return entry; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `entry` [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 unit return type [INFO] [stderr] --> src/io/seq.rs:230:21 [INFO] [stderr] | [INFO] [stderr] 230 | fn print(&self) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/io/seq.rs:237:9 [INFO] [stderr] | [INFO] [stderr] 237 | / return Seq{ [INFO] [stderr] 238 | | id: self.id.clone(), [INFO] [stderr] 239 | | seq: self.seq.clone(), [INFO] [stderr] 240 | | qual: self.qual.clone(), [INFO] [stderr] 241 | | pairid: self.pairid.clone(), [INFO] [stderr] 242 | | thresholds: self.thresholds.clone(), [INFO] [stderr] 243 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 237 | Seq{ [INFO] [stderr] 238 | id: self.id.clone(), [INFO] [stderr] 239 | seq: self.seq.clone(), [INFO] [stderr] 240 | qual: self.qual.clone(), [INFO] [stderr] 241 | pairid: self.pairid.clone(), [INFO] [stderr] 242 | thresholds: self.thresholds.clone(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/lib.rs:24:16 [INFO] [stderr] | [INFO] [stderr] 24 | pub fn eexit() -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:54:5 [INFO] [stderr] | [INFO] [stderr] 54 | return opts; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `opts` [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: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/bin/fasten_shuffle.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | write!(file1,"{}\n",seq.to_string()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/bin/fasten_shuffle.rs:67:13 [INFO] [stderr] | [INFO] [stderr] 67 | write!(file2,"{}\n",seq.to_string()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/io/seq.rs:41:17 [INFO] [stderr] | [INFO] [stderr] 41 | fn new (id: &String, seq: &String, qual: &String) -> Seq; [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/io/seq.rs:41:31 [INFO] [stderr] | [INFO] [stderr] 41 | fn new (id: &String, seq: &String, qual: &String) -> Seq; [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/io/seq.rs:41:46 [INFO] [stderr] | [INFO] [stderr] 41 | fn new (id: &String, seq: &String, qual: &String) -> Seq; [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/io/seq.rs:47:30 [INFO] [stderr] | [INFO] [stderr] 47 | fn from_string (seq_str: &String) -> Seq; [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/io/seq.rs:49:24 [INFO] [stderr] | [INFO] [stderr] 49 | fn sanitize_id(id: &String) -> (String); [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: length comparison to zero [INFO] [stderr] --> src/io/seq.rs:85:12 [INFO] [stderr] | [INFO] [stderr] 85 | if self.seq.len() == 0 && self.qual.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.seq.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/io/seq.rs:85:35 [INFO] [stderr] | [INFO] [stderr] 85 | if self.seq.len() == 0 && self.qual.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.qual.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/io/seq.rs:117:12 [INFO] [stderr] | [INFO] [stderr] 117 | if id.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `id.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `33` [INFO] [stderr] --> src/io/seq.rs:131:32 [INFO] [stderr] | [INFO] [stderr] 131 | let low_score :char = (33 + 0) as u8 as char; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/io/seq.rs:150:46 [INFO] [stderr] | [INFO] [stderr] 150 | new_qual.push_str(&self.qual[i..i+1]); [INFO] [stderr] | ^^^^^^ help: use: `i..=i` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `&self.qual.len()` [INFO] [stderr] --> src/io/seq.rs:164:23 [INFO] [stderr] | [INFO] [stderr] 164 | let mut trim3=&self.qual.len()-0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/io/seq.rs:220:12 [INFO] [stderr] | [INFO] [stderr] 220 | if self.id.len() > 0 && self.id.chars().nth(0).expect("Seq ID was not set") != '@' { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.id.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/bin/fasten_pe.rs:131:5 [INFO] [stderr] | [INFO] [stderr] 131 | return 1; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `1` [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/bin/fasten_pe.rs:166:5 [INFO] [stderr] | [INFO] [stderr] 166 | return 1; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `1` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/bin/fasten_pe.rs:93:35 [INFO] [stderr] | [INFO] [stderr] 93 | fn is_paired_end_slash12(id1_ref: &Vec, id2_ref: &Vec) -> u8 { [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] 93 | fn is_paired_end_slash12(id1_ref: &[String], id2_ref: &Vec) -> u8 { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] help: change `id1_ref.clone()` to [INFO] [stderr] | [INFO] [stderr] 96 | let id1_vec = id1_ref.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/bin/fasten_pe.rs:93:58 [INFO] [stderr] | [INFO] [stderr] 93 | fn is_paired_end_slash12(id1_ref: &Vec, id2_ref: &Vec) -> u8 { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 93 | fn is_paired_end_slash12(id1_ref: &Vec, id2_ref: &[String]) -> u8 { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] help: change `id2_ref.clone()` to [INFO] [stderr] | [INFO] [stderr] 97 | let id2_vec = id2_ref.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/bin/fasten_pe.rs:135:33 [INFO] [stderr] | [INFO] [stderr] 135 | fn is_paired_end_miseq(id1_ref: &Vec, id2_ref: &Vec) -> u8 { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 135 | fn is_paired_end_miseq(id1_ref: &[String], id2_ref: &Vec) -> u8 { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] help: change `id1_ref.clone()` to [INFO] [stderr] | [INFO] [stderr] 137 | let id1_vec = id1_ref.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/bin/fasten_pe.rs:135:56 [INFO] [stderr] | [INFO] [stderr] 135 | fn is_paired_end_miseq(id1_ref: &Vec, id2_ref: &Vec) -> u8 { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 135 | fn is_paired_end_miseq(id1_ref: &Vec, id2_ref: &[String]) -> u8 { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] help: change `id2_ref.clone()` to [INFO] [stderr] | [INFO] [stderr] 138 | let id2_vec = id2_ref.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/bin/fasten_pe.rs:149:33 [INFO] [stderr] | [INFO] [stderr] 149 | let id1_tmp = id1.split(":").nth(6); [INFO] [stderr] | ^^^ help: try using a char instead: `':'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/bin/fasten_pe.rs:150:33 [INFO] [stderr] | [INFO] [stderr] 150 | let id2_tmp = id2.split(":").nth(6); [INFO] [stderr] | ^^^ help: try using a char instead: `':'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/bin/fasten_pe.rs:156:54 [INFO] [stderr] | [INFO] [stderr] 156 | let id1_read_number = id1_tmp.unwrap().split(" ").nth(1); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/bin/fasten_pe.rs:157:54 [INFO] [stderr] | [INFO] [stderr] 157 | let id2_read_number = id2_tmp.unwrap().split(" ").nth(1); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: the variable `num_lines` is used as a loop counter. Consider using `for (num_lines, item) in my_buffer.lines().enumerate()` or similar iterators [INFO] [stderr] --> src/bin/fasten_trim.rs:60:17 [INFO] [stderr] | [INFO] [stderr] 60 | for line in my_buffer.lines() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/bin/fasten_shuffle.rs:39:42 [INFO] [stderr] | [INFO] [stderr] 39 | fn deshuffle(matches: &getopts::Matches) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/bin/fasten_shuffle.rs:74:40 [INFO] [stderr] | [INFO] [stderr] 74 | fn shuffle(matches: &getopts::Matches) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/bin/fasten_shuffle.rs:117:5 [INFO] [stderr] | [INFO] [stderr] 117 | return seqs; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `seqs` [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: the variable `read_counter` is used as a loop counter. Consider using `for (read_counter, item) in fastq_reader.enumerate()` or similar iterators [INFO] [stderr] --> src/bin/fasten_shuffle.rs:61:16 [INFO] [stderr] | [INFO] [stderr] 61 | for seq in fastq_reader { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/bin/fasten_shuffle.rs:97:8 [INFO] [stderr] | [INFO] [stderr] 97 | if seqs2.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `seqs2.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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/bin/fasten_shuffle.rs:111:24 [INFO] [stderr] | [INFO] [stderr] 111 | fn read_seqs(filename: &String) -> Vec { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: the variable `line_counter` is used as a loop counter. Consider using `for (line_counter, item) in my_buffer.lines().enumerate()` or similar iterators [INFO] [stderr] --> src/bin/fasten_sample.rs:54:17 [INFO] [stderr] | [INFO] [stderr] 54 | for line in my_buffer.lines() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/bin/fasten_metrics.rs:137:5 [INFO] [stderr] | [INFO] [stderr] 137 | return avg_square_diff.sqrt(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `avg_square_diff.sqrt()` [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] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/bin/fasten_metrics.rs:80:37 [INFO] [stderr] | [INFO] [stderr] 80 | my_read_qual += qual_char as u8 as u32 - 33; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(qual_char as u8)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/bin/fasten_metrics.rs:125:28 [INFO] [stderr] | [INFO] [stderr] 125 | fn standard_deviation(vec :&Vec) -> f32{ [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [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: unneeded unit return type [INFO] [stderr] --> src/bin/fasten_randomize.rs:35:48 [INFO] [stderr] | [INFO] [stderr] 35 | fn print_reads_from_stdin(lines_per_read :u32) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/bin/fasten_randomize.rs:37:52 [INFO] [stderr] | [INFO] [stderr] 37 | let mut seqs :Vec = Vec::with_capacity(100000); [INFO] [stderr] | ^^^^^^ help: consider: `100_000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/bin/fasten_combine.rs:106:17 [INFO] [stderr] | [INFO] [stderr] 106 | return p; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `p` [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/bin/fasten_combine.rs:171:5 [INFO] [stderr] | [INFO] [stderr] 171 | return new_errors; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `new_errors` [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/bin/fasten_combine.rs:209:5 [INFO] [stderr] | [INFO] [stderr] 209 | return qual_out; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `qual_out` [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: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/bin/fasten_combine.rs:92:32 [INFO] [stderr] | [INFO] [stderr] 92 | let qual_int = qual_char as u8 as f32 - 33.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(qual_char as u8)` [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: use of `or_insert` followed by a function call [INFO] [stderr] --> src/bin/fasten_combine.rs:101:66 [INFO] [stderr] | [INFO] [stderr] 101 | let qual_vec = seq_error_rate.entry(seq_key.clone()).or_insert(Vec::new()); [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: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/bin/fasten_combine.rs:104:32 [INFO] [stderr] | [INFO] [stderr] 104 | let qual_int = qual_char as u8 as f32 - 33.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(qual_char as u8)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the variable `seq_counter` is used as a loop counter. Consider using `for (seq_counter, item) in seq_error_rate.enumerate()` or similar iterators [INFO] [stderr] --> src/bin/fasten_combine.rs:119:32 [INFO] [stderr] | [INFO] [stderr] 119 | for (seq,combined_qual) in seq_error_rate { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/bin/fasten_combine.rs:129:59 [INFO] [stderr] | [INFO] [stderr] 129 | if qual_recalc.is_infinite() || qual_recalc > max_qual as f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f32::from(max_qual)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/bin/fasten_combine.rs:130:31 [INFO] [stderr] | [INFO] [stderr] 130 | qual_recalc = max_qual as f32; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f32::from(max_qual)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/bin/fasten_combine.rs:161:35 [INFO] [stderr] | [INFO] [stderr] 161 | fn combine_error_vectors(errors1 :&Vec, errors2: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/bin/fasten_combine.rs:161:55 [INFO] [stderr] | [INFO] [stderr] 161 | fn combine_error_vectors(errors1 :&Vec, errors2: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/bin/fasten_combine.rs:182:20 [INFO] [stderr] | [INFO] [stderr] 182 | let max_qual = 'I' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'I' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/bin/fasten_combine.rs:183:20 [INFO] [stderr] | [INFO] [stderr] 183 | let min_qual = '!' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'!' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/bin/fasten_combine.rs:187:24 [INFO] [stderr] | [INFO] [stderr] 187 | let qual_int = qual_char as u8 as f32 - 33.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(qual_char as u8)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/bin/fasten_combine.rs:106:17 [INFO] [stderr] | [INFO] [stderr] 106 | return p; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `p` [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/bin/fasten_combine.rs:171:5 [INFO] [stderr] | [INFO] [stderr] 171 | return new_errors; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `new_errors` [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/bin/fasten_combine.rs:209:5 [INFO] [stderr] | [INFO] [stderr] 209 | return qual_out; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `qual_out` [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: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/bin/fasten_combine.rs:92:32 [INFO] [stderr] | [INFO] [stderr] 92 | let qual_int = qual_char as u8 as f32 - 33.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(qual_char as u8)` [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: use of `or_insert` followed by a function call [INFO] [stderr] --> src/bin/fasten_combine.rs:101:66 [INFO] [stderr] | [INFO] [stderr] 101 | let qual_vec = seq_error_rate.entry(seq_key.clone()).or_insert(Vec::new()); [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: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/bin/fasten_combine.rs:104:32 [INFO] [stderr] | [INFO] [stderr] 104 | let qual_int = qual_char as u8 as f32 - 33.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(qual_char as u8)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the variable `seq_counter` is used as a loop counter. Consider using `for (seq_counter, item) in seq_error_rate.enumerate()` or similar iterators [INFO] [stderr] --> src/bin/fasten_combine.rs:119:32 [INFO] [stderr] | [INFO] [stderr] 119 | for (seq,combined_qual) in seq_error_rate { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/bin/fasten_combine.rs:129:59 [INFO] [stderr] | [INFO] [stderr] 129 | if qual_recalc.is_infinite() || qual_recalc > max_qual as f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f32::from(max_qual)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/bin/fasten_combine.rs:130:31 [INFO] [stderr] | [INFO] [stderr] 130 | qual_recalc = max_qual as f32; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `f32::from(max_qual)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/bin/fasten_combine.rs:161:35 [INFO] [stderr] | [INFO] [stderr] 161 | fn combine_error_vectors(errors1 :&Vec, errors2: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/bin/fasten_combine.rs:161:55 [INFO] [stderr] | [INFO] [stderr] 161 | fn combine_error_vectors(errors1 :&Vec, errors2: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/bin/fasten_combine.rs:182:20 [INFO] [stderr] | [INFO] [stderr] 182 | let max_qual = 'I' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'I' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/bin/fasten_combine.rs:183:20 [INFO] [stderr] | [INFO] [stderr] 183 | let min_qual = '!' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'!' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting u8 to f32 may become silently lossy if types change [INFO] [stderr] --> src/bin/fasten_combine.rs:187:24 [INFO] [stderr] | [INFO] [stderr] 187 | let qual_int = qual_char as u8 as f32 - 33.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(qual_char as u8)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the variable `num_lines` is used as a loop counter. Consider using `for (num_lines, item) in my_buffer.lines().enumerate()` or similar iterators [INFO] [stderr] --> src/bin/fasten_quality_filter.rs:52:17 [INFO] [stderr] | [INFO] [stderr] 52 | for line in my_buffer.lines() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/bin/fasten_metrics.rs:137:5 [INFO] [stderr] | [INFO] [stderr] 137 | return avg_square_diff.sqrt(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `avg_square_diff.sqrt()` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/bin/fasten_metrics.rs:80:37 [INFO] [stderr] | [INFO] [stderr] 80 | my_read_qual += qual_char as u8 as u32 - 33; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(qual_char as u8)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/bin/fasten_metrics.rs:125:28 [INFO] [stderr] | [INFO] [stderr] 125 | fn standard_deviation(vec :&Vec) -> f32{ [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [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: the variable `num_lines` is used as a loop counter. Consider using `for (num_lines, item) in my_buffer.lines().enumerate()` or similar iterators [INFO] [stderr] --> src/bin/fasten_quality_filter.rs:52:17 [INFO] [stderr] | [INFO] [stderr] 52 | for line in my_buffer.lines() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/bin/fasten_clean.rs:107:17 [INFO] [stderr] | [INFO] [stderr] 107 | / if lines_per_read==4 { [INFO] [stderr] 108 | | if seq1_trimmed.len() >= min_length && avg_quality(&qual1_trimmed) >= min_avg_qual { [INFO] [stderr] 109 | | println!("{}\n{}\n+\n{}", [INFO] [stderr] 110 | | id1,seq1_trimmed,qual1_trimmed, [INFO] [stderr] 111 | | ); [INFO] [stderr] 112 | | } [INFO] [stderr] 113 | | } [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] 107 | if lines_per_read==4 && seq1_trimmed.len() >= min_length && avg_quality(&qual1_trimmed) >= min_avg_qual { [INFO] [stderr] 108 | println!("{}\n{}\n+\n{}", [INFO] [stderr] 109 | id1,seq1_trimmed,qual1_trimmed, [INFO] [stderr] 110 | ); [INFO] [stderr] 111 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/bin/fasten_clean.rs:152:5 [INFO] [stderr] | [INFO] [stderr] 152 | return avg; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `avg` [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/bin/fasten_clean.rs:190:5 [INFO] [stderr] | [INFO] [stderr] 190 | return(new_seq,new_qual); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(new_seq,new_qual)` [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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/bin/fasten_clean.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | / let mut min_length :usize = 0; [INFO] [stderr] 30 | | if matches.opt_present("min-length") { [INFO] [stderr] 31 | | min_length = matches.opt_str("min-length") [INFO] [stderr] 32 | | .expect("ERROR: could not read the minimum length parameter") [INFO] [stderr] 33 | | .parse() [INFO] [stderr] 34 | | .expect("ERROR: min-length is not an integer"); [INFO] [stderr] 35 | | } [INFO] [stderr] | |_____^ [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] help: it is more idiomatic to write [INFO] [stderr] | [INFO] [stderr] 29 | let min_length = if matches.opt_present("min-length") { matches.opt_str("min-length") [INFO] [stderr] 30 | .expect("ERROR: could not read the minimum length parameter") [INFO] [stderr] 31 | .parse() [INFO] [stderr] 32 | .expect("ERROR: min-length is not an integer") } else { 0 }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/bin/fasten_clean.rs:37:5 [INFO] [stderr] | [INFO] [stderr] 37 | / let mut min_avg_qual :f32 = 0.0; [INFO] [stderr] 38 | | if matches.opt_present("min-avg-quality") { [INFO] [stderr] 39 | | min_avg_qual = matches.opt_str("min-avg-quality") [INFO] [stderr] 40 | | .expect("ERROR: could not read the minimum average quality parameter") [INFO] [stderr] 41 | | .parse() [INFO] [stderr] 42 | | .expect("ERROR: min-avg-qual is not an integer"); [INFO] [stderr] 43 | | } [INFO] [stderr] | |_____^ [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] help: it is more idiomatic to write [INFO] [stderr] | [INFO] [stderr] 37 | let min_avg_qual = if matches.opt_present("min-avg-quality") { matches.opt_str("min-avg-quality") [INFO] [stderr] 38 | .expect("ERROR: could not read the minimum average quality parameter") [INFO] [stderr] 39 | .parse() [INFO] [stderr] 40 | .expect("ERROR: min-avg-qual is not an integer") } else { 0.0 }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/bin/fasten_clean.rs:45:5 [INFO] [stderr] | [INFO] [stderr] 45 | / let mut min_trim_qual :u8 = 0; [INFO] [stderr] 46 | | if matches.opt_present("min-trim-quality") { [INFO] [stderr] 47 | | min_trim_qual = matches.opt_str("min-trim-quality") [INFO] [stderr] 48 | | .expect("ERROR: could not read the minimum trim quality parameter") [INFO] [stderr] 49 | | .parse() [INFO] [stderr] 50 | | .expect("ERROR: min-trim-qual is not an integer"); [INFO] [stderr] 51 | | } [INFO] [stderr] | |_____^ [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] help: it is more idiomatic to write [INFO] [stderr] | [INFO] [stderr] 45 | let min_trim_qual = if matches.opt_present("min-trim-quality") { matches.opt_str("min-trim-quality") [INFO] [stderr] 46 | .expect("ERROR: could not read the minimum trim quality parameter") [INFO] [stderr] 47 | .parse() [INFO] [stderr] 48 | .expect("ERROR: min-trim-qual is not an integer") } else { 0 }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/bin/fasten_clean.rs:146:22 [INFO] [stderr] | [INFO] [stderr] 146 | fn avg_quality(qual: &String) -> f32 { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/bin/fasten_clean.rs:149:18 [INFO] [stderr] | [INFO] [stderr] 149 | total += qual_char as u8 as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(qual_char as u8)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/bin/fasten_clean.rs:156:14 [INFO] [stderr] | [INFO] [stderr] 156 | fn trim(seq: &String, qual: &String, min_qual: u8) -> (String,String) { [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/bin/fasten_clean.rs:156:29 [INFO] [stderr] | [INFO] [stderr] 156 | fn trim(seq: &String, qual: &String, min_qual: u8) -> (String,String) { [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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/bin/fasten_clean.rs:181:5 [INFO] [stderr] | [INFO] [stderr] 181 | / let new_qual:String; [INFO] [stderr] 182 | | [INFO] [stderr] 183 | | if trim5 >= trim3 { [INFO] [stderr] 184 | | new_seq = String::new(); [INFO] [stderr] ... | [INFO] [stderr] 188 | | new_qual = qual[trim5..trim3].to_string(); [INFO] [stderr] 189 | | } [INFO] [stderr] | |_____^ help: it is more idiomatic to write: `let new_qual = if trim5 >= trim3 { ..; String::new() } else { ..; qual[trim5..trim3].to_string() };` [INFO] [stderr] | [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: this if statement can be collapsed [INFO] [stderr] --> src/bin/fasten_clean.rs:107:17 [INFO] [stderr] | [INFO] [stderr] 107 | / if lines_per_read==4 { [INFO] [stderr] 108 | | if seq1_trimmed.len() >= min_length && avg_quality(&qual1_trimmed) >= min_avg_qual { [INFO] [stderr] 109 | | println!("{}\n{}\n+\n{}", [INFO] [stderr] 110 | | id1,seq1_trimmed,qual1_trimmed, [INFO] [stderr] 111 | | ); [INFO] [stderr] 112 | | } [INFO] [stderr] 113 | | } [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] 107 | if lines_per_read==4 && seq1_trimmed.len() >= min_length && avg_quality(&qual1_trimmed) >= min_avg_qual { [INFO] [stderr] 108 | println!("{}\n{}\n+\n{}", [INFO] [stderr] 109 | id1,seq1_trimmed,qual1_trimmed, [INFO] [stderr] 110 | ); [INFO] [stderr] 111 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/bin/fasten_clean.rs:152:5 [INFO] [stderr] | [INFO] [stderr] 152 | return avg; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `avg` [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/bin/fasten_clean.rs:190:5 [INFO] [stderr] | [INFO] [stderr] 190 | return(new_seq,new_qual); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(new_seq,new_qual)` [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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/bin/fasten_clean.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | / let mut min_length :usize = 0; [INFO] [stderr] 30 | | if matches.opt_present("min-length") { [INFO] [stderr] 31 | | min_length = matches.opt_str("min-length") [INFO] [stderr] 32 | | .expect("ERROR: could not read the minimum length parameter") [INFO] [stderr] 33 | | .parse() [INFO] [stderr] 34 | | .expect("ERROR: min-length is not an integer"); [INFO] [stderr] 35 | | } [INFO] [stderr] | |_____^ [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] help: it is more idiomatic to write [INFO] [stderr] | [INFO] [stderr] 29 | let min_length = if matches.opt_present("min-length") { matches.opt_str("min-length") [INFO] [stderr] 30 | .expect("ERROR: could not read the minimum length parameter") [INFO] [stderr] 31 | .parse() [INFO] [stderr] 32 | .expect("ERROR: min-length is not an integer") } else { 0 }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/bin/fasten_clean.rs:37:5 [INFO] [stderr] | [INFO] [stderr] 37 | / let mut min_avg_qual :f32 = 0.0; [INFO] [stderr] 38 | | if matches.opt_present("min-avg-quality") { [INFO] [stderr] 39 | | min_avg_qual = matches.opt_str("min-avg-quality") [INFO] [stderr] 40 | | .expect("ERROR: could not read the minimum average quality parameter") [INFO] [stderr] 41 | | .parse() [INFO] [stderr] 42 | | .expect("ERROR: min-avg-qual is not an integer"); [INFO] [stderr] 43 | | } [INFO] [stderr] | |_____^ [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] help: it is more idiomatic to write [INFO] [stderr] | [INFO] [stderr] 37 | let min_avg_qual = if matches.opt_present("min-avg-quality") { matches.opt_str("min-avg-quality") [INFO] [stderr] 38 | .expect("ERROR: could not read the minimum average quality parameter") [INFO] [stderr] 39 | .parse() [INFO] [stderr] 40 | .expect("ERROR: min-avg-qual is not an integer") } else { 0.0 }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/bin/fasten_clean.rs:45:5 [INFO] [stderr] | [INFO] [stderr] 45 | / let mut min_trim_qual :u8 = 0; [INFO] [stderr] 46 | | if matches.opt_present("min-trim-quality") { [INFO] [stderr] 47 | | min_trim_qual = matches.opt_str("min-trim-quality") [INFO] [stderr] 48 | | .expect("ERROR: could not read the minimum trim quality parameter") [INFO] [stderr] 49 | | .parse() [INFO] [stderr] 50 | | .expect("ERROR: min-trim-qual is not an integer"); [INFO] [stderr] 51 | | } [INFO] [stderr] | |_____^ [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] help: it is more idiomatic to write [INFO] [stderr] | [INFO] [stderr] 45 | let min_trim_qual = if matches.opt_present("min-trim-quality") { matches.opt_str("min-trim-quality") [INFO] [stderr] 46 | .expect("ERROR: could not read the minimum trim quality parameter") [INFO] [stderr] 47 | .parse() [INFO] [stderr] 48 | .expect("ERROR: min-trim-qual is not an integer") } else { 0 }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/bin/fasten_clean.rs:146:22 [INFO] [stderr] | [INFO] [stderr] 146 | fn avg_quality(qual: &String) -> f32 { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/bin/fasten_clean.rs:149:18 [INFO] [stderr] | [INFO] [stderr] 149 | total += qual_char as u8 as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(qual_char as u8)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/bin/fasten_clean.rs:156:14 [INFO] [stderr] | [INFO] [stderr] 156 | fn trim(seq: &String, qual: &String, min_qual: u8) -> (String,String) { [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/bin/fasten_clean.rs:156:29 [INFO] [stderr] | [INFO] [stderr] 156 | fn trim(seq: &String, qual: &String, min_qual: u8) -> (String,String) { [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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/bin/fasten_clean.rs:181:5 [INFO] [stderr] | [INFO] [stderr] 181 | / let new_qual:String; [INFO] [stderr] 182 | | [INFO] [stderr] 183 | | if trim5 >= trim3 { [INFO] [stderr] 184 | | new_seq = String::new(); [INFO] [stderr] ... | [INFO] [stderr] 188 | | new_qual = qual[trim5..trim3].to_string(); [INFO] [stderr] 189 | | } [INFO] [stderr] | |_____^ help: it is more idiomatic to write: `let new_qual = if trim5 >= trim3 { ..; String::new() } else { ..; qual[trim5..trim3].to_string() };` [INFO] [stderr] | [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: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/bin/fasten_shuffle.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | write!(file1,"{}\n",seq.to_string()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/bin/fasten_shuffle.rs:67:13 [INFO] [stderr] | [INFO] [stderr] 67 | write!(file2,"{}\n",seq.to_string()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: the variable `line_counter` is used as a loop counter. Consider using `for (line_counter, item) in my_buffer.lines().enumerate()` or similar iterators [INFO] [stderr] --> src/bin/fasten_sample.rs:54:17 [INFO] [stderr] | [INFO] [stderr] 54 | for line in my_buffer.lines() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/bin/fasten_pe.rs:131:5 [INFO] [stderr] | [INFO] [stderr] 131 | return 1; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `1` [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/bin/fasten_pe.rs:166:5 [INFO] [stderr] | [INFO] [stderr] 166 | return 1; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `1` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/bin/fasten_pe.rs:93:35 [INFO] [stderr] | [INFO] [stderr] 93 | fn is_paired_end_slash12(id1_ref: &Vec, id2_ref: &Vec) -> u8 { [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] 93 | fn is_paired_end_slash12(id1_ref: &[String], id2_ref: &Vec) -> u8 { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] help: change `id1_ref.clone()` to [INFO] [stderr] | [INFO] [stderr] 96 | let id1_vec = id1_ref.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/bin/fasten_pe.rs:93:58 [INFO] [stderr] | [INFO] [stderr] 93 | fn is_paired_end_slash12(id1_ref: &Vec, id2_ref: &Vec) -> u8 { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 93 | fn is_paired_end_slash12(id1_ref: &Vec, id2_ref: &[String]) -> u8 { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] help: change `id2_ref.clone()` to [INFO] [stderr] | [INFO] [stderr] 97 | let id2_vec = id2_ref.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/bin/fasten_pe.rs:135:33 [INFO] [stderr] | [INFO] [stderr] 135 | fn is_paired_end_miseq(id1_ref: &Vec, id2_ref: &Vec) -> u8 { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 135 | fn is_paired_end_miseq(id1_ref: &[String], id2_ref: &Vec) -> u8 { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] help: change `id1_ref.clone()` to [INFO] [stderr] | [INFO] [stderr] 137 | let id1_vec = id1_ref.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/bin/fasten_pe.rs:135:56 [INFO] [stderr] | [INFO] [stderr] 135 | fn is_paired_end_miseq(id1_ref: &Vec, id2_ref: &Vec) -> u8 { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 135 | fn is_paired_end_miseq(id1_ref: &Vec, id2_ref: &[String]) -> u8 { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] help: change `id2_ref.clone()` to [INFO] [stderr] | [INFO] [stderr] 138 | let id2_vec = id2_ref.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/bin/fasten_pe.rs:149:33 [INFO] [stderr] | [INFO] [stderr] 149 | let id1_tmp = id1.split(":").nth(6); [INFO] [stderr] | ^^^ help: try using a char instead: `':'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/bin/fasten_pe.rs:150:33 [INFO] [stderr] | [INFO] [stderr] 150 | let id2_tmp = id2.split(":").nth(6); [INFO] [stderr] | ^^^ help: try using a char instead: `':'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/bin/fasten_pe.rs:156:54 [INFO] [stderr] | [INFO] [stderr] 156 | let id1_read_number = id1_tmp.unwrap().split(" ").nth(1); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/bin/fasten_pe.rs:157:54 [INFO] [stderr] | [INFO] [stderr] 157 | let id2_read_number = id2_tmp.unwrap().split(" ").nth(1); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/bin/fasten_randomize.rs:35:48 [INFO] [stderr] | [INFO] [stderr] 35 | fn print_reads_from_stdin(lines_per_read :u32) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/bin/fasten_randomize.rs:37:52 [INFO] [stderr] | [INFO] [stderr] 37 | let mut seqs :Vec = Vec::with_capacity(100000); [INFO] [stderr] | ^^^^^^ help: consider: `100_000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: the variable `num_lines` is used as a loop counter. Consider using `for (num_lines, item) in my_buffer.lines().enumerate()` or similar iterators [INFO] [stderr] --> src/bin/fasten_trim.rs:60:17 [INFO] [stderr] | [INFO] [stderr] 60 | for line in my_buffer.lines() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/bin/fasten_shuffle.rs:39:42 [INFO] [stderr] | [INFO] [stderr] 39 | fn deshuffle(matches: &getopts::Matches) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/bin/fasten_shuffle.rs:74:40 [INFO] [stderr] | [INFO] [stderr] 74 | fn shuffle(matches: &getopts::Matches) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/bin/fasten_shuffle.rs:117:5 [INFO] [stderr] | [INFO] [stderr] 117 | return seqs; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `seqs` [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: the variable `read_counter` is used as a loop counter. Consider using `for (read_counter, item) in fastq_reader.enumerate()` or similar iterators [INFO] [stderr] --> src/bin/fasten_shuffle.rs:61:16 [INFO] [stderr] | [INFO] [stderr] 61 | for seq in fastq_reader { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/bin/fasten_shuffle.rs:97:8 [INFO] [stderr] | [INFO] [stderr] 97 | if seqs2.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `seqs2.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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/bin/fasten_shuffle.rs:111:24 [INFO] [stderr] | [INFO] [stderr] 111 | fn read_seqs(filename: &String) -> Vec { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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] Finished dev [unoptimized + debuginfo] target(s) in 23.13s [INFO] running `"docker" "inspect" "e23ecc15233c93006e1ae1d79dec0c7cee54e571b7ada1bf0ced9f5f4f559723"` [INFO] running `"docker" "rm" "-f" "e23ecc15233c93006e1ae1d79dec0c7cee54e571b7ada1bf0ced9f5f4f559723"` [INFO] [stdout] e23ecc15233c93006e1ae1d79dec0c7cee54e571b7ada1bf0ced9f5f4f559723