[INFO] crate smafa 0.1.2 is already in cache [INFO] extracting crate smafa 0.1.2 into work/ex/clippy-test-run/sources/stable/reg/smafa/0.1.2 [INFO] extracting crate smafa 0.1.2 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/smafa/0.1.2 [INFO] validating manifest of smafa-0.1.2 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of smafa-0.1.2 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing smafa-0.1.2 [INFO] finished frobbing smafa-0.1.2 [INFO] frobbed toml for smafa-0.1.2 written to work/ex/clippy-test-run/sources/stable/reg/smafa/0.1.2/Cargo.toml [INFO] started frobbing smafa-0.1.2 [INFO] finished frobbing smafa-0.1.2 [INFO] frobbed toml for smafa-0.1.2 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/smafa/0.1.2/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting smafa-0.1.2 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/smafa/0.1.2:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 05b36e277d9c981aafb61ef9912c50c62b67e4cfa133809febebca4d8b44f850 [INFO] running `"docker" "start" "-a" "05b36e277d9c981aafb61ef9912c50c62b67e4cfa133809febebca4d8b44f850"` [INFO] [stderr] Checking ndarray v0.9.1 [INFO] [stderr] Checking tempfile v2.2.0 [INFO] [stderr] Checking serde v1.0.85 [INFO] [stderr] Checking multimap v0.4.0 [INFO] [stderr] Checking vec_map v0.8.1 [INFO] [stderr] Checking csv v1.0.5 [INFO] [stderr] Checking bincode v0.8.0 [INFO] [stderr] Checking clap v2.32.0 [INFO] [stderr] Checking bio v0.15.0 [INFO] [stderr] Checking smafa v0.1.2 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | less: less, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `less` [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/lib.rs:96:9 [INFO] [stderr] | [INFO] [stderr] 96 | occ: occ [INFO] [stderr] | ^^^^^^^^ help: replace it with: `occ` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:99:9 [INFO] [stderr] | [INFO] [stderr] 99 | saveable_fm_index: saveable_fm_index, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `saveable_fm_index` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:100:9 [INFO] [stderr] | [INFO] [stderr] 100 | text: text [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `text` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:228:29 [INFO] [stderr] | [INFO] [stderr] 228 | divergence: divergence, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `divergence` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:345:53 [INFO] [stderr] | [INFO] [stderr] 345 | divergence: divergence, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `divergence` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:354:49 [INFO] [stderr] | [INFO] [stderr] 354 | divergence: divergence, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `divergence` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:372:9 [INFO] [stderr] | [INFO] [stderr] 372 | sequence_index_to_best_hit: sequence_index_to_best_hit, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sequence_index_to_best_hit` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:373:9 [INFO] [stderr] | [INFO] [stderr] 373 | sequence_names: sequence_names [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sequence_names` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | less: less, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `less` [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/lib.rs:96:9 [INFO] [stderr] | [INFO] [stderr] 96 | occ: occ [INFO] [stderr] | ^^^^^^^^ help: replace it with: `occ` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:99:9 [INFO] [stderr] | [INFO] [stderr] 99 | saveable_fm_index: saveable_fm_index, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `saveable_fm_index` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:100:9 [INFO] [stderr] | [INFO] [stderr] 100 | text: text [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `text` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:228:29 [INFO] [stderr] | [INFO] [stderr] 228 | divergence: divergence, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `divergence` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:345:53 [INFO] [stderr] | [INFO] [stderr] 345 | divergence: divergence, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `divergence` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:354:49 [INFO] [stderr] | [INFO] [stderr] 354 | divergence: divergence, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `divergence` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:372:9 [INFO] [stderr] | [INFO] [stderr] 372 | sequence_index_to_best_hit: sequence_index_to_best_hit, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sequence_index_to_best_hit` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lib.rs:373:9 [INFO] [stderr] | [INFO] [stderr] 373 | sequence_names: sequence_names [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sequence_names` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:102:5 [INFO] [stderr] | [INFO] [stderr] 102 | return unpacked; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `unpacked` [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/lib.rs:129:5 [INFO] [stderr] | [INFO] [stderr] 129 | return count [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `count` [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/lib.rs:370:5 [INFO] [stderr] | [INFO] [stderr] 370 | / return ClusteringResults { [INFO] [stderr] 371 | | representative_sequence_ids: representative_sequence_indexes, [INFO] [stderr] 372 | | sequence_index_to_best_hit: sequence_index_to_best_hit, [INFO] [stderr] 373 | | sequence_names: sequence_names [INFO] [stderr] 374 | | } [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] 370 | ClusteringResults { [INFO] [stderr] 371 | representative_sequence_ids: representative_sequence_indexes, [INFO] [stderr] 372 | sequence_index_to_best_hit: sequence_index_to_best_hit, [INFO] [stderr] 373 | sequence_names: sequence_names [INFO] [stderr] 374 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib.rs:102:5 [INFO] [stderr] | [INFO] [stderr] 102 | return unpacked; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `unpacked` [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/lib.rs:129:5 [INFO] [stderr] | [INFO] [stderr] 129 | return count [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `count` [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/lib.rs:370:5 [INFO] [stderr] | [INFO] [stderr] 370 | / return ClusteringResults { [INFO] [stderr] 371 | | representative_sequence_ids: representative_sequence_indexes, [INFO] [stderr] 372 | | sequence_index_to_best_hit: sequence_index_to_best_hit, [INFO] [stderr] 373 | | sequence_names: sequence_names [INFO] [stderr] 374 | | } [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] 370 | ClusteringResults { [INFO] [stderr] 371 | representative_sequence_ids: representative_sequence_indexes, [INFO] [stderr] 372 | sequence_index_to_best_hit: sequence_index_to_best_hit, [INFO] [stderr] 373 | sequence_names: sequence_names [INFO] [stderr] 374 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/lib.rs:112:26 [INFO] [stderr] | [INFO] [stderr] 112 | let f = File::create(filename.clone()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 112 | let f = File::create(&(*filename).clone()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 112 | let f = File::create(&str::clone(filename)).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting to the same type is unnecessary (`u8` -> `u8`) [INFO] [stderr] --> src/lib.rs:124:20 [INFO] [stderr] | [INFO] [stderr] 124 | if item == b'$' as u8 { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_cast)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [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/lib.rs:182:9 [INFO] [stderr] | [INFO] [stderr] 182 | sa: &RawSuffixArray, [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] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:183:10 [INFO] [stderr] | [INFO] [stderr] 183 | bwt: &BWT, [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:184:11 [INFO] [stderr] | [INFO] [stderr] 184 | less: &Less, [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:186:11 [INFO] [stderr] | [INFO] [stderr] 186 | text: &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: this function has too many arguments (8/7) [INFO] [stderr] --> src/lib.rs:178:1 [INFO] [stderr] | [INFO] [stderr] 178 | / fn query_with_everything( [INFO] [stderr] 179 | | query_fasta: &str, [INFO] [stderr] 180 | | max_divergence: u32, [INFO] [stderr] 181 | | mut hit_processor: T, [INFO] [stderr] ... | [INFO] [stderr] 236 | | } [INFO] [stderr] 237 | | } [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: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:220:29 [INFO] [stderr] | [INFO] [stderr] 220 | divergence = divergence + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `divergence += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: the variable `query_sequence_index` is used as a loop counter. Consider using `for (query_sequence_index, item) in reader.records().enumerate()` or similar iterators [INFO] [stderr] --> src/lib.rs:296:19 [INFO] [stderr] | [INFO] [stderr] 296 | for record in reader.records() { [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: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:323:37 [INFO] [stderr] | [INFO] [stderr] 323 | divergence = divergence + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `divergence += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/lib.rs:329:37 [INFO] [stderr] | [INFO] [stderr] 329 | / if sequence_index_to_best_hit.contains_key(&query_sequence_index){ [INFO] [stderr] 330 | | // work out the true/false for the if statement here to [INFO] [stderr] 331 | | // get around the borrow checker. [INFO] [stderr] 332 | | let mut found_a_better_one = false; [INFO] [stderr] ... | [INFO] [stderr] 356 | | }); [INFO] [stderr] 357 | | } [INFO] [stderr] | |_____________________________________^ help: consider using: `sequence_index_to_best_hit.entry(query_sequence_index)` [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/lib.rs:334:61 [INFO] [stderr] | [INFO] [stderr] 334 | let last_best = sequence_index_to_best_hit.get(&query_sequence_index).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&sequence_index_to_best_hit[&query_sequence_index]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:381:21 [INFO] [stderr] | [INFO] [stderr] 381 | sequence_names: &Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to want to iterate on a map's values [INFO] [stderr] --> src/lib.rs:390:30 [INFO] [stderr] | [INFO] [stderr] 390 | for (_, best_hit) in sequence_index_to_best_hit { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::for_kv_map)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stderr] help: use the corresponding method [INFO] [stderr] | [INFO] [stderr] 390 | for best_hit in sequence_index_to_best_hit.values() { [INFO] [stderr] | ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/lib.rs:392:13 [INFO] [stderr] | [INFO] [stderr] 392 | / if num_in_each_cluster.contains_key(&rep_id) { [INFO] [stderr] 393 | | let new_num = num_in_each_cluster.get(&rep_id).unwrap() + 1; [INFO] [stderr] 394 | | num_in_each_cluster.insert(rep_id, new_num); [INFO] [stderr] 395 | | } else { [INFO] [stderr] 396 | | num_in_each_cluster.insert(rep_id, 1); [INFO] [stderr] 397 | | }; [INFO] [stderr] | |_____________^ help: consider using: `num_in_each_cluster.entry(rep_id)` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/lib.rs:393:31 [INFO] [stderr] | [INFO] [stderr] 393 | let new_num = num_in_each_cluster.get(&rep_id).unwrap() + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&num_in_each_cluster[&rep_id]` [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: the variable `cluster_id` is used as a loop counter. Consider using `for (cluster_id, item) in representative_sequence_ids.enumerate()` or similar iterators [INFO] [stderr] --> src/lib.rs:400:23 [INFO] [stderr] | [INFO] [stderr] 400 | for rep_id in representative_sequence_ids { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/lib.rs:421:18 [INFO] [stderr] | [INFO] [stderr] 421 | rep_id_to_cluster_id.get(&rep_id).unwrap(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&rep_id_to_cluster_id[&rep_id]` [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] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `smafa`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/lib.rs:112:26 [INFO] [stderr] | [INFO] [stderr] 112 | let f = File::create(filename.clone()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 112 | let f = File::create(&(*filename).clone()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 112 | let f = File::create(&str::clone(filename)).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting to the same type is unnecessary (`u8` -> `u8`) [INFO] [stderr] --> src/lib.rs:124:20 [INFO] [stderr] | [INFO] [stderr] 124 | if item == b'$' as u8 { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_cast)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [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/lib.rs:182:9 [INFO] [stderr] | [INFO] [stderr] 182 | sa: &RawSuffixArray, [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] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:183:10 [INFO] [stderr] | [INFO] [stderr] 183 | bwt: &BWT, [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:184:11 [INFO] [stderr] | [INFO] [stderr] 184 | less: &Less, [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:186:11 [INFO] [stderr] | [INFO] [stderr] 186 | text: &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: this function has too many arguments (8/7) [INFO] [stderr] --> src/lib.rs:178:1 [INFO] [stderr] | [INFO] [stderr] 178 | / fn query_with_everything( [INFO] [stderr] 179 | | query_fasta: &str, [INFO] [stderr] 180 | | max_divergence: u32, [INFO] [stderr] 181 | | mut hit_processor: T, [INFO] [stderr] ... | [INFO] [stderr] 236 | | } [INFO] [stderr] 237 | | } [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: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:220:29 [INFO] [stderr] | [INFO] [stderr] 220 | divergence = divergence + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `divergence += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: the variable `query_sequence_index` is used as a loop counter. Consider using `for (query_sequence_index, item) in reader.records().enumerate()` or similar iterators [INFO] [stderr] --> src/lib.rs:296:19 [INFO] [stderr] | [INFO] [stderr] 296 | for record in reader.records() { [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: manual implementation of an assign operation [INFO] [stderr] --> src/lib.rs:323:37 [INFO] [stderr] | [INFO] [stderr] 323 | divergence = divergence + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `divergence += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/lib.rs:329:37 [INFO] [stderr] | [INFO] [stderr] 329 | / if sequence_index_to_best_hit.contains_key(&query_sequence_index){ [INFO] [stderr] 330 | | // work out the true/false for the if statement here to [INFO] [stderr] 331 | | // get around the borrow checker. [INFO] [stderr] 332 | | let mut found_a_better_one = false; [INFO] [stderr] ... | [INFO] [stderr] 356 | | }); [INFO] [stderr] 357 | | } [INFO] [stderr] | |_____________________________________^ help: consider using: `sequence_index_to_best_hit.entry(query_sequence_index)` [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/lib.rs:334:61 [INFO] [stderr] | [INFO] [stderr] 334 | let last_best = sequence_index_to_best_hit.get(&query_sequence_index).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&sequence_index_to_best_hit[&query_sequence_index]` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:381:21 [INFO] [stderr] | [INFO] [stderr] 381 | sequence_names: &Vec>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to want to iterate on a map's values [INFO] [stderr] --> src/lib.rs:390:30 [INFO] [stderr] | [INFO] [stderr] 390 | for (_, best_hit) in sequence_index_to_best_hit { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::for_kv_map)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stderr] help: use the corresponding method [INFO] [stderr] | [INFO] [stderr] 390 | for best_hit in sequence_index_to_best_hit.values() { [INFO] [stderr] | ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/lib.rs:392:13 [INFO] [stderr] | [INFO] [stderr] 392 | / if num_in_each_cluster.contains_key(&rep_id) { [INFO] [stderr] 393 | | let new_num = num_in_each_cluster.get(&rep_id).unwrap() + 1; [INFO] [stderr] 394 | | num_in_each_cluster.insert(rep_id, new_num); [INFO] [stderr] 395 | | } else { [INFO] [stderr] 396 | | num_in_each_cluster.insert(rep_id, 1); [INFO] [stderr] 397 | | }; [INFO] [stderr] | |_____________^ help: consider using: `num_in_each_cluster.entry(rep_id)` [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/lib.rs:393:31 [INFO] [stderr] | [INFO] [stderr] 393 | let new_num = num_in_each_cluster.get(&rep_id).unwrap() + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&num_in_each_cluster[&rep_id]` [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: the variable `cluster_id` is used as a loop counter. Consider using `for (cluster_id, item) in representative_sequence_ids.enumerate()` or similar iterators [INFO] [stderr] --> src/lib.rs:400:23 [INFO] [stderr] | [INFO] [stderr] 400 | for rep_id in representative_sequence_ids { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/lib.rs:421:18 [INFO] [stderr] | [INFO] [stderr] 421 | rep_id_to_cluster_id.get(&rep_id).unwrap(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&rep_id_to_cluster_id[&rep_id]` [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: single-character string constant used as pattern [INFO] [stderr] --> src/lib.rs:480:61 [INFO] [stderr] | [INFO] [stderr] 480 | let mut expected_sorted: Vec<&str> = expected.split("\n").collect(); [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [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/lib.rs:482:61 [INFO] [stderr] | [INFO] [stderr] 482 | let mut observed_sorted: Vec<&str> = observed.split("\n").collect(); [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [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] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `smafa`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "05b36e277d9c981aafb61ef9912c50c62b67e4cfa133809febebca4d8b44f850"` [INFO] running `"docker" "rm" "-f" "05b36e277d9c981aafb61ef9912c50c62b67e4cfa133809febebca4d8b44f850"` [INFO] [stdout] 05b36e277d9c981aafb61ef9912c50c62b67e4cfa133809febebca4d8b44f850