[INFO] crate nlp 0.1.1 is already in cache [INFO] extracting crate nlp 0.1.1 into work/ex/clippy-test-run/sources/stable/reg/nlp/0.1.1 [INFO] extracting crate nlp 0.1.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/nlp/0.1.1 [INFO] validating manifest of nlp-0.1.1 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 nlp-0.1.1 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 nlp-0.1.1 [INFO] finished frobbing nlp-0.1.1 [INFO] frobbed toml for nlp-0.1.1 written to work/ex/clippy-test-run/sources/stable/reg/nlp/0.1.1/Cargo.toml [INFO] started frobbing nlp-0.1.1 [INFO] finished frobbing nlp-0.1.1 [INFO] frobbed toml for nlp-0.1.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/nlp/0.1.1/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 nlp-0.1.1 against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-6/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/nlp/0.1.1:/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 -Dclippy::into_iter_on_array" "-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] 8cc56d7922838b57ed1068d7cdd6ca81fe4a371911b52f56405088e89b37af4e [INFO] running `"docker" "start" "-a" "8cc56d7922838b57ed1068d7cdd6ca81fe4a371911b52f56405088e89b37af4e"` [INFO] [stderr] Checking nlp v0.1.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/phonetics/soundex.rs:69:13 [INFO] [stderr] | [INFO] [stderr] 69 | first_char: first_char, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `first_char` [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/phonetics/soundex.rs:70:13 [INFO] [stderr] | [INFO] [stderr] 70 | soundex_chars: soundex_chars [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `soundex_chars` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/phonetics/metaphone/conditions.rs:38:9 [INFO] [stderr] | [INFO] [stderr] 38 | let e = contains_at_least_one(&value, index + 2, 1, L_R_N_M_B_H_F_V_W_SPACE) || index + 1 == value.len() - 1; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/phonetics/soundex.rs:69:13 [INFO] [stderr] | [INFO] [stderr] 69 | first_char: first_char, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `first_char` [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/phonetics/soundex.rs:70:13 [INFO] [stderr] | [INFO] [stderr] 70 | soundex_chars: soundex_chars [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `soundex_chars` [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: 5th binding whose name is just one char [INFO] [stderr] --> src/phonetics/metaphone/conditions.rs:38:9 [INFO] [stderr] | [INFO] [stderr] 38 | let e = contains_at_least_one(&value, index + 2, 1, L_R_N_M_B_H_F_V_W_SPACE) || index + 1 == value.len() - 1; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> src/lib.rs:14:1 [INFO] [stderr] | [INFO] [stderr] 14 | #[macro_use] extern crate itertools; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/phonetics/metaphone/handler.rs:437:16 [INFO] [stderr] | [INFO] [stderr] 437 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 438 | | if index == 0 && !is_vowel(&value, 3) && !char_at_match(&value, 3, 'W') { [INFO] [stderr] 439 | | result.append_primary('X'); [INFO] [stderr] 440 | | result.append_alternate('S'); [INFO] [stderr] ... | [INFO] [stderr] 443 | | } [INFO] [stderr] 444 | | } [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] 437 | } else if index == 0 && !is_vowel(&value, 3) && !char_at_match(&value, 3, 'W') { [INFO] [stderr] 438 | result.append_primary('X'); [INFO] [stderr] 439 | result.append_alternate('S'); [INFO] [stderr] 440 | } else { [INFO] [stderr] 441 | result.append('X'); [INFO] [stderr] 442 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/phonetics/metaphone/handler.rs:494:12 [INFO] [stderr] | [INFO] [stderr] 494 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 495 | | if index == 0 && (is_vowel(&value, index +1) || contains(&value, index, 2, "WH")) { [INFO] [stderr] 496 | | if is_vowel(&value, index + 1) { [INFO] [stderr] 497 | | //-- Wasserman should match Vasserman --// [INFO] [stderr] ... | [INFO] [stderr] 518 | | } [INFO] [stderr] 519 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 494 | } else if index == 0 && (is_vowel(&value, index +1) || contains(&value, index, 2, "WH")) { [INFO] [stderr] 495 | if is_vowel(&value, index + 1) { [INFO] [stderr] 496 | //-- Wasserman should match Vasserman --// [INFO] [stderr] 497 | result.append_primary('A'); [INFO] [stderr] 498 | result.append_alternate('F'); [INFO] [stderr] 499 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: Unnecessary `>= y + 1` or `x - 1 >=` [INFO] [stderr] --> src/phonetics/metaphone/double_metaphone.rs:27:36 [INFO] [stderr] | [INFO] [stderr] 27 | while !result.is_complete() && index <= value.len() - 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::int_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#int_plus_one [INFO] [stderr] help: change `>= y + 1` to `> y` as shown [INFO] [stderr] | [INFO] [stderr] 27 | while !result.is_complete() && index < value.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/phonetics/metaphone/mod.rs:7:1 [INFO] [stderr] | [INFO] [stderr] 7 | pub mod metaphone; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> src/lib.rs:14:1 [INFO] [stderr] | [INFO] [stderr] 14 | #[macro_use] extern crate itertools; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/phonetics/metaphone/handler.rs:437:16 [INFO] [stderr] | [INFO] [stderr] 437 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 438 | | if index == 0 && !is_vowel(&value, 3) && !char_at_match(&value, 3, 'W') { [INFO] [stderr] 439 | | result.append_primary('X'); [INFO] [stderr] 440 | | result.append_alternate('S'); [INFO] [stderr] ... | [INFO] [stderr] 443 | | } [INFO] [stderr] 444 | | } [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] 437 | } else if index == 0 && !is_vowel(&value, 3) && !char_at_match(&value, 3, 'W') { [INFO] [stderr] 438 | result.append_primary('X'); [INFO] [stderr] 439 | result.append_alternate('S'); [INFO] [stderr] 440 | } else { [INFO] [stderr] 441 | result.append('X'); [INFO] [stderr] 442 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/phonetics/metaphone/handler.rs:494:12 [INFO] [stderr] | [INFO] [stderr] 494 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 495 | | if index == 0 && (is_vowel(&value, index +1) || contains(&value, index, 2, "WH")) { [INFO] [stderr] 496 | | if is_vowel(&value, index + 1) { [INFO] [stderr] 497 | | //-- Wasserman should match Vasserman --// [INFO] [stderr] ... | [INFO] [stderr] 518 | | } [INFO] [stderr] 519 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 494 | } else if index == 0 && (is_vowel(&value, index +1) || contains(&value, index, 2, "WH")) { [INFO] [stderr] 495 | if is_vowel(&value, index + 1) { [INFO] [stderr] 496 | //-- Wasserman should match Vasserman --// [INFO] [stderr] 497 | result.append_primary('A'); [INFO] [stderr] 498 | result.append_alternate('F'); [INFO] [stderr] 499 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: Unnecessary `>= y + 1` or `x - 1 >=` [INFO] [stderr] --> src/phonetics/metaphone/double_metaphone.rs:27:36 [INFO] [stderr] | [INFO] [stderr] 27 | while !result.is_complete() && index <= value.len() - 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::int_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#int_plus_one [INFO] [stderr] help: change `>= y + 1` to `> y` as shown [INFO] [stderr] | [INFO] [stderr] 27 | while !result.is_complete() && index < value.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/phonetics/metaphone/mod.rs:7:1 [INFO] [stderr] | [INFO] [stderr] 7 | pub mod metaphone; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/distance.rs:19:8 [INFO] [stderr] | [INFO] [stderr] 19 | if a.len() == 0 || b.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `a.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/distance.rs:19:24 [INFO] [stderr] | [INFO] [stderr] 19 | if a.len() == 0 || b.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `b.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/distance.rs:116:15 [INFO] [stderr] | [INFO] [stderr] 116 | } else if a.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `a.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/distance.rs:118:15 [INFO] [stderr] | [INFO] [stderr] 118 | } else if b.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `b.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: an inclusive range would be more readable [INFO] [stderr] --> src/distance.rs:122:40 [INFO] [stderr] | [INFO] [stderr] 122 | let mut prev_distances: Vec = (0..(b.len() as u16 + 1)).collect::>(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(0..=b.len() as u16)` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/phonetics/utils/metaphone_utils.rs:18:24 [INFO] [stderr] | [INFO] [stderr] 18 | pub fn contains(value: &String, start: usize, len: usize, search: &str) -> bool { [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/phonetics/utils/metaphone_utils.rs:26:37 [INFO] [stderr] | [INFO] [stderr] 26 | pub fn contains_at_least_one(value: &String, start: usize, len: usize, search: &[&str]) -> bool { [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: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/phonetics/utils/metaphone_utils.rs:29:49 [INFO] [stderr] | [INFO] [stderr] 29 | .map(|x| contains(value, start, len, x)) [INFO] [stderr] | _________________________________________________^ [INFO] [stderr] 30 | | .fold(false, |acc, x| acc || x) [INFO] [stderr] | |_______________________________________^ help: try: `.any(|x| x)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_fold)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/phonetics/utils/metaphone_utils.rs:33:23 [INFO] [stderr] | [INFO] [stderr] 33 | pub fn char_at(value: &String, index: usize) -> Option { [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/phonetics/utils/metaphone_utils.rs:37:29 [INFO] [stderr] | [INFO] [stderr] 37 | pub fn char_at_match(value: &String, index: usize, search: char) -> bool { [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/phonetics/utils/metaphone_utils.rs:44:36 [INFO] [stderr] | [INFO] [stderr] 44 | pub fn char_at_match_before(value: &String, index: usize, reduce: usize, search: char) -> bool { [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/phonetics/utils/metaphone_utils.rs:52:35 [INFO] [stderr] | [INFO] [stderr] 52 | pub fn char_at_match_after(value: &String, index: usize, increase: usize, search: char) -> bool { [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/phonetics/metaphone/conditions.rs:6:28 [INFO] [stderr] | [INFO] [stderr] 6 | pub fn condition_c0(value: &String, index: usize) -> bool { [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] error: this `if` has identical blocks [INFO] [stderr] --> src/phonetics/metaphone/conditions.rs:12:47 [INFO] [stderr] | [INFO] [stderr] 12 | !contains(&value, index -1, 3, "ACH") { [INFO] [stderr] | _______________________________________________^ [INFO] [stderr] 13 | | false [INFO] [stderr] 14 | | } else { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/phonetics/metaphone/conditions.rs:9:26 [INFO] [stderr] | [INFO] [stderr] 9 | } else if index <= 1 { [INFO] [stderr] | __________________________^ [INFO] [stderr] 10 | | false [INFO] [stderr] 11 | | } else if is_vowel(&value, index - 2) || [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/phonetics/metaphone/conditions.rs:19:29 [INFO] [stderr] | [INFO] [stderr] 19 | pub fn condition_ch0(value: &String, index: usize) -> bool { [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] error: this `if` has identical blocks [INFO] [stderr] --> src/phonetics/metaphone/conditions.rs:24:85 [INFO] [stderr] | [INFO] [stderr] 24 | !contains_at_least_one(&value, index + 1, 3, &["HOR", "HYM", "HIA", "HEM"]) { [INFO] [stderr] | _____________________________________________________________________________________^ [INFO] [stderr] 25 | | false [INFO] [stderr] 26 | | } else if contains(&value, 0, 5, "CHORE") { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] note: same as this [INFO] [stderr] --> src/phonetics/metaphone/conditions.rs:20:19 [INFO] [stderr] | [INFO] [stderr] 20 | if index != 0 { [INFO] [stderr] | ___________________^ [INFO] [stderr] 21 | | false [INFO] [stderr] 22 | | } else if [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/phonetics/metaphone/conditions.rs:26:12 [INFO] [stderr] | [INFO] [stderr] 26 | } else if contains(&value, 0, 5, "CHORE") { [INFO] [stderr] | ____________^ [INFO] [stderr] 27 | | false [INFO] [stderr] 28 | | } else { [INFO] [stderr] 29 | | true [INFO] [stderr] 30 | | } [INFO] [stderr] | |_____^ help: you can reduce it to: `!contains(&value, 0, 5, "CHORE")` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/phonetics/metaphone/conditions.rs:33:29 [INFO] [stderr] | [INFO] [stderr] 33 | pub fn condition_ch1(value: &String, index: usize) -> bool { [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/phonetics/metaphone/conditions.rs:43:28 [INFO] [stderr] | [INFO] [stderr] 43 | pub fn condition_m0(value: &String, index: usize) -> bool { [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/phonetics/metaphone/conditions.rs:56:28 [INFO] [stderr] | [INFO] [stderr] 56 | pub fn condition_l0(value: &String, index: usize) -> bool { [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] error: this `if` has identical blocks [INFO] [stderr] --> src/phonetics/metaphone/conditions.rs:59:190 [INFO] [stderr] | [INFO] [stderr] 59 | } else if (contains_at_least_one(&value, value.len() - 2, 2, &["AS", "OS"]) || contains_at_least_one(&value, value.len() - 1, 1, &["A", "O"])) && contains(&value, index - 1, 4, "ALLE") { [INFO] [stderr] | ______________________________________________________________________________________________________________________________________________________________________________________________^ [INFO] [stderr] 60 | | true [INFO] [stderr] 61 | | } else { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] note: same as this [INFO] [stderr] --> src/phonetics/metaphone/conditions.rs:57:107 [INFO] [stderr] | [INFO] [stderr] 57 | if index == value.len() - 3 && contains_at_least_one(&value, index - 1, 4, &["ILLO", "ILLA", "ALLE"]) { [INFO] [stderr] | ___________________________________________________________________________________________________________^ [INFO] [stderr] 58 | | true [INFO] [stderr] 59 | | } else if (contains_at_least_one(&value, value.len() - 2, 2, &["AS", "OS"]) || contains_at_least_one(&value, value.len() - 1, 1, &["A", "O"])) && contains(&value, index - 1, 4, "ALLE") { [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/phonetics/metaphone/conditions.rs:59:12 [INFO] [stderr] | [INFO] [stderr] 59 | } else if (contains_at_least_one(&value, value.len() - 2, 2, &["AS", "OS"]) || contains_at_least_one(&value, value.len() - 1, 1, &["A", "O"])) && contains(&value, index - 1, 4, "ALLE") { [INFO] [stderr] | ____________^ [INFO] [stderr] 60 | | true [INFO] [stderr] 61 | | } else { [INFO] [stderr] 62 | | false [INFO] [stderr] 63 | | } [INFO] [stderr] | |_____^ help: you can reduce it to: `(contains_at_least_one(&value, value.len() - 2, 2, &["AS", "OS"]) || contains_at_least_one(&value, value.len() - 1, 1, &["A", "O"])) && contains(&value, index - 1, 4, "ALLE")` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/phonetics/metaphone/handler.rs:8:60 [INFO] [stderr] | [INFO] [stderr] 8 | pub fn handle_b(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:25:60 [INFO] [stderr] | [INFO] [stderr] 25 | pub fn handle_c(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:75:57 [INFO] [stderr] | [INFO] [stderr] 75 | fn handle_cc(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:93:61 [INFO] [stderr] | [INFO] [stderr] 93 | pub fn handle_ch(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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] error: this `if` has identical blocks [INFO] [stderr] --> src/phonetics/metaphone/handler.rs:102:44 [INFO] [stderr] | [INFO] [stderr] 102 | } else if condition_ch1(&value, index) { [INFO] [stderr] | ____________________________________________^ [INFO] [stderr] 103 | | //-- Germanic, Greek, or otherwise 'ch' for 'kh' sound --// [INFO] [stderr] 104 | | result.append('K'); [INFO] [stderr] 105 | | index + 2 [INFO] [stderr] 106 | | } else { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] note: same as this [INFO] [stderr] --> src/phonetics/metaphone/handler.rs:98:44 [INFO] [stderr] | [INFO] [stderr] 98 | } else if condition_ch0(&value, index) { [INFO] [stderr] | ____________________________________________^ [INFO] [stderr] 99 | | //-- Greek roots ("chemistry", "chorus", etc.) --// [INFO] [stderr] 100 | | result.append('K'); [INFO] [stderr] 101 | | index + 2 [INFO] [stderr] 102 | | } else if condition_ch1(&value, index) { [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/phonetics/metaphone/handler.rs:122:60 [INFO] [stderr] | [INFO] [stderr] 122 | pub fn handle_d(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:143:60 [INFO] [stderr] | [INFO] [stderr] 143 | pub fn handle_f(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:147:60 [INFO] [stderr] | [INFO] [stderr] 147 | pub fn handle_g(result: &mut DoubleMetaphoneResult, value: &String, index: usize, slavo_germanic: bool) -> usize { [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] error: this `if` has identical blocks [INFO] [stderr] --> src/phonetics/metaphone/handler.rs:183:71 [INFO] [stderr] | [INFO] [stderr] 183 | !contains_at_least_one(&value, index - 1, 3, &["RGY", "OGY"]) { [INFO] [stderr] | _______________________________________________________________________^ [INFO] [stderr] 184 | | //-- -ger-, -gy- --// [INFO] [stderr] 185 | | result.append_primary('K'); [INFO] [stderr] 186 | | result.append_alternate('J'); [INFO] [stderr] 187 | | index + 2 [INFO] [stderr] 188 | | } else if contains_at_least_one(&value, index + 1, 1, &["E", "I", "Y"]) || (index > 0 && contains_at_least_one(&value, index -1, 4, &["AGGI", "OGGI"])) { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] note: same as this [INFO] [stderr] --> src/phonetics/metaphone/handler.rs:175:132 [INFO] [stderr] | [INFO] [stderr] 175 | } else if index == 0 && (current_char == 'Y' || contains_at_least_one(&value, index + 1, 2, ES_EP_EB_EL_EY_IB_IL_IN_IE_EI_ER)) { [INFO] [stderr] | ____________________________________________________________________________________________________________________________________^ [INFO] [stderr] 176 | | //-- -ges-, -gep-, -gel-, -gie- at beginning --// [INFO] [stderr] 177 | | result.append_primary('K'); [INFO] [stderr] 178 | | result.append_alternate('J'); [INFO] [stderr] 179 | | index + 2 [INFO] [stderr] 180 | | } else if(contains(&value, index + 1, 2, "ER") || current_char == 'Y') && [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/phonetics/metaphone/handler.rs:211:57 [INFO] [stderr] | [INFO] [stderr] 211 | fn handle_gh(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:244:60 [INFO] [stderr] | [INFO] [stderr] 244 | pub fn handle_h(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:254:60 [INFO] [stderr] | [INFO] [stderr] 254 | pub fn handle_j(result: &mut DoubleMetaphoneResult, value: &String, index: usize, slavo_germanic: bool) -> usize { [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/phonetics/metaphone/handler.rs:286:60 [INFO] [stderr] | [INFO] [stderr] 286 | pub fn handle_k(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:294:60 [INFO] [stderr] | [INFO] [stderr] 294 | pub fn handle_l(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:316:60 [INFO] [stderr] | [INFO] [stderr] 316 | pub fn handle_m(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:321:60 [INFO] [stderr] | [INFO] [stderr] 321 | pub fn handle_n(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:325:60 [INFO] [stderr] | [INFO] [stderr] 325 | pub fn handle_p(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:343:60 [INFO] [stderr] | [INFO] [stderr] 343 | pub fn handle_q(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:351:60 [INFO] [stderr] | [INFO] [stderr] 351 | pub fn handle_r(result: &mut DoubleMetaphoneResult, value: &String, index: usize, slavo_germanic: bool) -> usize { [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/phonetics/metaphone/handler.rs:363:60 [INFO] [stderr] | [INFO] [stderr] 363 | pub fn handle_s(result: &mut DoubleMetaphoneResult, value: &String, index: usize, slavo_germanic: bool) -> usize { [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/phonetics/metaphone/handler.rs:419:57 [INFO] [stderr] | [INFO] [stderr] 419 | fn handle_sc(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:455:60 [INFO] [stderr] | [INFO] [stderr] 455 | pub fn handle_t(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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] error: this `if` has identical blocks [INFO] [stderr] --> src/phonetics/metaphone/handler.rs:459:72 [INFO] [stderr] | [INFO] [stderr] 459 | } else if contains_at_least_one(&value, index, 3, &["TIA", "TCH"]) { [INFO] [stderr] | ________________________________________________________________________^ [INFO] [stderr] 460 | | result.append('X'); [INFO] [stderr] 461 | | index + 3 [INFO] [stderr] 462 | | } else if contains(&value, index, 2, "TH") || contains(&value, index, 3, "TTH") { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] note: same as this [INFO] [stderr] --> src/phonetics/metaphone/handler.rs:456:43 [INFO] [stderr] | [INFO] [stderr] 456 | if contains(&value, index, 4, "TION") { [INFO] [stderr] | ___________________________________________^ [INFO] [stderr] 457 | | result.append('X'); [INFO] [stderr] 458 | | index + 3 [INFO] [stderr] 459 | | } else if contains_at_least_one(&value, index, 3, &["TIA", "TCH"]) { [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/phonetics/metaphone/handler.rs:481:60 [INFO] [stderr] | [INFO] [stderr] 481 | pub fn handle_v(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:489:60 [INFO] [stderr] | [INFO] [stderr] 489 | pub fn handle_w(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:522:60 [INFO] [stderr] | [INFO] [stderr] 522 | pub fn handle_x(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:540:60 [INFO] [stderr] | [INFO] [stderr] 540 | pub fn handle_z(result: &mut DoubleMetaphoneResult, value: &String, index: usize, slavo_germanic: bool) -> usize { [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/phonetics/metaphone/handler.rs:565:64 [INFO] [stderr] | [INFO] [stderr] 565 | fn double_next_char(result: &mut DoubleMetaphoneResult, value: &String, index: usize, letter: char) -> usize { [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: methods called `is_*` usually take self by reference or no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/phonetics/metaphone/double_metaphone_result.rs:16:24 [INFO] [stderr] | [INFO] [stderr] 16 | pub fn is_complete(&mut self) -> bool { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/phonetics/metaphone/double_metaphone.rs:77:20 [INFO] [stderr] | [INFO] [stderr] 77 | value.contains("W") || value.contains("K") || value.contains("CZ") || value.contains("WITZ") [INFO] [stderr] | ^^^ help: try using a char instead: `'W'` [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/phonetics/metaphone/double_metaphone.rs:77:43 [INFO] [stderr] | [INFO] [stderr] 77 | value.contains("W") || value.contains("K") || value.contains("CZ") || value.contains("WITZ") [INFO] [stderr] | ^^^ help: try using a char instead: `'K'` [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: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/phonetics/metaphone/double_metaphone.rs:83:56 [INFO] [stderr] | [INFO] [stderr] 83 | .map(|silent: &&str| value.starts_with(silent)) [INFO] [stderr] | ________________________________________________________^ [INFO] [stderr] 84 | | .fold(false, |acc, x| acc || x) [INFO] [stderr] | |_______________________________________^ help: try: `.any(|x| x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/phonetics/metaphone/double_metaphone.rs:88:8 [INFO] [stderr] | [INFO] [stderr] 88 | if value.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `value.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/phonetics/metaphone/double_metaphone.rs:94:8 [INFO] [stderr] | [INFO] [stderr] 94 | if value.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `value.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 function has a cyclomatic complexity of 31 [INFO] [stderr] --> src/phonetics/metaphone/metaphone.rs:16:1 [INFO] [stderr] | [INFO] [stderr] 16 | / pub fn metaphone(word: &T) -> String { [INFO] [stderr] 17 | | let word = word.to_string(); [INFO] [stderr] 18 | | if word.is_empty() { [INFO] [stderr] 19 | | return "".to_owned(); [INFO] [stderr] ... | [INFO] [stderr] 98 | | code [INFO] [stderr] 99 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] error: aborting due to 6 previous errors [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/distance.rs:19:8 [INFO] [stderr] | [INFO] [stderr] 19 | if a.len() == 0 || b.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `a.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/distance.rs:19:24 [INFO] [stderr] | [INFO] [stderr] 19 | if a.len() == 0 || b.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `b.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/distance.rs:116:15 [INFO] [stderr] | [INFO] [stderr] 116 | } else if a.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `a.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/distance.rs:118:15 [INFO] [stderr] | [INFO] [stderr] 118 | } else if b.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `b.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: an inclusive range would be more readable [INFO] [stderr] --> src/distance.rs:122:40 [INFO] [stderr] | [INFO] [stderr] 122 | let mut prev_distances: Vec = (0..(b.len() as u16 + 1)).collect::>(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(0..=b.len() as u16)` [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] error: Could not compile `nlp`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/phonetics/utils/metaphone_utils.rs:18:24 [INFO] [stderr] | [INFO] [stderr] 18 | pub fn contains(value: &String, start: usize, len: usize, search: &str) -> bool { [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/phonetics/utils/metaphone_utils.rs:26:37 [INFO] [stderr] | [INFO] [stderr] 26 | pub fn contains_at_least_one(value: &String, start: usize, len: usize, search: &[&str]) -> bool { [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: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/phonetics/utils/metaphone_utils.rs:29:49 [INFO] [stderr] | [INFO] [stderr] 29 | .map(|x| contains(value, start, len, x)) [INFO] [stderr] | _________________________________________________^ [INFO] [stderr] 30 | | .fold(false, |acc, x| acc || x) [INFO] [stderr] | |_______________________________________^ help: try: `.any(|x| x)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_fold)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/phonetics/utils/metaphone_utils.rs:33:23 [INFO] [stderr] | [INFO] [stderr] 33 | pub fn char_at(value: &String, index: usize) -> Option { [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/phonetics/utils/metaphone_utils.rs:37:29 [INFO] [stderr] | [INFO] [stderr] 37 | pub fn char_at_match(value: &String, index: usize, search: char) -> bool { [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/phonetics/utils/metaphone_utils.rs:44:36 [INFO] [stderr] | [INFO] [stderr] 44 | pub fn char_at_match_before(value: &String, index: usize, reduce: usize, search: char) -> bool { [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/phonetics/utils/metaphone_utils.rs:52:35 [INFO] [stderr] | [INFO] [stderr] 52 | pub fn char_at_match_after(value: &String, index: usize, increase: usize, search: char) -> bool { [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/phonetics/metaphone/conditions.rs:6:28 [INFO] [stderr] | [INFO] [stderr] 6 | pub fn condition_c0(value: &String, index: usize) -> bool { [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] error: this `if` has identical blocks [INFO] [stderr] --> src/phonetics/metaphone/conditions.rs:12:47 [INFO] [stderr] | [INFO] [stderr] 12 | !contains(&value, index -1, 3, "ACH") { [INFO] [stderr] | _______________________________________________^ [INFO] [stderr] 13 | | false [INFO] [stderr] 14 | | } else { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/phonetics/metaphone/conditions.rs:9:26 [INFO] [stderr] | [INFO] [stderr] 9 | } else if index <= 1 { [INFO] [stderr] | __________________________^ [INFO] [stderr] 10 | | false [INFO] [stderr] 11 | | } else if is_vowel(&value, index - 2) || [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/phonetics/metaphone/conditions.rs:19:29 [INFO] [stderr] | [INFO] [stderr] 19 | pub fn condition_ch0(value: &String, index: usize) -> bool { [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] error: this `if` has identical blocks [INFO] [stderr] --> src/phonetics/metaphone/conditions.rs:24:85 [INFO] [stderr] | [INFO] [stderr] 24 | !contains_at_least_one(&value, index + 1, 3, &["HOR", "HYM", "HIA", "HEM"]) { [INFO] [stderr] | _____________________________________________________________________________________^ [INFO] [stderr] 25 | | false [INFO] [stderr] 26 | | } else if contains(&value, 0, 5, "CHORE") { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] note: same as this [INFO] [stderr] --> src/phonetics/metaphone/conditions.rs:20:19 [INFO] [stderr] | [INFO] [stderr] 20 | if index != 0 { [INFO] [stderr] | ___________________^ [INFO] [stderr] 21 | | false [INFO] [stderr] 22 | | } else if [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/phonetics/metaphone/conditions.rs:26:12 [INFO] [stderr] | [INFO] [stderr] 26 | } else if contains(&value, 0, 5, "CHORE") { [INFO] [stderr] | ____________^ [INFO] [stderr] 27 | | false [INFO] [stderr] 28 | | } else { [INFO] [stderr] 29 | | true [INFO] [stderr] 30 | | } [INFO] [stderr] | |_____^ help: you can reduce it to: `!contains(&value, 0, 5, "CHORE")` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/phonetics/metaphone/conditions.rs:33:29 [INFO] [stderr] | [INFO] [stderr] 33 | pub fn condition_ch1(value: &String, index: usize) -> bool { [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/phonetics/metaphone/conditions.rs:43:28 [INFO] [stderr] | [INFO] [stderr] 43 | pub fn condition_m0(value: &String, index: usize) -> bool { [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/phonetics/metaphone/conditions.rs:56:28 [INFO] [stderr] | [INFO] [stderr] 56 | pub fn condition_l0(value: &String, index: usize) -> bool { [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] error: this `if` has identical blocks [INFO] [stderr] --> src/phonetics/metaphone/conditions.rs:59:190 [INFO] [stderr] | [INFO] [stderr] 59 | } else if (contains_at_least_one(&value, value.len() - 2, 2, &["AS", "OS"]) || contains_at_least_one(&value, value.len() - 1, 1, &["A", "O"])) && contains(&value, index - 1, 4, "ALLE") { [INFO] [stderr] | ______________________________________________________________________________________________________________________________________________________________________________________________^ [INFO] [stderr] 60 | | true [INFO] [stderr] 61 | | } else { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] note: same as this [INFO] [stderr] --> src/phonetics/metaphone/conditions.rs:57:107 [INFO] [stderr] | [INFO] [stderr] 57 | if index == value.len() - 3 && contains_at_least_one(&value, index - 1, 4, &["ILLO", "ILLA", "ALLE"]) { [INFO] [stderr] | ___________________________________________________________________________________________________________^ [INFO] [stderr] 58 | | true [INFO] [stderr] 59 | | } else if (contains_at_least_one(&value, value.len() - 2, 2, &["AS", "OS"]) || contains_at_least_one(&value, value.len() - 1, 1, &["A", "O"])) && contains(&value, index - 1, 4, "ALLE") { [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/phonetics/metaphone/conditions.rs:59:12 [INFO] [stderr] | [INFO] [stderr] 59 | } else if (contains_at_least_one(&value, value.len() - 2, 2, &["AS", "OS"]) || contains_at_least_one(&value, value.len() - 1, 1, &["A", "O"])) && contains(&value, index - 1, 4, "ALLE") { [INFO] [stderr] | ____________^ [INFO] [stderr] 60 | | true [INFO] [stderr] 61 | | } else { [INFO] [stderr] 62 | | false [INFO] [stderr] 63 | | } [INFO] [stderr] | |_____^ help: you can reduce it to: `(contains_at_least_one(&value, value.len() - 2, 2, &["AS", "OS"]) || contains_at_least_one(&value, value.len() - 1, 1, &["A", "O"])) && contains(&value, index - 1, 4, "ALLE")` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/phonetics/metaphone/handler.rs:8:60 [INFO] [stderr] | [INFO] [stderr] 8 | pub fn handle_b(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:25:60 [INFO] [stderr] | [INFO] [stderr] 25 | pub fn handle_c(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:75:57 [INFO] [stderr] | [INFO] [stderr] 75 | fn handle_cc(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:93:61 [INFO] [stderr] | [INFO] [stderr] 93 | pub fn handle_ch(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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] error: this `if` has identical blocks [INFO] [stderr] --> src/phonetics/metaphone/handler.rs:102:44 [INFO] [stderr] | [INFO] [stderr] 102 | } else if condition_ch1(&value, index) { [INFO] [stderr] | ____________________________________________^ [INFO] [stderr] 103 | | //-- Germanic, Greek, or otherwise 'ch' for 'kh' sound --// [INFO] [stderr] 104 | | result.append('K'); [INFO] [stderr] 105 | | index + 2 [INFO] [stderr] 106 | | } else { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] note: same as this [INFO] [stderr] --> src/phonetics/metaphone/handler.rs:98:44 [INFO] [stderr] | [INFO] [stderr] 98 | } else if condition_ch0(&value, index) { [INFO] [stderr] | ____________________________________________^ [INFO] [stderr] 99 | | //-- Greek roots ("chemistry", "chorus", etc.) --// [INFO] [stderr] 100 | | result.append('K'); [INFO] [stderr] 101 | | index + 2 [INFO] [stderr] 102 | | } else if condition_ch1(&value, index) { [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/phonetics/metaphone/handler.rs:122:60 [INFO] [stderr] | [INFO] [stderr] 122 | pub fn handle_d(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:143:60 [INFO] [stderr] | [INFO] [stderr] 143 | pub fn handle_f(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:147:60 [INFO] [stderr] | [INFO] [stderr] 147 | pub fn handle_g(result: &mut DoubleMetaphoneResult, value: &String, index: usize, slavo_germanic: bool) -> usize { [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] error: this `if` has identical blocks [INFO] [stderr] --> src/phonetics/metaphone/handler.rs:183:71 [INFO] [stderr] | [INFO] [stderr] 183 | !contains_at_least_one(&value, index - 1, 3, &["RGY", "OGY"]) { [INFO] [stderr] | _______________________________________________________________________^ [INFO] [stderr] 184 | | //-- -ger-, -gy- --// [INFO] [stderr] 185 | | result.append_primary('K'); [INFO] [stderr] 186 | | result.append_alternate('J'); [INFO] [stderr] 187 | | index + 2 [INFO] [stderr] 188 | | } else if contains_at_least_one(&value, index + 1, 1, &["E", "I", "Y"]) || (index > 0 && contains_at_least_one(&value, index -1, 4, &["AGGI", "OGGI"])) { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] note: same as this [INFO] [stderr] --> src/phonetics/metaphone/handler.rs:175:132 [INFO] [stderr] | [INFO] [stderr] 175 | } else if index == 0 && (current_char == 'Y' || contains_at_least_one(&value, index + 1, 2, ES_EP_EB_EL_EY_IB_IL_IN_IE_EI_ER)) { [INFO] [stderr] | ____________________________________________________________________________________________________________________________________^ [INFO] [stderr] 176 | | //-- -ges-, -gep-, -gel-, -gie- at beginning --// [INFO] [stderr] 177 | | result.append_primary('K'); [INFO] [stderr] 178 | | result.append_alternate('J'); [INFO] [stderr] 179 | | index + 2 [INFO] [stderr] 180 | | } else if(contains(&value, index + 1, 2, "ER") || current_char == 'Y') && [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/phonetics/metaphone/handler.rs:211:57 [INFO] [stderr] | [INFO] [stderr] 211 | fn handle_gh(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:244:60 [INFO] [stderr] | [INFO] [stderr] 244 | pub fn handle_h(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:254:60 [INFO] [stderr] | [INFO] [stderr] 254 | pub fn handle_j(result: &mut DoubleMetaphoneResult, value: &String, index: usize, slavo_germanic: bool) -> usize { [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/phonetics/metaphone/handler.rs:286:60 [INFO] [stderr] | [INFO] [stderr] 286 | pub fn handle_k(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:294:60 [INFO] [stderr] | [INFO] [stderr] 294 | pub fn handle_l(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:316:60 [INFO] [stderr] | [INFO] [stderr] 316 | pub fn handle_m(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:321:60 [INFO] [stderr] | [INFO] [stderr] 321 | pub fn handle_n(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:325:60 [INFO] [stderr] | [INFO] [stderr] 325 | pub fn handle_p(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:343:60 [INFO] [stderr] | [INFO] [stderr] 343 | pub fn handle_q(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:351:60 [INFO] [stderr] | [INFO] [stderr] 351 | pub fn handle_r(result: &mut DoubleMetaphoneResult, value: &String, index: usize, slavo_germanic: bool) -> usize { [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/phonetics/metaphone/handler.rs:363:60 [INFO] [stderr] | [INFO] [stderr] 363 | pub fn handle_s(result: &mut DoubleMetaphoneResult, value: &String, index: usize, slavo_germanic: bool) -> usize { [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/phonetics/metaphone/handler.rs:419:57 [INFO] [stderr] | [INFO] [stderr] 419 | fn handle_sc(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:455:60 [INFO] [stderr] | [INFO] [stderr] 455 | pub fn handle_t(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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] error: this `if` has identical blocks [INFO] [stderr] --> src/phonetics/metaphone/handler.rs:459:72 [INFO] [stderr] | [INFO] [stderr] 459 | } else if contains_at_least_one(&value, index, 3, &["TIA", "TCH"]) { [INFO] [stderr] | ________________________________________________________________________^ [INFO] [stderr] 460 | | result.append('X'); [INFO] [stderr] 461 | | index + 3 [INFO] [stderr] 462 | | } else if contains(&value, index, 2, "TH") || contains(&value, index, 3, "TTH") { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] note: same as this [INFO] [stderr] --> src/phonetics/metaphone/handler.rs:456:43 [INFO] [stderr] | [INFO] [stderr] 456 | if contains(&value, index, 4, "TION") { [INFO] [stderr] | ___________________________________________^ [INFO] [stderr] 457 | | result.append('X'); [INFO] [stderr] 458 | | index + 3 [INFO] [stderr] 459 | | } else if contains_at_least_one(&value, index, 3, &["TIA", "TCH"]) { [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/phonetics/metaphone/handler.rs:481:60 [INFO] [stderr] | [INFO] [stderr] 481 | pub fn handle_v(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:489:60 [INFO] [stderr] | [INFO] [stderr] 489 | pub fn handle_w(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:522:60 [INFO] [stderr] | [INFO] [stderr] 522 | pub fn handle_x(result: &mut DoubleMetaphoneResult, value: &String, index: usize) -> usize { [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/phonetics/metaphone/handler.rs:540:60 [INFO] [stderr] | [INFO] [stderr] 540 | pub fn handle_z(result: &mut DoubleMetaphoneResult, value: &String, index: usize, slavo_germanic: bool) -> usize { [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/phonetics/metaphone/handler.rs:565:64 [INFO] [stderr] | [INFO] [stderr] 565 | fn double_next_char(result: &mut DoubleMetaphoneResult, value: &String, index: usize, letter: char) -> usize { [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: methods called `is_*` usually take self by reference or no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/phonetics/metaphone/double_metaphone_result.rs:16:24 [INFO] [stderr] | [INFO] [stderr] 16 | pub fn is_complete(&mut self) -> bool { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/phonetics/metaphone/double_metaphone.rs:77:20 [INFO] [stderr] | [INFO] [stderr] 77 | value.contains("W") || value.contains("K") || value.contains("CZ") || value.contains("WITZ") [INFO] [stderr] | ^^^ help: try using a char instead: `'W'` [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/phonetics/metaphone/double_metaphone.rs:77:43 [INFO] [stderr] | [INFO] [stderr] 77 | value.contains("W") || value.contains("K") || value.contains("CZ") || value.contains("WITZ") [INFO] [stderr] | ^^^ help: try using a char instead: `'K'` [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: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/phonetics/metaphone/double_metaphone.rs:83:56 [INFO] [stderr] | [INFO] [stderr] 83 | .map(|silent: &&str| value.starts_with(silent)) [INFO] [stderr] | ________________________________________________________^ [INFO] [stderr] 84 | | .fold(false, |acc, x| acc || x) [INFO] [stderr] | |_______________________________________^ help: try: `.any(|x| x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/phonetics/metaphone/double_metaphone.rs:88:8 [INFO] [stderr] | [INFO] [stderr] 88 | if value.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `value.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/phonetics/metaphone/double_metaphone.rs:94:8 [INFO] [stderr] | [INFO] [stderr] 94 | if value.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `value.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 function has a cyclomatic complexity of 31 [INFO] [stderr] --> src/phonetics/metaphone/metaphone.rs:16:1 [INFO] [stderr] | [INFO] [stderr] 16 | / pub fn metaphone(word: &T) -> String { [INFO] [stderr] 17 | | let word = word.to_string(); [INFO] [stderr] 18 | | if word.is_empty() { [INFO] [stderr] 19 | | return "".to_owned(); [INFO] [stderr] ... | [INFO] [stderr] 98 | | code [INFO] [stderr] 99 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] error: aborting due to 6 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `nlp`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "8cc56d7922838b57ed1068d7cdd6ca81fe4a371911b52f56405088e89b37af4e"` [INFO] running `"docker" "rm" "-f" "8cc56d7922838b57ed1068d7cdd6ca81fe4a371911b52f56405088e89b37af4e"` [INFO] [stdout] 8cc56d7922838b57ed1068d7cdd6ca81fe4a371911b52f56405088e89b37af4e