[INFO] updating cached repository mpdrescher/latex-preprocessor [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/mpdrescher/latex-preprocessor [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/mpdrescher/latex-preprocessor" "work/ex/clippy-test-run/sources/stable/gh/mpdrescher/latex-preprocessor"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/mpdrescher/latex-preprocessor'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/mpdrescher/latex-preprocessor" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mpdrescher/latex-preprocessor"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mpdrescher/latex-preprocessor'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 36a31eea87ed73b30434a1526a5f39ddf41f47e7 [INFO] sha for GitHub repo mpdrescher/latex-preprocessor: 36a31eea87ed73b30434a1526a5f39ddf41f47e7 [INFO] validating manifest of mpdrescher/latex-preprocessor 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 mpdrescher/latex-preprocessor 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 mpdrescher/latex-preprocessor [INFO] finished frobbing mpdrescher/latex-preprocessor [INFO] frobbed toml for mpdrescher/latex-preprocessor written to work/ex/clippy-test-run/sources/stable/gh/mpdrescher/latex-preprocessor/Cargo.toml [INFO] started frobbing mpdrescher/latex-preprocessor [INFO] finished frobbing mpdrescher/latex-preprocessor [INFO] frobbed toml for mpdrescher/latex-preprocessor written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mpdrescher/latex-preprocessor/Cargo.toml [INFO] crate mpdrescher/latex-preprocessor has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting mpdrescher/latex-preprocessor 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-4/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/gh/mpdrescher/latex-preprocessor:/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] aa973534d1b77aac9d0063485513726eb7e418fb9f870f528d1e6a3786fd9236 [INFO] running `"docker" "start" "-a" "aa973534d1b77aac9d0063485513726eb7e418fb9f870f528d1e6a3786fd9236"` [INFO] [stderr] Checking latex-preprocessor v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:108:13 [INFO] [stderr] | [INFO] [stderr] 108 | block_type: block_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `block_type` [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/main.rs:238:13 [INFO] [stderr] | [INFO] [stderr] 238 | blocks: blocks [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `blocks` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:108:13 [INFO] [stderr] | [INFO] [stderr] 108 | block_type: block_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `block_type` [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/main.rs:238:13 [INFO] [stderr] | [INFO] [stderr] 238 | blocks: blocks [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `blocks` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/main.rs:7:24 [INFO] [stderr] | [INFO] [stderr] 7 | const DEFAULT_HEADER: &'static str = r#"\documentclass[12pt, a4paper, twoside, titlepage]{article} [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/main.rs:19:24 [INFO] [stderr] | [INFO] [stderr] 19 | const DEFAULT_FOOTER: &'static str = r#"\end{flushleft} [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/main.rs:163:26 [INFO] [stderr] | [INFO] [stderr] 163 | else { [INFO] [stderr] | __________________________^ [INFO] [stderr] 164 | | if commented { [INFO] [stderr] 165 | | buffer.push_str(&format!("&{} &&\\text{{\\quad}}", elem)); [INFO] [stderr] 166 | | } [INFO] [stderr] ... | [INFO] [stderr] 169 | | } [INFO] [stderr] 170 | | } [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] 163 | else if commented { [INFO] [stderr] 164 | buffer.push_str(&format!("&{} &&\\text{{\\quad}}", elem)); [INFO] [stderr] 165 | } [INFO] [stderr] 166 | else { [INFO] [stderr] 167 | buffer.push_str(&format!("&{}", elem)); [INFO] [stderr] 168 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around method argument [INFO] [stderr] --> src/main.rs:181:44 [INFO] [stderr] | [INFO] [stderr] 181 | string.into_iter().fold(String::new(), (|mut acc, x| { [INFO] [stderr] | ____________________________________________^ [INFO] [stderr] 182 | | acc.push_str(prefix); [INFO] [stderr] 183 | | acc.push_str(&x); [INFO] [stderr] 184 | | acc.push_str(suffix); [INFO] [stderr] 185 | | acc [INFO] [stderr] 186 | | })) [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 181 | string.into_iter().fold(String::new(), |mut acc, x| { [INFO] [stderr] 182 | acc.push_str(prefix); [INFO] [stderr] 183 | acc.push_str(&x); [INFO] [stderr] 184 | acc.push_str(suffix); [INFO] [stderr] 185 | acc [INFO] [stderr] 186 | }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/main.rs:7:24 [INFO] [stderr] | [INFO] [stderr] 7 | const DEFAULT_HEADER: &'static str = r#"\documentclass[12pt, a4paper, twoside, titlepage]{article} [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/main.rs:19:24 [INFO] [stderr] | [INFO] [stderr] 19 | const DEFAULT_FOOTER: &'static str = r#"\end{flushleft} [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/main.rs:163:26 [INFO] [stderr] | [INFO] [stderr] 163 | else { [INFO] [stderr] | __________________________^ [INFO] [stderr] 164 | | if commented { [INFO] [stderr] 165 | | buffer.push_str(&format!("&{} &&\\text{{\\quad}}", elem)); [INFO] [stderr] 166 | | } [INFO] [stderr] ... | [INFO] [stderr] 169 | | } [INFO] [stderr] 170 | | } [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] 163 | else if commented { [INFO] [stderr] 164 | buffer.push_str(&format!("&{} &&\\text{{\\quad}}", elem)); [INFO] [stderr] 165 | } [INFO] [stderr] 166 | else { [INFO] [stderr] 167 | buffer.push_str(&format!("&{}", elem)); [INFO] [stderr] 168 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around method argument [INFO] [stderr] --> src/main.rs:181:44 [INFO] [stderr] | [INFO] [stderr] 181 | string.into_iter().fold(String::new(), (|mut acc, x| { [INFO] [stderr] | ____________________________________________^ [INFO] [stderr] 182 | | acc.push_str(prefix); [INFO] [stderr] 183 | | acc.push_str(&x); [INFO] [stderr] 184 | | acc.push_str(suffix); [INFO] [stderr] 185 | | acc [INFO] [stderr] 186 | | })) [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] 181 | string.into_iter().fold(String::new(), |mut acc, x| { [INFO] [stderr] 182 | acc.push_str(prefix); [INFO] [stderr] 183 | acc.push_str(&x); [INFO] [stderr] 184 | acc.push_str(suffix); [INFO] [stderr] 185 | acc [INFO] [stderr] 186 | }) [INFO] [stderr] | [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/main.rs:51:21 [INFO] [stderr] | [INFO] [stderr] 51 | fn write_file(path: &String, content: String) -> IOResult<()> { [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:69:9 [INFO] [stderr] | [INFO] [stderr] 69 | / match self { [INFO] [stderr] 70 | | &Line::Normal(_) => LineType::Normal, [INFO] [stderr] 71 | | &Line::Header(_, x) => LineType::Header(x), [INFO] [stderr] 72 | | &Line::Align(_) => LineType::Align [INFO] [stderr] 73 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 69 | match *self { [INFO] [stderr] 70 | Line::Normal(_) => LineType::Normal, [INFO] [stderr] 71 | Line::Header(_, x) => LineType::Header(x), [INFO] [stderr] 72 | Line::Align(_) => LineType::Align [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:99:12 [INFO] [stderr] | [INFO] [stderr] 99 | if buffer.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `buffer.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] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:102:26 [INFO] [stderr] | [INFO] [stderr] 102 | let block_type = buffer.get(0).unwrap().get_type(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&buffer[0]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/main.rs:118:51 [INFO] [stderr] | [INFO] [stderr] 118 | .map(|x| if x.trim() == "~~" {format!("\\quad\\newline")} else {x}) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"\\quad\\newline".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] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:198:33 [INFO] [stderr] | [INFO] [stderr] 198 | if line.starts_with(">") { [INFO] [stderr] | ^^^ help: try using a char instead: `'>'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:201:38 [INFO] [stderr] | [INFO] [stderr] 201 | else if line.starts_with("#") { [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/main.rs:51:21 [INFO] [stderr] | [INFO] [stderr] 51 | fn write_file(path: &String, content: String) -> IOResult<()> { [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/main.rs:69:9 [INFO] [stderr] | [INFO] [stderr] 69 | / match self { [INFO] [stderr] 70 | | &Line::Normal(_) => LineType::Normal, [INFO] [stderr] 71 | | &Line::Header(_, x) => LineType::Header(x), [INFO] [stderr] 72 | | &Line::Align(_) => LineType::Align [INFO] [stderr] 73 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 69 | match *self { [INFO] [stderr] 70 | Line::Normal(_) => LineType::Normal, [INFO] [stderr] 71 | Line::Header(_, x) => LineType::Header(x), [INFO] [stderr] 72 | Line::Align(_) => LineType::Align [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:99:12 [INFO] [stderr] | [INFO] [stderr] 99 | if buffer.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `buffer.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: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/main.rs:102:26 [INFO] [stderr] | [INFO] [stderr] 102 | let block_type = buffer.get(0).unwrap().get_type(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&buffer[0]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/main.rs:118:51 [INFO] [stderr] | [INFO] [stderr] 118 | .map(|x| if x.trim() == "~~" {format!("\\quad\\newline")} else {x}) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"\\quad\\newline".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] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:198:33 [INFO] [stderr] | [INFO] [stderr] 198 | if line.starts_with(">") { [INFO] [stderr] | ^^^ help: try using a char instead: `'>'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:201:38 [INFO] [stderr] | [INFO] [stderr] 201 | else if line.starts_with("#") { [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] Finished dev [unoptimized + debuginfo] target(s) in 1.05s [INFO] running `"docker" "inspect" "aa973534d1b77aac9d0063485513726eb7e418fb9f870f528d1e6a3786fd9236"` [INFO] running `"docker" "rm" "-f" "aa973534d1b77aac9d0063485513726eb7e418fb9f870f528d1e6a3786fd9236"` [INFO] [stdout] aa973534d1b77aac9d0063485513726eb7e418fb9f870f528d1e6a3786fd9236