[INFO] crate array_tool 1.0.3 is already in cache [INFO] extracting crate array_tool 1.0.3 into work/ex/clippy-test-run/sources/stable/reg/array_tool/1.0.3 [INFO] extracting crate array_tool 1.0.3 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/array_tool/1.0.3 [INFO] validating manifest of array_tool-1.0.3 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 array_tool-1.0.3 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 array_tool-1.0.3 [INFO] finished frobbing array_tool-1.0.3 [INFO] frobbed toml for array_tool-1.0.3 written to work/ex/clippy-test-run/sources/stable/reg/array_tool/1.0.3/Cargo.toml [INFO] started frobbing array_tool-1.0.3 [INFO] finished frobbing array_tool-1.0.3 [INFO] frobbed toml for array_tool-1.0.3 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/array_tool/1.0.3/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 array_tool-1.0.3 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/array_tool/1.0.3:/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] c60fff62f1c28c67ad88a328d1f20013aa94bff0fd3ed7929cf8b020322083aa [INFO] running `"docker" "start" "-a" "c60fff62f1c28c67ad88a328d1f20013aa94bff0fd3ed7929cf8b020322083aa"` [INFO] [stderr] Checking array_tool v1.0.3 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/string.rs:19:7 [INFO] [stderr] | [INFO] [stderr] 19 | source: source, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `source` [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/string.rs:19:7 [INFO] [stderr] | [INFO] [stderr] 19 | source: source, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `source` [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: this if statement can be collapsed [INFO] [stderr] --> src/string.rs:33:7 [INFO] [stderr] | [INFO] [stderr] 33 | / if self.offset < self.source.len() { [INFO] [stderr] 34 | | if self.source.is_char_boundary(idx) { [INFO] [stderr] 35 | | let slice: &[u8] = self.source[self.offset..idx].as_bytes(); [INFO] [stderr] 36 | | [INFO] [stderr] ... | [INFO] [stderr] 42 | | } [INFO] [stderr] 43 | | } [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] 33 | if self.offset < self.source.len() && self.source.is_char_boundary(idx) { [INFO] [stderr] 34 | let slice: &[u8] = self.source[self.offset..idx].as_bytes(); [INFO] [stderr] 35 | [INFO] [stderr] 36 | self.grapheme_count += 1; [INFO] [stderr] 37 | self.offset = idx; [INFO] [stderr] 38 | [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/string.rs:291:17 [INFO] [stderr] | [INFO] [stderr] 291 | return t.subst_marks(mrkrs.to_vec(), "\n") [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `t.subst_marks(mrkrs.to_vec(), "\n")` [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: this if statement can be collapsed [INFO] [stderr] --> src/string.rs:33:7 [INFO] [stderr] | [INFO] [stderr] 33 | / if self.offset < self.source.len() { [INFO] [stderr] 34 | | if self.source.is_char_boundary(idx) { [INFO] [stderr] 35 | | let slice: &[u8] = self.source[self.offset..idx].as_bytes(); [INFO] [stderr] 36 | | [INFO] [stderr] ... | [INFO] [stderr] 42 | | } [INFO] [stderr] 43 | | } [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] 33 | if self.offset < self.source.len() && self.source.is_char_boundary(idx) { [INFO] [stderr] 34 | let slice: &[u8] = self.source[self.offset..idx].as_bytes(); [INFO] [stderr] 35 | [INFO] [stderr] 36 | self.grapheme_count += 1; [INFO] [stderr] 37 | self.offset = idx; [INFO] [stderr] 38 | [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/string.rs:291:17 [INFO] [stderr] | [INFO] [stderr] 291 | return t.subst_marks(mrkrs.to_vec(), "\n") [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `t.subst_marks(mrkrs.to_vec(), "\n")` [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/iter.rs:76:30 [INFO] [stderr] | [INFO] [stderr] 76 | fn next_back(&mut self) -> Option<(Option, Option)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/iter.rs:114:25 [INFO] [stderr] | [INFO] [stderr] 114 | fn next(&mut self) -> Option<(Option, Option)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/iter.rs:131:30 [INFO] [stderr] | [INFO] [stderr] 131 | fn next_back(&mut self) -> Option<(Option, Option)> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/vec.rs:181:8 [INFO] [stderr] | [INFO] [stderr] 181 | if self.len() == 0 { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.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: statement can be reduced [INFO] [stderr] --> src/vec.rs:185:5 [INFO] [stderr] | [INFO] [stderr] 185 | &self.insert(0, other); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.insert(0, other);` [INFO] [stderr] | [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/iter.rs:76:30 [INFO] [stderr] | [INFO] [stderr] 76 | fn next_back(&mut self) -> Option<(Option, Option)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = note: #[warn(clippy::unnecessary_operation)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/iter.rs:114:25 [INFO] [stderr] | [INFO] [stderr] 114 | fn next(&mut self) -> Option<(Option, Option)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: the loop variable `y` is only used to index `other`. [INFO] [stderr] --> src/vec.rs:227:16 [INFO] [stderr] | [INFO] [stderr] 227 | for y in 0..length { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 227 | for in other.iter().take(length) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/iter.rs:131:30 [INFO] [stderr] | [INFO] [stderr] 131 | fn next_back(&mut self) -> Option<(Option, Option)> [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: the loop variable `x` is only used to index `out`. [INFO] [stderr] --> src/vec.rs:286:14 [INFO] [stderr] | [INFO] [stderr] 286 | for x in 0..self.len()*(qty as usize) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 286 | for in out.iter_mut().take(self.len()*(qty as usize)) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/string.rs:102:61 [INFO] [stderr] | [INFO] [stderr] 102 | } else if !(everything || chars.contains(&character)) { [INFO] [stderr] | _____________________________________________________________^ [INFO] [stderr] 103 | | output.extend_from_slice(character); [INFO] [stderr] 104 | | } [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/string.rs:100:28 [INFO] [stderr] | [INFO] [stderr] 100 | if last != character { [INFO] [stderr] | ____________________________^ [INFO] [stderr] 101 | | output.extend_from_slice(character); [INFO] [stderr] 102 | | } else if !(everything || chars.contains(&character)) { [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: length comparison to zero [INFO] [stderr] --> src/vec.rs:181:8 [INFO] [stderr] | [INFO] [stderr] 181 | if self.len() == 0 { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.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: statement can be reduced [INFO] [stderr] --> src/vec.rs:185:5 [INFO] [stderr] | [INFO] [stderr] 185 | &self.insert(0, other); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.insert(0, other);` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_operation)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_operation [INFO] [stderr] [INFO] [stderr] warning: the loop variable `y` is only used to index `other`. [INFO] [stderr] --> src/vec.rs:227:16 [INFO] [stderr] | [INFO] [stderr] 227 | for y in 0..length { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/string.rs:129:33 [INFO] [stderr] | [INFO] [stderr] 129 | if self.is_empty() { return format!("{}", self) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `self.to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] | [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 227 | for in other.iter().take(length) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/string.rs:146:9 [INFO] [stderr] | [INFO] [stderr] 146 | remainder = remainder - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `remainder -= 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: an inclusive range would be more readable [INFO] [stderr] --> src/string.rs:149:16 [INFO] [stderr] | [INFO] [stderr] 149 | for _ in 0..val+1 { [INFO] [stderr] | ^^^^^^^^ help: use: `0..=val` [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: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/string.rs:150:16 [INFO] [stderr] | [INFO] [stderr] 150 | if let Some(_) = iter.peek() { // Don't add spaces if last word [INFO] [stderr] | _________- ^^^^^^^ [INFO] [stderr] 151 | | obj.push_str( " " ); [INFO] [stderr] 152 | | } [INFO] [stderr] | |_________- help: try this: `if iter.peek().is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: the loop variable `x` is only used to index `out`. [INFO] [stderr] --> src/vec.rs:286:14 [INFO] [stderr] | [INFO] [stderr] 286 | for x in 0..self.len()*(qty as usize) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 286 | for in out.iter_mut().take(self.len()*(qty as usize)) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/string.rs:222:25 [INFO] [stderr] | [INFO] [stderr] 222 | while let Some(x) = seeker.next() { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `for x in seeker { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/string.rs:261:80 [INFO] [stderr] | [INFO] [stderr] 261 | match t[offset..*vec![offset+chunk,t.len()].iter().min().unwrap()].rfind("\n") { [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/string.rs:263:84 [INFO] [stderr] | [INFO] [stderr] 263 | match t[offset..*vec![offset+chunk,t.len()].iter().min().unwrap()].rfind(" ") { [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/string.rs:267:17 [INFO] [stderr] | [INFO] [stderr] 267 | / match t.seek_end_of_whitespace(offset+x) { [INFO] [stderr] 268 | | Some(a) => { [INFO] [stderr] 269 | | if a.ne(&0) { [INFO] [stderr] 270 | | eows = x+a-1; [INFO] [stderr] ... | [INFO] [stderr] 273 | | None => {}, [INFO] [stderr] 274 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 267 | if let Some(a) = t.seek_end_of_whitespace(offset+x) { [INFO] [stderr] 268 | if a.ne(&0) { [INFO] [stderr] 269 | eows = x+a-1; [INFO] [stderr] 270 | } [INFO] [stderr] 271 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/string.rs:102:61 [INFO] [stderr] | [INFO] [stderr] 102 | } else if !(everything || chars.contains(&character)) { [INFO] [stderr] | _____________________________________________________________^ [INFO] [stderr] 103 | | output.extend_from_slice(character); [INFO] [stderr] 104 | | } [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/string.rs:100:28 [INFO] [stderr] | [INFO] [stderr] 100 | if last != character { [INFO] [stderr] | ____________________________^ [INFO] [stderr] 101 | | output.extend_from_slice(character); [INFO] [stderr] 102 | | } else if !(everything || chars.contains(&character)) { [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: useless use of `format!` [INFO] [stderr] --> src/string.rs:129:33 [INFO] [stderr] | [INFO] [stderr] 129 | if self.is_empty() { return format!("{}", self) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `self.to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/string.rs:146:9 [INFO] [stderr] | [INFO] [stderr] 146 | remainder = remainder - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `remainder -= 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: an inclusive range would be more readable [INFO] [stderr] --> src/string.rs:149:16 [INFO] [stderr] | [INFO] [stderr] 149 | for _ in 0..val+1 { [INFO] [stderr] | ^^^^^^^^ help: use: `0..=val` [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: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/string.rs:150:16 [INFO] [stderr] | [INFO] [stderr] 150 | if let Some(_) = iter.peek() { // Don't add spaces if last word [INFO] [stderr] | _________- ^^^^^^^ [INFO] [stderr] 151 | | obj.push_str( " " ); [INFO] [stderr] 152 | | } [INFO] [stderr] | |_________- help: try this: `if iter.peek().is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/string.rs:222:25 [INFO] [stderr] | [INFO] [stderr] 222 | while let Some(x) = seeker.next() { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `for x in seeker { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/string.rs:261:80 [INFO] [stderr] | [INFO] [stderr] 261 | match t[offset..*vec![offset+chunk,t.len()].iter().min().unwrap()].rfind("\n") { [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/string.rs:263:84 [INFO] [stderr] | [INFO] [stderr] 263 | match t[offset..*vec![offset+chunk,t.len()].iter().min().unwrap()].rfind(" ") { [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/string.rs:267:17 [INFO] [stderr] | [INFO] [stderr] 267 | / match t.seek_end_of_whitespace(offset+x) { [INFO] [stderr] 268 | | Some(a) => { [INFO] [stderr] 269 | | if a.ne(&0) { [INFO] [stderr] 270 | | eows = x+a-1; [INFO] [stderr] ... | [INFO] [stderr] 273 | | None => {}, [INFO] [stderr] 274 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 267 | if let Some(a) = t.seek_end_of_whitespace(offset+x) { [INFO] [stderr] 268 | if a.ne(&0) { [INFO] [stderr] 269 | eows = x+a-1; [INFO] [stderr] 270 | } [INFO] [stderr] 271 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: Could not compile `array_tool`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `array_tool`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "c60fff62f1c28c67ad88a328d1f20013aa94bff0fd3ed7929cf8b020322083aa"` [INFO] running `"docker" "rm" "-f" "c60fff62f1c28c67ad88a328d1f20013aa94bff0fd3ed7929cf8b020322083aa"` [INFO] [stdout] c60fff62f1c28c67ad88a328d1f20013aa94bff0fd3ed7929cf8b020322083aa