[INFO] updating cached repository crazymerlyn/kilo-rs [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/crazymerlyn/kilo-rs [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/crazymerlyn/kilo-rs" "work/ex/clippy-test-run/sources/stable/gh/crazymerlyn/kilo-rs"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/crazymerlyn/kilo-rs'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/crazymerlyn/kilo-rs" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/crazymerlyn/kilo-rs"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/crazymerlyn/kilo-rs'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 320b83097c84c25c45f702907d9fb7369e5579fa [INFO] sha for GitHub repo crazymerlyn/kilo-rs: 320b83097c84c25c45f702907d9fb7369e5579fa [INFO] validating manifest of crazymerlyn/kilo-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 crazymerlyn/kilo-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 crazymerlyn/kilo-rs [INFO] finished frobbing crazymerlyn/kilo-rs [INFO] frobbed toml for crazymerlyn/kilo-rs written to work/ex/clippy-test-run/sources/stable/gh/crazymerlyn/kilo-rs/Cargo.toml [INFO] started frobbing crazymerlyn/kilo-rs [INFO] finished frobbing crazymerlyn/kilo-rs [INFO] frobbed toml for crazymerlyn/kilo-rs written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/crazymerlyn/kilo-rs/Cargo.toml [INFO] crate crazymerlyn/kilo-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 crazymerlyn/kilo-rs 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/gh/crazymerlyn/kilo-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" "-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] e8ae644d36baba5f245cc0ef0977bad0de957350345655cb74e61092a665032f [INFO] running `"docker" "start" "-a" "e8ae644d36baba5f245cc0ef0977bad0de957350345655cb74e61092a665032f"` [INFO] [stderr] Checking termios v0.2.2 [INFO] [stderr] Checking atty v0.1.2 [INFO] [stderr] Checking termsize v0.1.4 [INFO] [stderr] Checking kilo v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:581:9 [INFO] [stderr] | [INFO] [stderr] 581 | return res.map(Some); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `res.map(Some)` [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/main.rs:581:9 [INFO] [stderr] | [INFO] [stderr] 581 | return res.map(Some); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `res.map(Some)` [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: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:518:13 [INFO] [stderr] | [INFO] [stderr] 518 | let mut row = &mut self.rows[self.cy]; [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:536:17 [INFO] [stderr] | [INFO] [stderr] 536 | let mut row = &mut self.rows[self.cy]; [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `Editor` [INFO] [stderr] --> src/main.rs:78:5 [INFO] [stderr] | [INFO] [stderr] 78 | / pub fn new() -> Editor { [INFO] [stderr] 79 | | let mut term = Termios::from_fd(0).expect("Failed to get termios"); [INFO] [stderr] 80 | | let original = term; [INFO] [stderr] 81 | | [INFO] [stderr] ... | [INFO] [stderr] 109 | | } [INFO] [stderr] 110 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 77 | impl Default for Editor { [INFO] [stderr] 78 | fn default() -> Self { [INFO] [stderr] 79 | Self::new() [INFO] [stderr] 80 | } [INFO] [stderr] 81 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: The function/method `tcsetattr` doesn't need a mutable reference [INFO] [stderr] --> src/main.rs:90:33 [INFO] [stderr] | [INFO] [stderr] 90 | tcsetattr(0, TCSAFLUSH, &mut term).expect("Failed to get raw mode"); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:518:13 [INFO] [stderr] | [INFO] [stderr] 518 | let mut row = &mut self.rows[self.cy]; [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:536:17 [INFO] [stderr] | [INFO] [stderr] 536 | let mut row = &mut self.rows[self.cy]; [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:416:71 [INFO] [stderr] | [INFO] [stderr] 416 | let dims : Vec<_> = str::from_utf8(&buf[2..i]).unwrap().split(";").collect(); [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: The function/method `tcsetattr` doesn't need a mutable reference [INFO] [stderr] --> src/main.rs:443:33 [INFO] [stderr] | [INFO] [stderr] 443 | tcsetattr(0, TCSAFLUSH, &mut self.term).expect("Failed to restore state"); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: use of `write!(stderr(), ...).unwrap()`. Consider using `eprint!` instead [INFO] [stderr] --> src/main.rs:449:9 [INFO] [stderr] | [INFO] [stderr] 449 | write!(io::stderr(), "{}", message).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_write)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `Editor` [INFO] [stderr] --> src/main.rs:78:5 [INFO] [stderr] | [INFO] [stderr] 78 | / pub fn new() -> Editor { [INFO] [stderr] 79 | | let mut term = Termios::from_fd(0).expect("Failed to get termios"); [INFO] [stderr] 80 | | let original = term; [INFO] [stderr] 81 | | [INFO] [stderr] ... | [INFO] [stderr] 109 | | } [INFO] [stderr] 110 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/main.rs:578:16 [INFO] [stderr] | [INFO] [stderr] 578 | if let Ok(_) = res { [INFO] [stderr] | _________- ^^^^^ [INFO] [stderr] 579 | | self.dirty = false; [INFO] [stderr] 580 | | } [INFO] [stderr] | |_________- help: try this: `if res.is_ok()` [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: length comparison to zero [INFO] [stderr] --> src/main.rs:596:24 [INFO] [stderr] | [INFO] [stderr] 596 | if input.len() > 0 { input.pop(); }; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!input.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/main.rs:599:24 [INFO] [stderr] | [INFO] [stderr] 599 | if input.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!input.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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/main.rs:659:17 [INFO] [stderr] | [INFO] [stderr] 659 | / match row.render().find(query) { [INFO] [stderr] 660 | | Some(pos) => { [INFO] [stderr] 661 | | last_match = current; [INFO] [stderr] 662 | | editor.cy = current as usize; [INFO] [stderr] ... | [INFO] [stderr] 667 | | None => {}, [INFO] [stderr] 668 | | } [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] 659 | if let Some(pos) = row.render().find(query) { [INFO] [stderr] 660 | last_match = current; [INFO] [stderr] 661 | editor.cy = current as usize; [INFO] [stderr] 662 | editor.cx = editor.rx_to_cx(row.render(), pos); [INFO] [stderr] 663 | editor.rowoff = editor.rows.len(); [INFO] [stderr] 664 | break; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 77 | impl Default for Editor { [INFO] [stderr] 78 | fn default() -> Self { [INFO] [stderr] 79 | Self::new() [INFO] [stderr] 80 | } [INFO] [stderr] 81 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: The function/method `tcsetattr` doesn't need a mutable reference [INFO] [stderr] --> src/main.rs:90:33 [INFO] [stderr] | [INFO] [stderr] 90 | tcsetattr(0, TCSAFLUSH, &mut term).expect("Failed to get raw mode"); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:416:71 [INFO] [stderr] | [INFO] [stderr] 416 | let dims : Vec<_> = str::from_utf8(&buf[2..i]).unwrap().split(";").collect(); [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: The function/method `tcsetattr` doesn't need a mutable reference [INFO] [stderr] --> src/main.rs:443:33 [INFO] [stderr] | [INFO] [stderr] 443 | tcsetattr(0, TCSAFLUSH, &mut self.term).expect("Failed to restore state"); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: use of `write!(stderr(), ...).unwrap()`. Consider using `eprint!` instead [INFO] [stderr] --> src/main.rs:449:9 [INFO] [stderr] | [INFO] [stderr] 449 | write!(io::stderr(), "{}", message).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_write)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_write [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/main.rs:578:16 [INFO] [stderr] | [INFO] [stderr] 578 | if let Ok(_) = res { [INFO] [stderr] | _________- ^^^^^ [INFO] [stderr] 579 | | self.dirty = false; [INFO] [stderr] 580 | | } [INFO] [stderr] | |_________- help: try this: `if res.is_ok()` [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: length comparison to zero [INFO] [stderr] --> src/main.rs:596:24 [INFO] [stderr] | [INFO] [stderr] 596 | if input.len() > 0 { input.pop(); }; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!input.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/main.rs:599:24 [INFO] [stderr] | [INFO] [stderr] 599 | if input.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!input.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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/main.rs:659:17 [INFO] [stderr] | [INFO] [stderr] 659 | / match row.render().find(query) { [INFO] [stderr] 660 | | Some(pos) => { [INFO] [stderr] 661 | | last_match = current; [INFO] [stderr] 662 | | editor.cy = current as usize; [INFO] [stderr] ... | [INFO] [stderr] 667 | | None => {}, [INFO] [stderr] 668 | | } [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] 659 | if let Some(pos) = row.render().find(query) { [INFO] [stderr] 660 | last_match = current; [INFO] [stderr] 661 | editor.cy = current as usize; [INFO] [stderr] 662 | editor.cx = editor.rx_to_cx(row.render(), pos); [INFO] [stderr] 663 | editor.rowoff = editor.rows.len(); [INFO] [stderr] 664 | break; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2.00s [INFO] running `"docker" "inspect" "e8ae644d36baba5f245cc0ef0977bad0de957350345655cb74e61092a665032f"` [INFO] running `"docker" "rm" "-f" "e8ae644d36baba5f245cc0ef0977bad0de957350345655cb74e61092a665032f"` [INFO] [stdout] e8ae644d36baba5f245cc0ef0977bad0de957350345655cb74e61092a665032f