[INFO] updating cached repository quells/monkey-rs [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/quells/monkey-rs [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/quells/monkey-rs" "work/ex/clippy-test-run/sources/stable/gh/quells/monkey-rs"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/quells/monkey-rs'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/quells/monkey-rs" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/quells/monkey-rs"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/quells/monkey-rs'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] c72db7b1331c354e4352ea71be5ebe3c905e9c62 [INFO] sha for GitHub repo quells/monkey-rs: c72db7b1331c354e4352ea71be5ebe3c905e9c62 [INFO] validating manifest of quells/monkey-rs 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 quells/monkey-rs 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 quells/monkey-rs [INFO] finished frobbing quells/monkey-rs [INFO] frobbed toml for quells/monkey-rs written to work/ex/clippy-test-run/sources/stable/gh/quells/monkey-rs/Cargo.toml [INFO] started frobbing quells/monkey-rs [INFO] finished frobbing quells/monkey-rs [INFO] frobbed toml for quells/monkey-rs written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/quells/monkey-rs/Cargo.toml [INFO] crate quells/monkey-rs 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 quells/monkey-rs 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-0/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/quells/monkey-rs:/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] c94170fbc4c8b428b9882c1538fe04bb3d36cc5340a4ea700b7edde6b379e005 [INFO] running `"docker" "start" "-a" "c94170fbc4c8b428b9882c1538fe04bb3d36cc5340a4ea700b7edde6b379e005"` [INFO] [stderr] Checking monkey v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/lex.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | kind: kind, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `kind` [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/lex.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | line: line, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `line` [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/lex.rs:59:13 [INFO] [stderr] | [INFO] [stderr] 59 | character: character, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `character` [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/lex.rs:67:13 [INFO] [stderr] | [INFO] [stderr] 67 | kind: kind, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `kind` [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/lex.rs:179:13 [INFO] [stderr] | [INFO] [stderr] 179 | len: len, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `len` [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/lex.rs:184:13 [INFO] [stderr] | [INFO] [stderr] 184 | keywords: keywords, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `keywords` [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/lex.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | kind: kind, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `kind` [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/lex.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | line: line, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `line` [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/lex.rs:59:13 [INFO] [stderr] | [INFO] [stderr] 59 | character: character, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `character` [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/lex.rs:67:13 [INFO] [stderr] | [INFO] [stderr] 67 | kind: kind, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `kind` [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/lex.rs:179:13 [INFO] [stderr] | [INFO] [stderr] 179 | len: len, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `len` [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/lex.rs:184:13 [INFO] [stderr] | [INFO] [stderr] 184 | keywords: keywords, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `keywords` [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: useless use of `format!` [INFO] [stderr] --> src/lex.rs:82:35 [INFO] [stderr] | [INFO] [stderr] 82 | TokenKind::Integer => format!("{}", self.literal), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `self.literal.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: useless use of `vec!` [INFO] [stderr] --> src/lex.rs:165:23 [INFO] [stderr] | [INFO] [stderr] 165 | for (s, t) in vec![ [INFO] [stderr] | _______________________^ [INFO] [stderr] 166 | | ("let", TokenKind::Let), [INFO] [stderr] 167 | | ("fn", TokenKind::Function), [INFO] [stderr] 168 | | ("if", TokenKind::If), [INFO] [stderr] ... | [INFO] [stderr] 172 | | ("false", TokenKind::False), [INFO] [stderr] 173 | | ] { [INFO] [stderr] | |_________^ [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] = 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: this loop could be written as a `while let` loop [INFO] [stderr] --> src/lex.rs:219:9 [INFO] [stderr] | [INFO] [stderr] 219 | / loop { [INFO] [stderr] 220 | | let c = match self.read() { [INFO] [stderr] 221 | | Some(c) => c, [INFO] [stderr] 222 | | None => break, [INFO] [stderr] ... | [INFO] [stderr] 289 | | } [INFO] [stderr] 290 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(c) = self.read() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lex.rs:225:20 [INFO] [stderr] | [INFO] [stderr] 225 | if literal.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `literal.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/lex.rs:231:16 [INFO] [stderr] | [INFO] [stderr] 231 | if literal.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `literal.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: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/lex.rs:243:40 [INFO] [stderr] | [INFO] [stderr] 243 | let default = possible.into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: called `filter(p).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(p)` instead. [INFO] [stderr] --> src/lex.rs:249:23 [INFO] [stderr] | [INFO] [stderr] 249 | match possible.into_iter() [INFO] [stderr] | _______________________^ [INFO] [stderr] 250 | | .filter(|(pc, _)| option_eq(*pc, next_c)) [INFO] [stderr] 251 | | .next() { [INFO] [stderr] | |_______________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::filter_next)] on by default [INFO] [stderr] = note: replace `filter(|(pc, _)| option_eq(*pc, next_c)).next()` with `find(|(pc, _)| option_eq(*pc, next_c))` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/lex.rs:249:32 [INFO] [stderr] | [INFO] [stderr] 249 | match possible.into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [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/lex.rs:283:13 [INFO] [stderr] | [INFO] [stderr] 283 | / match kind { [INFO] [stderr] 284 | | TokenKind::EOF => { [INFO] [stderr] 285 | | kind = TokenKind::Illegal; [INFO] [stderr] 286 | | break; [INFO] [stderr] 287 | | }, [INFO] [stderr] 288 | | _ => (), [INFO] [stderr] 289 | | } [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] 283 | if let TokenKind::EOF = kind { [INFO] [stderr] 284 | kind = TokenKind::Illegal; [INFO] [stderr] 285 | break; [INFO] [stderr] 286 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/lex.rs:310:5 [INFO] [stderr] | [INFO] [stderr] 310 | / loop { [INFO] [stderr] 311 | | match lexer.next_token() { [INFO] [stderr] 312 | | Some(t) => tokens.push(t), [INFO] [stderr] 313 | | None => break, [INFO] [stderr] 314 | | } [INFO] [stderr] 315 | | } [INFO] [stderr] | |_____^ help: try: `while let Some(t) = lexer.next_token() { .. }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/lex.rs:324:28 [INFO] [stderr] | [INFO] [stderr] 324 | for (e, a) in expected.into_iter().zip(actual) { [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [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/repl.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | / match prompt { [INFO] [stderr] 5 | | Some(p) => print!("{}", p), [INFO] [stderr] 6 | | None => (), [INFO] [stderr] 7 | | } [INFO] [stderr] | |_____^ help: try this: `if let Some(p) = prompt { print!("{}", p) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lex.rs:82:35 [INFO] [stderr] | [INFO] [stderr] 82 | TokenKind::Integer => format!("{}", self.literal), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `self.literal.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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lex.rs:128:18 [INFO] [stderr] | [INFO] [stderr] 128 | let op = match expected { [INFO] [stderr] | __________________^ [INFO] [stderr] 129 | | true => "==", [INFO] [stderr] 130 | | false => "!=", [INFO] [stderr] 131 | | }; [INFO] [stderr] | |_________^ help: consider using an if/else expression: `if expected { "==" } else { "!=" }` [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] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/lex.rs:165:23 [INFO] [stderr] | [INFO] [stderr] 165 | for (s, t) in vec![ [INFO] [stderr] | _______________________^ [INFO] [stderr] 166 | | ("let", TokenKind::Let), [INFO] [stderr] 167 | | ("fn", TokenKind::Function), [INFO] [stderr] 168 | | ("if", TokenKind::If), [INFO] [stderr] ... | [INFO] [stderr] 172 | | ("false", TokenKind::False), [INFO] [stderr] 173 | | ] { [INFO] [stderr] | |_________^ [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] = 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: this loop could be written as a `while let` loop [INFO] [stderr] --> src/lex.rs:219:9 [INFO] [stderr] | [INFO] [stderr] 219 | / loop { [INFO] [stderr] 220 | | let c = match self.read() { [INFO] [stderr] 221 | | Some(c) => c, [INFO] [stderr] 222 | | None => break, [INFO] [stderr] ... | [INFO] [stderr] 289 | | } [INFO] [stderr] 290 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(c) = self.read() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lex.rs:225:20 [INFO] [stderr] | [INFO] [stderr] 225 | if literal.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `literal.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/lex.rs:231:16 [INFO] [stderr] | [INFO] [stderr] 231 | if literal.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `literal.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: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/lex.rs:243:40 [INFO] [stderr] | [INFO] [stderr] 243 | let default = possible.into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: called `filter(p).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(p)` instead. [INFO] [stderr] --> src/lex.rs:249:23 [INFO] [stderr] | [INFO] [stderr] 249 | match possible.into_iter() [INFO] [stderr] | _______________________^ [INFO] [stderr] 250 | | .filter(|(pc, _)| option_eq(*pc, next_c)) [INFO] [stderr] 251 | | .next() { [INFO] [stderr] | |_______________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::filter_next)] on by default [INFO] [stderr] = note: replace `filter(|(pc, _)| option_eq(*pc, next_c)).next()` with `find(|(pc, _)| option_eq(*pc, next_c))` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/lex.rs:249:32 [INFO] [stderr] | [INFO] [stderr] 249 | match possible.into_iter() [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [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/lex.rs:283:13 [INFO] [stderr] | [INFO] [stderr] 283 | / match kind { [INFO] [stderr] 284 | | TokenKind::EOF => { [INFO] [stderr] 285 | | kind = TokenKind::Illegal; [INFO] [stderr] 286 | | break; [INFO] [stderr] 287 | | }, [INFO] [stderr] 288 | | _ => (), [INFO] [stderr] 289 | | } [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] 283 | if let TokenKind::EOF = kind { [INFO] [stderr] 284 | kind = TokenKind::Illegal; [INFO] [stderr] 285 | break; [INFO] [stderr] 286 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/lex.rs:310:5 [INFO] [stderr] | [INFO] [stderr] 310 | / loop { [INFO] [stderr] 311 | | match lexer.next_token() { [INFO] [stderr] 312 | | Some(t) => tokens.push(t), [INFO] [stderr] 313 | | None => break, [INFO] [stderr] 314 | | } [INFO] [stderr] 315 | | } [INFO] [stderr] | |_____^ help: try: `while let Some(t) = lexer.next_token() { .. }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/lex.rs:324:28 [INFO] [stderr] | [INFO] [stderr] 324 | for (e, a) in expected.into_iter().zip(actual) { [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [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/repl.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | / match prompt { [INFO] [stderr] 5 | | Some(p) => print!("{}", p), [INFO] [stderr] 6 | | None => (), [INFO] [stderr] 7 | | } [INFO] [stderr] | |_____^ help: try this: `if let Some(p) = prompt { print!("{}", p) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 0.90s [INFO] running `"docker" "inspect" "c94170fbc4c8b428b9882c1538fe04bb3d36cc5340a4ea700b7edde6b379e005"` [INFO] running `"docker" "rm" "-f" "c94170fbc4c8b428b9882c1538fe04bb3d36cc5340a4ea700b7edde6b379e005"` [INFO] [stdout] c94170fbc4c8b428b9882c1538fe04bb3d36cc5340a4ea700b7edde6b379e005