[INFO] updating cached repository mandreyel/kilo-rust [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/mandreyel/kilo-rust [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/mandreyel/kilo-rust" "work/ex/clippy-test-run/sources/stable/gh/mandreyel/kilo-rust"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/mandreyel/kilo-rust'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/mandreyel/kilo-rust" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mandreyel/kilo-rust"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mandreyel/kilo-rust'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 0e8b086a20b0b72926a6a28550fdcac036eec1b4 [INFO] sha for GitHub repo mandreyel/kilo-rust: 0e8b086a20b0b72926a6a28550fdcac036eec1b4 [INFO] validating manifest of mandreyel/kilo-rust 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 mandreyel/kilo-rust 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 mandreyel/kilo-rust [INFO] finished frobbing mandreyel/kilo-rust [INFO] frobbed toml for mandreyel/kilo-rust written to work/ex/clippy-test-run/sources/stable/gh/mandreyel/kilo-rust/Cargo.toml [INFO] started frobbing mandreyel/kilo-rust [INFO] finished frobbing mandreyel/kilo-rust [INFO] frobbed toml for mandreyel/kilo-rust written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mandreyel/kilo-rust/Cargo.toml [INFO] crate mandreyel/kilo-rust 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 mandreyel/kilo-rust against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/mandreyel/kilo-rust:/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] 29d7b484d40ece925a578ed8e1660bac792480950fb62481bff454724f9e2885 [INFO] running `"docker" "start" "-a" "29d7b484d40ece925a578ed8e1660bac792480950fb62481bff454724f9e2885"` [INFO] [stderr] Checking nix v0.10.0 [INFO] [stderr] Checking kilo-rust v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:133:13 [INFO] [stderr] | [INFO] [stderr] 133 | config: config, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `config` [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:134:13 [INFO] [stderr] | [INFO] [stderr] 134 | path: path, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `path` [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:695:13 [INFO] [stderr] | [INFO] [stderr] 695 | timeout: timeout, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `timeout` [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:133:13 [INFO] [stderr] | [INFO] [stderr] 133 | config: config, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `config` [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:134:13 [INFO] [stderr] | [INFO] [stderr] 134 | path: path, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `path` [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:695:13 [INFO] [stderr] | [INFO] [stderr] 695 | timeout: timeout, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `timeout` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/main.rs:379:20 [INFO] [stderr] | [INFO] [stderr] 379 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 380 | | if line.len() <= self.window_width { [INFO] [stderr] 381 | | let col = { [INFO] [stderr] 382 | | if self.cursor.is_at_eol { [INFO] [stderr] ... | [INFO] [stderr] 406 | | } [INFO] [stderr] 407 | | } [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] 379 | } else if line.len() <= self.window_width { [INFO] [stderr] 380 | let col = { [INFO] [stderr] 381 | if self.cursor.is_at_eol { [INFO] [stderr] 382 | line.len() - 1 [INFO] [stderr] 383 | } else { [INFO] [stderr] 384 | cmp::min(line.len() - 1, self.cursor.pos.col) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:500:17 [INFO] [stderr] | [INFO] [stderr] 500 | / return if c == '~' { [INFO] [stderr] 501 | | let c = buf[1] as char; [INFO] [stderr] 502 | | match c { [INFO] [stderr] 503 | | '1' | '7' => Some(Key::LineHome), [INFO] [stderr] ... | [INFO] [stderr] 509 | | } [INFO] [stderr] 510 | | } else { None }; [INFO] [stderr] | |________________________________^ [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] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 500 | if c == '~' { [INFO] [stderr] 501 | let c = buf[1] as char; [INFO] [stderr] 502 | match c { [INFO] [stderr] 503 | '1' | '7' => Some(Key::LineHome), [INFO] [stderr] 504 | '4' | '8' => Some(Key::LineEnd), [INFO] [stderr] 505 | '3' => Some(Key::Delete), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/main.rs:379:20 [INFO] [stderr] | [INFO] [stderr] 379 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 380 | | if line.len() <= self.window_width { [INFO] [stderr] 381 | | let col = { [INFO] [stderr] 382 | | if self.cursor.is_at_eol { [INFO] [stderr] ... | [INFO] [stderr] 406 | | } [INFO] [stderr] 407 | | } [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] 379 | } else if line.len() <= self.window_width { [INFO] [stderr] 380 | let col = { [INFO] [stderr] 381 | if self.cursor.is_at_eol { [INFO] [stderr] 382 | line.len() - 1 [INFO] [stderr] 383 | } else { [INFO] [stderr] 384 | cmp::min(line.len() - 1, self.cursor.pos.col) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:500:17 [INFO] [stderr] | [INFO] [stderr] 500 | / return if c == '~' { [INFO] [stderr] 501 | | let c = buf[1] as char; [INFO] [stderr] 502 | | match c { [INFO] [stderr] 503 | | '1' | '7' => Some(Key::LineHome), [INFO] [stderr] ... | [INFO] [stderr] 509 | | } [INFO] [stderr] 510 | | } else { None }; [INFO] [stderr] | |________________________________^ [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] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 500 | if c == '~' { [INFO] [stderr] 501 | let c = buf[1] as char; [INFO] [stderr] 502 | match c { [INFO] [stderr] 503 | '1' | '7' => Some(Key::LineHome), [INFO] [stderr] 504 | '4' | '8' => Some(Key::LineEnd), [INFO] [stderr] 505 | '3' => Some(Key::Delete), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `FileHome` [INFO] [stderr] --> src/main.rs:40:5 [INFO] [stderr] | [INFO] [stderr] 40 | FileHome, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `FileEnd` [INFO] [stderr] --> src/main.rs:41:5 [INFO] [stderr] | [INFO] [stderr] 41 | FileEnd, [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/main.rs:153:41 [INFO] [stderr] | [INFO] [stderr] 153 | let lines = buf.split(|b| *b == '\n' as u8); [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: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/main.rs:187:20 [INFO] [stderr] | [INFO] [stderr] 187 | if let Ok(_) = io::stdin().read_exact(&mut buf) { [INFO] [stderr] | _____________- ^^^^^ [INFO] [stderr] 188 | | let b = buf[0]; [INFO] [stderr] 189 | | if b as char == ctrl_mask('c') { [INFO] [stderr] 190 | | break; [INFO] [stderr] ... | [INFO] [stderr] 195 | | break; [INFO] [stderr] 196 | | } [INFO] [stderr] | |_____________- help: try this: `if io::stdin().read_exact(&mut buf).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: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/main.rs:487:16 [INFO] [stderr] | [INFO] [stderr] 487 | if let Err(_) = io::stdin().read_exact(&mut buf[..2]) { [INFO] [stderr] | _________- ^^^^^^ [INFO] [stderr] 488 | | return None; [INFO] [stderr] 489 | | } [INFO] [stderr] | |_________- help: try this: `if io::stdin().read_exact(&mut buf[..2]).is_err()` [INFO] [stderr] | [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: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/main.rs:495:24 [INFO] [stderr] | [INFO] [stderr] 495 | if let Err(_) = io::stdin().read_exact(&mut buf[2..3]) { [INFO] [stderr] | _________________- ^^^^^^ [INFO] [stderr] 496 | | return None; [INFO] [stderr] 497 | | } [INFO] [stderr] | |_________________- help: try this: `if io::stdin().read_exact(&mut buf[2..3]).is_err()` [INFO] [stderr] | [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: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/main.rs:562:29 [INFO] [stderr] | [INFO] [stderr] 562 | render.push(' ' as u8); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b' ' [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: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/main.rs:564:33 [INFO] [stderr] | [INFO] [stderr] 564 | render.push(' ' as u8); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b' ' [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/main.rs:602:43 [INFO] [stderr] | [INFO] [stderr] 602 | self.write_buf.extend(" ".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b" "` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::string_lit_as_bytes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:610:29 [INFO] [stderr] | [INFO] [stderr] 610 | assert!(row.len() > 0); [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!row.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: the operation is ineffective. Consider reducing it to `sep.len()` [INFO] [stderr] --> src/main.rs:668:74 [INFO] [stderr] | [INFO] [stderr] 668 | let mut n_used_bytes = cursor_pos.len() + line_count.len() + sep.len() * 1; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [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/main.rs:678:33 [INFO] [stderr] | [INFO] [stderr] 678 | self.write_buf.push(' ' as u8); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b' ' [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] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/main.rs:715:9 [INFO] [stderr] | [INFO] [stderr] 715 | io::stdout().write(&self.write_buf).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [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:777:13 [INFO] [stderr] | [INFO] [stderr] 777 | / match r { [INFO] [stderr] 778 | | Ok(c) => { [INFO] [stderr] 779 | | if c == 'R' as u8 { [INFO] [stderr] 780 | | break; [INFO] [stderr] ... | [INFO] [stderr] 785 | | Err(_) => (), [INFO] [stderr] 786 | | } [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] 777 | if let Ok(c) = r { [INFO] [stderr] 778 | if c == 'R' as u8 { [INFO] [stderr] 779 | break; [INFO] [stderr] 780 | } else { [INFO] [stderr] 781 | response.push(c as char); [INFO] [stderr] 782 | } [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/main.rs:779:29 [INFO] [stderr] | [INFO] [stderr] 779 | if c == 'R' as u8 { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'R' [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] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/main.rs:832:5 [INFO] [stderr] | [INFO] [stderr] 832 | file.write("\n>>NEW LOG ENTRY\n".as_bytes()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/main.rs:833:5 [INFO] [stderr] | [INFO] [stderr] 833 | file.write(&buf).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/main.rs:834:5 [INFO] [stderr] | [INFO] [stderr] 834 | file.write("\n".as_bytes()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: aborting due to 4 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `kilo-rust`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: variant is never constructed: `FileHome` [INFO] [stderr] --> src/main.rs:40:5 [INFO] [stderr] | [INFO] [stderr] 40 | FileHome, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `FileEnd` [INFO] [stderr] --> src/main.rs:41:5 [INFO] [stderr] | [INFO] [stderr] 41 | FileEnd, [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/main.rs:153:41 [INFO] [stderr] | [INFO] [stderr] 153 | let lines = buf.split(|b| *b == '\n' as u8); [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: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/main.rs:187:20 [INFO] [stderr] | [INFO] [stderr] 187 | if let Ok(_) = io::stdin().read_exact(&mut buf) { [INFO] [stderr] | _____________- ^^^^^ [INFO] [stderr] 188 | | let b = buf[0]; [INFO] [stderr] 189 | | if b as char == ctrl_mask('c') { [INFO] [stderr] 190 | | break; [INFO] [stderr] ... | [INFO] [stderr] 195 | | break; [INFO] [stderr] 196 | | } [INFO] [stderr] | |_____________- help: try this: `if io::stdin().read_exact(&mut buf).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: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/main.rs:487:16 [INFO] [stderr] | [INFO] [stderr] 487 | if let Err(_) = io::stdin().read_exact(&mut buf[..2]) { [INFO] [stderr] | _________- ^^^^^^ [INFO] [stderr] 488 | | return None; [INFO] [stderr] 489 | | } [INFO] [stderr] | |_________- help: try this: `if io::stdin().read_exact(&mut buf[..2]).is_err()` [INFO] [stderr] | [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: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/main.rs:495:24 [INFO] [stderr] | [INFO] [stderr] 495 | if let Err(_) = io::stdin().read_exact(&mut buf[2..3]) { [INFO] [stderr] | _________________- ^^^^^^ [INFO] [stderr] 496 | | return None; [INFO] [stderr] 497 | | } [INFO] [stderr] | |_________________- help: try this: `if io::stdin().read_exact(&mut buf[2..3]).is_err()` [INFO] [stderr] | [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: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/main.rs:562:29 [INFO] [stderr] | [INFO] [stderr] 562 | render.push(' ' as u8); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b' ' [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: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/main.rs:564:33 [INFO] [stderr] | [INFO] [stderr] 564 | render.push(' ' as u8); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b' ' [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: calling `as_bytes()` on a string literal [INFO] [stderr] --> src/main.rs:602:43 [INFO] [stderr] | [INFO] [stderr] 602 | self.write_buf.extend(" ".as_bytes()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using a byte string literal instead: `b" "` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::string_lit_as_bytes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_lit_as_bytes [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:610:29 [INFO] [stderr] | [INFO] [stderr] 610 | assert!(row.len() > 0); [INFO] [stderr] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!row.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: the operation is ineffective. Consider reducing it to `sep.len()` [INFO] [stderr] --> src/main.rs:668:74 [INFO] [stderr] | [INFO] [stderr] 668 | let mut n_used_bytes = cursor_pos.len() + line_count.len() + sep.len() * 1; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [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/main.rs:678:33 [INFO] [stderr] | [INFO] [stderr] 678 | self.write_buf.push(' ' as u8); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b' ' [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] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/main.rs:715:9 [INFO] [stderr] | [INFO] [stderr] 715 | io::stdout().write(&self.write_buf).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [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:777:13 [INFO] [stderr] | [INFO] [stderr] 777 | / match r { [INFO] [stderr] 778 | | Ok(c) => { [INFO] [stderr] 779 | | if c == 'R' as u8 { [INFO] [stderr] 780 | | break; [INFO] [stderr] ... | [INFO] [stderr] 785 | | Err(_) => (), [INFO] [stderr] 786 | | } [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] 777 | if let Ok(c) = r { [INFO] [stderr] 778 | if c == 'R' as u8 { [INFO] [stderr] 779 | break; [INFO] [stderr] 780 | } else { [INFO] [stderr] 781 | response.push(c as char); [INFO] [stderr] 782 | } [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/main.rs:779:29 [INFO] [stderr] | [INFO] [stderr] 779 | if c == 'R' as u8 { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'R' [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] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/main.rs:832:5 [INFO] [stderr] | [INFO] [stderr] 832 | file.write("\n>>NEW LOG ENTRY\n".as_bytes()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/main.rs:833:5 [INFO] [stderr] | [INFO] [stderr] 833 | file.write(&buf).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/main.rs:834:5 [INFO] [stderr] | [INFO] [stderr] 834 | file.write("\n".as_bytes()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: aborting due to 4 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `kilo-rust`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "29d7b484d40ece925a578ed8e1660bac792480950fb62481bff454724f9e2885"` [INFO] running `"docker" "rm" "-f" "29d7b484d40ece925a578ed8e1660bac792480950fb62481bff454724f9e2885"` [INFO] [stdout] 29d7b484d40ece925a578ed8e1660bac792480950fb62481bff454724f9e2885