[INFO] crate simple_csv 0.0.15 is already in cache [INFO] extracting crate simple_csv 0.0.15 into work/ex/clippy-test-run/sources/stable/reg/simple_csv/0.0.15 [INFO] extracting crate simple_csv 0.0.15 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/simple_csv/0.0.15 [INFO] validating manifest of simple_csv-0.0.15 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 simple_csv-0.0.15 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 simple_csv-0.0.15 [INFO] finished frobbing simple_csv-0.0.15 [INFO] frobbed toml for simple_csv-0.0.15 written to work/ex/clippy-test-run/sources/stable/reg/simple_csv/0.0.15/Cargo.toml [INFO] started frobbing simple_csv-0.0.15 [INFO] finished frobbing simple_csv-0.0.15 [INFO] frobbed toml for simple_csv-0.0.15 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/simple_csv/0.0.15/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 simple_csv-0.0.15 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/simple_csv/0.0.15:/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] bd8b8121c5c09d2911a9f2849e587ec0a8c87abdcf2880cfab0da766e8340dc0 [INFO] running `"docker" "start" "-a" "bd8b8121c5c09d2911a9f2849e587ec0a8c87abdcf2880cfab0da766e8340dc0"` [INFO] [stderr] Checking simple_csv v0.0.15 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/reader.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | options: options [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `options` [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/writer.rs:43:13 [INFO] [stderr] | [INFO] [stderr] 43 | options: options, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `options` [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/writer.rs:44:13 [INFO] [stderr] | [INFO] [stderr] 44 | writer: writer, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `writer` [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/reader.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | options: options [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `options` [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/writer.rs:43:13 [INFO] [stderr] | [INFO] [stderr] 43 | options: options, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `options` [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/writer.rs:44:13 [INFO] [stderr] | [INFO] [stderr] 44 | writer: writer, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `writer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/reader.rs:202:9 [INFO] [stderr] | [INFO] [stderr] 202 | return Some(Ok(&self.row_data)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(Ok(&self.row_data))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/reader.rs:213:9 [INFO] [stderr] | [INFO] [stderr] 213 | / return match self.next_row() { [INFO] [stderr] 214 | | Some(Ok(..)) => { [INFO] [stderr] 215 | | // [INFO] [stderr] 216 | | let cap = self.row_data.capacity(); [INFO] [stderr] ... | [INFO] [stderr] 225 | | } [INFO] [stderr] 226 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 213 | match self.next_row() { [INFO] [stderr] 214 | Some(Ok(..)) => { [INFO] [stderr] 215 | // [INFO] [stderr] 216 | let cap = self.row_data.capacity(); [INFO] [stderr] 217 | let row = replace(&mut self.row_data, Vec::with_capacity(cap)); [INFO] [stderr] 218 | Some(Ok(row)) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/reader.rs:230:9 [INFO] [stderr] | [INFO] [stderr] 230 | return (0,None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(0,None)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/reader.rs:202:9 [INFO] [stderr] | [INFO] [stderr] 202 | return Some(Ok(&self.row_data)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(Ok(&self.row_data))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/reader.rs:213:9 [INFO] [stderr] | [INFO] [stderr] 213 | / return match self.next_row() { [INFO] [stderr] 214 | | Some(Ok(..)) => { [INFO] [stderr] 215 | | // [INFO] [stderr] 216 | | let cap = self.row_data.capacity(); [INFO] [stderr] ... | [INFO] [stderr] 225 | | } [INFO] [stderr] 226 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 213 | match self.next_row() { [INFO] [stderr] 214 | Some(Ok(..)) => { [INFO] [stderr] 215 | // [INFO] [stderr] 216 | let cap = self.row_data.capacity(); [INFO] [stderr] 217 | let row = replace(&mut self.row_data, Vec::with_capacity(cap)); [INFO] [stderr] 218 | Some(Ok(row)) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/reader.rs:230:9 [INFO] [stderr] | [INFO] [stderr] 230 | return (0,None); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(0,None)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/reader.rs:164:60 [INFO] [stderr] | [INFO] [stderr] 164 | let line_result = self.input_reader.read_until('\n' as u8, &mut self.line_bytes); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'\n' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: methods called `as_*` usually take self by reference or self by mutable reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/writer.rs:49:21 [INFO] [stderr] | [INFO] [stderr] 49 | pub fn as_inner(self) -> W { [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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/writer.rs:80:17 [INFO] [stderr] | [INFO] [stderr] 80 | / match is_quoted { [INFO] [stderr] 81 | | false => { [INFO] [stderr] 82 | | if c == text_enclosure || c == delimiter || c == '\n' || c == '\r'{ [INFO] [stderr] 83 | | is_quoted = true; [INFO] [stderr] ... | [INFO] [stderr] 100 | | } [INFO] [stderr] 101 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 80 | if is_quoted { [INFO] [stderr] 81 | match c { [INFO] [stderr] 82 | _ if c == text_enclosure => { [INFO] [stderr] 83 | try!(write!(&mut self.writer,"{}",c)); [INFO] [stderr] 84 | try!(write!(&mut self.writer,"{}",c)); [INFO] [stderr] 85 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/writer.rs:105:13 [INFO] [stderr] | [INFO] [stderr] 105 | / match is_quoted { [INFO] [stderr] 106 | | false => { [INFO] [stderr] 107 | | try!(self.writer.write_all(column.as_bytes())); [INFO] [stderr] 108 | | }, [INFO] [stderr] ... | [INFO] [stderr] 111 | | } [INFO] [stderr] 112 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 105 | if is_quoted { [INFO] [stderr] 106 | try!(write!(&mut self.writer,"{}",text_enclosure)); [INFO] [stderr] 107 | } else { [INFO] [stderr] 108 | try!(self.writer.write_all(column.as_bytes())); [INFO] [stderr] 109 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/reader.rs:164:60 [INFO] [stderr] | [INFO] [stderr] 164 | let line_result = self.input_reader.read_until('\n' as u8, &mut self.line_bytes); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'\n' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: methods called `as_*` usually take self by reference or self by mutable reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/writer.rs:49:21 [INFO] [stderr] | [INFO] [stderr] 49 | pub fn as_inner(self) -> W { [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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/writer.rs:80:17 [INFO] [stderr] | [INFO] [stderr] 80 | / match is_quoted { [INFO] [stderr] 81 | | false => { [INFO] [stderr] 82 | | if c == text_enclosure || c == delimiter || c == '\n' || c == '\r'{ [INFO] [stderr] 83 | | is_quoted = true; [INFO] [stderr] ... | [INFO] [stderr] 100 | | } [INFO] [stderr] 101 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 80 | if is_quoted { [INFO] [stderr] 81 | match c { [INFO] [stderr] 82 | _ if c == text_enclosure => { [INFO] [stderr] 83 | try!(write!(&mut self.writer,"{}",c)); [INFO] [stderr] 84 | try!(write!(&mut self.writer,"{}",c)); [INFO] [stderr] 85 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/writer.rs:105:13 [INFO] [stderr] | [INFO] [stderr] 105 | / match is_quoted { [INFO] [stderr] 106 | | false => { [INFO] [stderr] 107 | | try!(self.writer.write_all(column.as_bytes())); [INFO] [stderr] 108 | | }, [INFO] [stderr] ... | [INFO] [stderr] 111 | | } [INFO] [stderr] 112 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 105 | if is_quoted { [INFO] [stderr] 106 | try!(write!(&mut self.writer,"{}",text_enclosure)); [INFO] [stderr] 107 | } else { [INFO] [stderr] 108 | try!(self.writer.write_all(column.as_bytes())); [INFO] [stderr] 109 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/writer.rs:136:34 [INFO] [stderr] | [INFO] [stderr] 136 | let _ = writer.write_all(&vec![ [INFO] [stderr] | __________________________________^ [INFO] [stderr] 137 | | vec!["1".to_string(),"2".to_string(),"3".to_string()], [INFO] [stderr] 138 | | vec!["4".to_string(),"5".to_string(),"6".to_string()]]); [INFO] [stderr] | |__________________________________________________________________^ help: you can use a slice directly: `&[< [ _ ] > :: into_vec ( box [ $ ( $ x ) , * ] )]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_vec)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/writer.rs:150:30 [INFO] [stderr] | [INFO] [stderr] 150 | let _ = writer.write(&vec!["1".to_string(),"2\"".to_string(),"3".to_string()]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&["1".to_string(),"2\"".to_string(),"3".to_string()]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/writer.rs:151:30 [INFO] [stderr] | [INFO] [stderr] 151 | let _ = writer.write(&vec!["4".to_string(),"\"5".to_string(),"6".to_string()]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&["4".to_string(),"\"5".to_string(),"6".to_string()]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/writer.rs:163:30 [INFO] [stderr] | [INFO] [stderr] 163 | let _ = writer.write(&vec!["1".to_string(),"2,".to_string(),"3".to_string()]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&["1".to_string(),"2,".to_string(),"3".to_string()]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/writer.rs:164:30 [INFO] [stderr] | [INFO] [stderr] 164 | let _ = writer.write(&vec!["4".to_string(),",5".to_string(),"6".to_string()]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&["4".to_string(),",5".to_string(),"6".to_string()]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/writer.rs:176:30 [INFO] [stderr] | [INFO] [stderr] 176 | let _ = writer.write(&vec!["1".to_string(),"2\n".to_string(),"3".to_string()]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&["1".to_string(),"2\n".to_string(),"3".to_string()]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/writer.rs:177:30 [INFO] [stderr] | [INFO] [stderr] 177 | let _ = writer.write(&vec!["4".to_string(),",5".to_string(),"6".to_string()]); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&["4".to_string(),",5".to_string(),"6".to_string()]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 0.97s [INFO] running `"docker" "inspect" "bd8b8121c5c09d2911a9f2849e587ec0a8c87abdcf2880cfab0da766e8340dc0"` [INFO] running `"docker" "rm" "-f" "bd8b8121c5c09d2911a9f2849e587ec0a8c87abdcf2880cfab0da766e8340dc0"` [INFO] [stdout] bd8b8121c5c09d2911a9f2849e587ec0a8c87abdcf2880cfab0da766e8340dc0