[INFO] fetching crate fowlhouse_bay 0.3.0... [INFO] linting fowlhouse_bay-0.3.0 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate fowlhouse_bay 0.3.0 into /workspace/builds/worker-5-tc1/source [INFO] started tweaking crates.io crate fowlhouse_bay 0.3.0 [INFO] finished tweaking crates.io crate fowlhouse_bay 0.3.0 [INFO] tweaked toml for crates.io crate fowlhouse_bay 0.3.0 written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate fowlhouse_bay 0.3.0 on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Locking 30 packages to latest compatible versions [INFO] [stderr] Adding crossterm v0.17.7 (available: v0.29.0) [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded crossterm_winapi v0.6.2 [INFO] [stderr] Downloaded signal-hook v0.1.17 [INFO] [stderr] Downloaded miow v0.3.7 [INFO] [stderr] Downloaded parking_lot_core v0.7.3 [INFO] [stderr] Downloaded parking_lot v0.10.2 [INFO] [stderr] Downloaded mio v0.7.14 [INFO] [stderr] Downloaded ntapi v0.3.7 [INFO] [stderr] Downloaded crossterm v0.17.7 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 0590a13319f3571f0d974b3af47429634efc75ac6f6072ee376f9218a98409c0 [INFO] running `Command { std: "docker" "start" "-a" "0590a13319f3571f0d974b3af47429634efc75ac6f6072ee376f9218a98409c0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "0590a13319f3571f0d974b3af47429634efc75ac6f6072ee376f9218a98409c0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0590a13319f3571f0d974b3af47429634efc75ac6f6072ee376f9218a98409c0", kill_on_drop: false }` [INFO] [stdout] 0590a13319f3571f0d974b3af47429634efc75ac6f6072ee376f9218a98409c0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 8eb28c28c19009fc107f9b960f82ed1d7801fb6b3ab7b1b322fec8c6932d983c [INFO] running `Command { std: "docker" "start" "-a" "8eb28c28c19009fc107f9b960f82ed1d7801fb6b3ab7b1b322fec8c6932d983c", kill_on_drop: false }` [INFO] [stderr] Checking log v0.4.29 [INFO] [stderr] Checking memchr v2.8.0 [INFO] [stderr] Checking regex-syntax v0.8.10 [INFO] [stderr] Checking lazy_static v1.5.0 [INFO] [stderr] Checking lock_api v0.3.4 [INFO] [stderr] Checking errno v0.3.14 [INFO] [stderr] Checking parking_lot_core v0.7.3 [INFO] [stderr] Checking signal-hook-registry v1.4.8 [INFO] [stderr] Checking mio v0.7.14 [INFO] [stderr] Checking parking_lot v0.10.2 [INFO] [stderr] Checking signal-hook v0.1.17 [INFO] [stderr] Checking crossterm v0.17.7 [INFO] [stderr] Checking aho-corasick v1.1.4 [INFO] [stderr] Checking regex-automata v0.4.14 [INFO] [stderr] Checking regex v1.12.3 [INFO] [stderr] Checking fowlhouse_bay v0.3.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/error.rs:18:13 [INFO] [stdout] | [INFO] [stdout] 18 | error_type: error_type, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `error_type` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary trailing semicolon [INFO] [stdout] --> src/lib.rs:888:46 [INFO] [stdout] | [INFO] [stdout] 888 | enum StateMachine { SPLIT, DONE }; [INFO] [stdout] | ^ help: remove this semicolon [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(redundant_semicolons)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/error.rs:18:13 [INFO] [stdout] | [INFO] [stdout] 18 | error_type: error_type, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `error_type` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary trailing semicolon [INFO] [stdout] --> src/lib.rs:888:46 [INFO] [stdout] | [INFO] [stdout] 888 | enum StateMachine { SPLIT, DONE }; [INFO] [stdout] | ^ help: remove this semicolon [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(redundant_semicolons)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/lib.rs:194:9 [INFO] [stdout] | [INFO] [stdout] 194 | /// `fowlhouse_bay::window::Source::StandardInputChannel` as 'source' enum variant [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] = note: `#[warn(clippy::doc_lazy_continuation)]` on by default [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 194 | /// `fowlhouse_bay::window::Source::StandardInputChannel` as 'source' enum variant [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/lib.rs:197:9 [INFO] [stdout] | [INFO] [stdout] 197 | /// could be used to forward commands to your business logic [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 197 | /// could be used to forward commands to your business logic [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this let-binding has unit value [INFO] [stdout] --> src/lib.rs:236:9 [INFO] [stdout] | [INFO] [stdout] 236 | let _ = term.enable_raw_mode(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stdout] = note: `#[warn(clippy::let_unit_value)]` on by default [INFO] [stdout] help: omit the `let` binding [INFO] [stdout] | [INFO] [stdout] 236 - let _ = term.enable_raw_mode(); [INFO] [stdout] 236 + term.enable_raw_mode(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/lib.rs:294:9 [INFO] [stdout] | [INFO] [stdout] 294 | /// to windows which are subscribed to this channel [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 294 | /// to windows which are subscribed to this channel [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against false can be replaced by a negation [INFO] [stdout] --> src/lib.rs:304:12 [INFO] [stdout] | [INFO] [stdout] 304 | if regex.is_match(&name) == false { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!regex.is_match(&name)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against false can be replaced by a negation [INFO] [stdout] --> src/lib.rs:325:12 [INFO] [stdout] | [INFO] [stdout] 325 | if channel_guard.contains_key(&name) == false { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!channel_guard.contains_key(&name)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/lib.rs:345:9 [INFO] [stdout] | [INFO] [stdout] 345 | / match self.event_thread.take() { [INFO] [stdout] 346 | | Some(t) => { [INFO] [stdout] 347 | | match t.join() { [INFO] [stdout] 348 | | Ok(_) => {}, [INFO] [stdout] ... | [INFO] [stdout] 352 | | _ => {} [INFO] [stdout] 353 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 345 ~ if let Some(t) = self.event_thread.take() { [INFO] [stdout] 346 + match t.join() { [INFO] [stdout] 347 + Ok(_) => {}, [INFO] [stdout] 348 + Err(_) => {}, // TODO: return error [INFO] [stdout] 349 + } [INFO] [stdout] 350 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/lib.rs:347:17 [INFO] [stdout] | [INFO] [stdout] 347 | / match t.join() { [INFO] [stdout] 348 | | Ok(_) => {}, [INFO] [stdout] 349 | | Err(_) => {}, // TODO: return error [INFO] [stdout] 350 | | } [INFO] [stdout] | |_________________^ help: try: `if let Ok(_) = t.join() {}` [INFO] [stdout] | [INFO] [stdout] = note: you might want to preserve the comments from inside the `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/lib.rs:354:9 [INFO] [stdout] | [INFO] [stdout] 354 | / match self.render_thread.take() { [INFO] [stdout] 355 | | Some(t) => { [INFO] [stdout] 356 | | match t.join() { [INFO] [stdout] 357 | | Ok(_) => {}, [INFO] [stdout] ... | [INFO] [stdout] 361 | | _ => {} [INFO] [stdout] 362 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 354 ~ if let Some(t) = self.render_thread.take() { [INFO] [stdout] 355 + match t.join() { [INFO] [stdout] 356 + Ok(_) => {}, [INFO] [stdout] 357 + Err(_) => {}, // TODO: return error [INFO] [stdout] 358 + } [INFO] [stdout] 359 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/lib.rs:356:17 [INFO] [stdout] | [INFO] [stdout] 356 | / match t.join() { [INFO] [stdout] 357 | | Ok(_) => {}, [INFO] [stdout] 358 | | Err(_) => {}, // TODO: return error [INFO] [stdout] 359 | | } [INFO] [stdout] | |_________________^ help: try: `if let Ok(_) = t.join() {}` [INFO] [stdout] | [INFO] [stdout] = note: you might want to preserve the comments from inside the `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty doc comment [INFO] [stdout] --> src/lib.rs:365:5 [INFO] [stdout] | [INFO] [stdout] 365 | /// [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider removing or filling it [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_docs [INFO] [stdout] = note: `#[warn(clippy::empty_docs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this let-binding has unit value [INFO] [stdout] --> src/lib.rs:394:21 [INFO] [stdout] | [INFO] [stdout] 394 | / let _poll_result = match read() { [INFO] [stdout] 395 | | Ok(event) => { [INFO] [stdout] 396 | | match event { [INFO] [stdout] ... | [INFO] [stdout] 423 | | _ => continue [INFO] [stdout] 424 | | }; [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stdout] help: omit the `let` binding [INFO] [stdout] | [INFO] [stdout] 394 - let _poll_result = match read() { [INFO] [stdout] 394 + match read() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this match could be replaced by its scrutinee and body [INFO] [stdout] --> src/lib.rs:399:37 [INFO] [stdout] | [INFO] [stdout] 399 | / ... match internal_render_send.send(InternalEvent::Resize(cols, rows)) { [INFO] [stdout] 400 | | ... _ => {}, [INFO] [stdout] 401 | | ... }; [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding [INFO] [stdout] = note: `#[warn(clippy::match_single_binding)]` on by default [INFO] [stdout] help: consider using the scrutinee and body instead [INFO] [stdout] | [INFO] [stdout] 399 ~ internal_render_send.send(InternalEvent::Resize(cols, rows)); [INFO] [stdout] 400 ~ {}; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this match could be replaced by its scrutinee and body [INFO] [stdout] --> src/lib.rs:407:45 [INFO] [stdout] | [INFO] [stdout] 407 | / ... match internal_render_send.send(InternalEvent::Key(KeyEvent::new(key_event.code, key_event.modifiers))) { [INFO] [stdout] 408 | | ... _ => {}, [INFO] [stdout] 409 | | ... }; [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding [INFO] [stdout] help: consider using the scrutinee and body instead [INFO] [stdout] | [INFO] [stdout] 407 ~ internal_render_send.send(InternalEvent::Key(KeyEvent::new(key_event.code, key_event.modifiers))); [INFO] [stdout] 408 ~ {}; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this match could be replaced by its scrutinee and body [INFO] [stdout] --> src/lib.rs:413:45 [INFO] [stdout] | [INFO] [stdout] 413 | / ... match internal_render_send.send(InternalEvent::Key(KeyEvent::new(key_event.code, key_event.modifiers))) { [INFO] [stdout] 414 | | ... _ => {}, [INFO] [stdout] 415 | | ... }; [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding [INFO] [stdout] help: consider using the scrutinee and body instead [INFO] [stdout] | [INFO] [stdout] 413 ~ internal_render_send.send(InternalEvent::Key(KeyEvent::new(key_event.code, key_event.modifiers))); [INFO] [stdout] 414 ~ {}; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lib.rs:571:39 [INFO] [stdout] | [INFO] [stdout] 571 | let mut refresh_tui = false || force_refresh; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `force_refresh` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/lib.rs:522:45 [INFO] [stdout] | [INFO] [stdout] 522 | ... else if c >= 'a' && c <= 'z' [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use: `('a'..='z').contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/lib.rs:523:44 [INFO] [stdout] | [INFO] [stdout] 523 | ... || c >= 'A' && c <= 'Z' [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use: `('A'..='Z').contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/lib.rs:524:44 [INFO] [stdout] | [INFO] [stdout] 524 | ... || c >= '0' && c <= '9' [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use: `('0'..='9').contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lib.rs:639:12 [INFO] [stdout] | [INFO] [stdout] 639 | if stdin_length > available_space || false { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `stdin_length > available_space` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/lib.rs:637:9 [INFO] [stdout] | [INFO] [stdout] 637 | let formated: String; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `formated` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 637 ~ [INFO] [stdout] 638 | [INFO] [stdout] 639 ~ let formated: String = if stdin_length > available_space || false { [INFO] [stdout] 640 | // TODO: utf8 slicing panic with äöü [INFO] [stdout] 641 ~ format!("[..]{}", stdin[(stdin_length - available_space)..].to_string()) [INFO] [stdout] 642 | } [INFO] [stdout] 643 | else { [INFO] [stdout] 644 ~ stdin [INFO] [stdout] 645 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/lib.rs:641:42 [INFO] [stdout] | [INFO] [stdout] 641 | formated = format!("[..]{}", stdin[(stdin_length - available_space)..].to_string()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use this: `&stdin[(stdin_length - available_space)..]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/lib.rs:771:9 [INFO] [stdout] | [INFO] [stdout] 771 | let logfile_cols: usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ created here [INFO] [stdout] 772 | let logfile_rows: usize; [INFO] [stdout] 773 | logfile_cols = (window_width - 2) as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ initialised here [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `logfile_cols` here [INFO] [stdout] | [INFO] [stdout] 771 ~ [INFO] [stdout] 772 | let logfile_rows: usize; [INFO] [stdout] 773 ~ let logfile_cols: usize = (window_width - 2) as usize; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/lib.rs:194:9 [INFO] [stdout] | [INFO] [stdout] 194 | /// `fowlhouse_bay::window::Source::StandardInputChannel` as 'source' enum variant [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] = note: `#[warn(clippy::doc_lazy_continuation)]` on by default [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 194 | /// `fowlhouse_bay::window::Source::StandardInputChannel` as 'source' enum variant [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/lib.rs:772:9 [INFO] [stdout] | [INFO] [stdout] 772 | let logfile_rows: usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ created here [INFO] [stdout] 773 | logfile_cols = (window_width - 2) as usize; [INFO] [stdout] 774 | logfile_rows = (window_height - 2) as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ initialised here [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `logfile_rows` here [INFO] [stdout] | [INFO] [stdout] 772 ~ [INFO] [stdout] 773 | logfile_cols = (window_width - 2) as usize; [INFO] [stdout] 774 ~ let logfile_rows: usize = (window_height - 2) as usize; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/lib.rs:197:9 [INFO] [stdout] | [INFO] [stdout] 197 | /// could be used to forward commands to your business logic [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 197 | /// could be used to forward commands to your business logic [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this let-binding has unit value [INFO] [stdout] --> src/lib.rs:236:9 [INFO] [stdout] | [INFO] [stdout] 236 | let _ = term.enable_raw_mode(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stdout] = note: `#[warn(clippy::let_unit_value)]` on by default [INFO] [stdout] help: omit the `let` binding [INFO] [stdout] | [INFO] [stdout] 236 - let _ = term.enable_raw_mode(); [INFO] [stdout] 236 + term.enable_raw_mode(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item without indentation [INFO] [stdout] --> src/lib.rs:294:9 [INFO] [stdout] | [INFO] [stdout] 294 | /// to windows which are subscribed to this channel [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = help: if this is supposed to be its own paragraph, add a blank line [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_lazy_continuation [INFO] [stdout] help: indent this line [INFO] [stdout] | [INFO] [stdout] 294 | /// to windows which are subscribed to this channel [INFO] [stdout] | ++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against false can be replaced by a negation [INFO] [stdout] --> src/lib.rs:304:12 [INFO] [stdout] | [INFO] [stdout] 304 | if regex.is_match(&name) == false { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!regex.is_match(&name)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against false can be replaced by a negation [INFO] [stdout] --> src/lib.rs:325:12 [INFO] [stdout] | [INFO] [stdout] 325 | if channel_guard.contains_key(&name) == false { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!channel_guard.contains_key(&name)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/lib.rs:853:32 [INFO] [stdout] | [INFO] [stdout] 853 | fn message_length(message: &String) -> usize { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 853 - fn message_length(message: &String) -> usize { [INFO] [stdout] 853 + fn message_length(message: &str) -> usize { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/lib.rs:345:9 [INFO] [stdout] | [INFO] [stdout] 345 | / match self.event_thread.take() { [INFO] [stdout] 346 | | Some(t) => { [INFO] [stdout] 347 | | match t.join() { [INFO] [stdout] 348 | | Ok(_) => {}, [INFO] [stdout] ... | [INFO] [stdout] 352 | | _ => {} [INFO] [stdout] 353 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 345 ~ if let Some(t) = self.event_thread.take() { [INFO] [stdout] 346 + match t.join() { [INFO] [stdout] 347 + Ok(_) => {}, [INFO] [stdout] 348 + Err(_) => {}, // TODO: return error [INFO] [stdout] 349 + } [INFO] [stdout] 350 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/lib.rs:347:17 [INFO] [stdout] | [INFO] [stdout] 347 | / match t.join() { [INFO] [stdout] 348 | | Ok(_) => {}, [INFO] [stdout] 349 | | Err(_) => {}, // TODO: return error [INFO] [stdout] 350 | | } [INFO] [stdout] | |_________________^ help: try: `if let Ok(_) = t.join() {}` [INFO] [stdout] | [INFO] [stdout] = note: you might want to preserve the comments from inside the `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `str::repeat` using iterators [INFO] [stdout] --> src/lib.rs:879:26 [INFO] [stdout] | [INFO] [stdout] 879 | let blanks = std::iter::repeat(" ").take(number_of_blanks).collect::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `" ".repeat(number_of_blanks)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_str_repeat [INFO] [stdout] = note: `#[warn(clippy::manual_str_repeat)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> src/lib.rs:879:26 [INFO] [stdout] | [INFO] [stdout] 879 | let blanks = std::iter::repeat(" ").take(number_of_blanks).collect::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n(" ", number_of_blanks)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] = note: `#[warn(clippy::manual_repeat_n)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `SPLIT` contains a capitalized acronym [INFO] [stdout] --> src/lib.rs:888:33 [INFO] [stdout] | [INFO] [stdout] 888 | enum StateMachine { SPLIT, DONE }; [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `Split` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `DONE` contains a capitalized acronym [INFO] [stdout] --> src/lib.rs:888:40 [INFO] [stdout] | [INFO] [stdout] 888 | enum StateMachine { SPLIT, DONE }; [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Done` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/lib.rs:354:9 [INFO] [stdout] | [INFO] [stdout] 354 | / match self.render_thread.take() { [INFO] [stdout] 355 | | Some(t) => { [INFO] [stdout] 356 | | match t.join() { [INFO] [stdout] 357 | | Ok(_) => {}, [INFO] [stdout] ... | [INFO] [stdout] 361 | | _ => {} [INFO] [stdout] 362 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 354 ~ if let Some(t) = self.render_thread.take() { [INFO] [stdout] 355 + match t.join() { [INFO] [stdout] 356 + Ok(_) => {}, [INFO] [stdout] 357 + Err(_) => {}, // TODO: return error [INFO] [stdout] 358 + } [INFO] [stdout] 359 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/lib.rs:356:17 [INFO] [stdout] | [INFO] [stdout] 356 | / match t.join() { [INFO] [stdout] 357 | | Ok(_) => {}, [INFO] [stdout] 358 | | Err(_) => {}, // TODO: return error [INFO] [stdout] 359 | | } [INFO] [stdout] | |_________________^ help: try: `if let Ok(_) = t.join() {}` [INFO] [stdout] | [INFO] [stdout] = note: you might want to preserve the comments from inside the `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty doc comment [INFO] [stdout] --> src/lib.rs:365:5 [INFO] [stdout] | [INFO] [stdout] 365 | /// [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider removing or filling it [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_docs [INFO] [stdout] = note: `#[warn(clippy::empty_docs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this let-binding has unit value [INFO] [stdout] --> src/lib.rs:394:21 [INFO] [stdout] | [INFO] [stdout] 394 | / let _poll_result = match read() { [INFO] [stdout] 395 | | Ok(event) => { [INFO] [stdout] 396 | | match event { [INFO] [stdout] ... | [INFO] [stdout] 423 | | _ => continue [INFO] [stdout] 424 | | }; [INFO] [stdout] | |______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_unit_value [INFO] [stdout] help: omit the `let` binding [INFO] [stdout] | [INFO] [stdout] 394 - let _poll_result = match read() { [INFO] [stdout] 394 + match read() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this match could be replaced by its scrutinee and body [INFO] [stdout] --> src/lib.rs:399:37 [INFO] [stdout] | [INFO] [stdout] 399 | / ... match internal_render_send.send(InternalEvent::Resize(cols, rows)) { [INFO] [stdout] 400 | | ... _ => {}, [INFO] [stdout] 401 | | ... }; [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding [INFO] [stdout] = note: `#[warn(clippy::match_single_binding)]` on by default [INFO] [stdout] help: consider using the scrutinee and body instead [INFO] [stdout] | [INFO] [stdout] 399 ~ internal_render_send.send(InternalEvent::Resize(cols, rows)); [INFO] [stdout] 400 ~ {}; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this match could be replaced by its scrutinee and body [INFO] [stdout] --> src/lib.rs:407:45 [INFO] [stdout] | [INFO] [stdout] 407 | / ... match internal_render_send.send(InternalEvent::Key(KeyEvent::new(key_event.code, key_event.modifiers))) { [INFO] [stdout] 408 | | ... _ => {}, [INFO] [stdout] 409 | | ... }; [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding [INFO] [stdout] help: consider using the scrutinee and body instead [INFO] [stdout] | [INFO] [stdout] 407 ~ internal_render_send.send(InternalEvent::Key(KeyEvent::new(key_event.code, key_event.modifiers))); [INFO] [stdout] 408 ~ {}; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this match could be replaced by its scrutinee and body [INFO] [stdout] --> src/lib.rs:413:45 [INFO] [stdout] | [INFO] [stdout] 413 | / ... match internal_render_send.send(InternalEvent::Key(KeyEvent::new(key_event.code, key_event.modifiers))) { [INFO] [stdout] 414 | | ... _ => {}, [INFO] [stdout] 415 | | ... }; [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding [INFO] [stdout] help: consider using the scrutinee and body instead [INFO] [stdout] | [INFO] [stdout] 413 ~ internal_render_send.send(InternalEvent::Key(KeyEvent::new(key_event.code, key_event.modifiers))); [INFO] [stdout] 414 ~ {}; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `str::repeat` using iterators [INFO] [stdout] --> src/lib.rs:918:34 [INFO] [stdout] | [INFO] [stdout] 918 | let blanks = std::iter::repeat(" ").take(number_of_blanks).collect::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `" ".repeat(number_of_blanks)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_str_repeat [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> src/lib.rs:918:34 [INFO] [stdout] | [INFO] [stdout] 918 | let blanks = std::iter::repeat(" ").take(number_of_blanks).collect::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n(" ", number_of_blanks)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `Term::split_or_bloat_message(available_cols, String::from("")).get(0)` [INFO] [stdout] --> src/lib.rs:953:32 [INFO] [stdout] | [INFO] [stdout] 953 | let fill_message = Term::split_or_bloat_message(available_cols, String::from("")).get(0).unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `Term::split_or_bloat_message(available_cols, String::from("")).first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `c1.get(0)` [INFO] [stdout] --> src/lib.rs:997:42 [INFO] [stdout] | [INFO] [stdout] 997 | assert_eq!(Term::message_length(&c1.get(0).unwrap().to_string()), available_cols); [INFO] [stdout] | ^^^^^^^^^ help: try: `c1.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `c2.get(0)` [INFO] [stdout] --> src/lib.rs:1002:42 [INFO] [stdout] | [INFO] [stdout] 1002 | assert_eq!(Term::message_length(&c2.get(0).unwrap().to_string()), available_cols); [INFO] [stdout] | ^^^^^^^^^ help: try: `c2.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/lib.rs:1012:9 [INFO] [stdout] | [INFO] [stdout] 1012 | / let mut numbers = Vec::new(); [INFO] [stdout] 1013 | | numbers.push(42); [INFO] [stdout] 1014 | | numbers.push(1337); [INFO] [stdout] 1015 | | numbers.push(8080); [INFO] [stdout] | |___________________________^ help: consider using the `vec![]` macro: `let mut numbers = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] = note: `#[warn(clippy::vec_init_then_push)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `numbers.get(0)` [INFO] [stdout] --> src/lib.rs:1019:20 [INFO] [stdout] | [INFO] [stdout] 1019 | assert_eq!(numbers.get(0).unwrap(), &8080); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `numbers.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/lib.rs:1023:9 [INFO] [stdout] | [INFO] [stdout] 1023 | / let mut numbers2 = Vec::new(); [INFO] [stdout] 1024 | | numbers2.push(42); [INFO] [stdout] 1025 | | numbers2.push(1337); [INFO] [stdout] 1026 | | numbers2.push(8080); [INFO] [stdout] | |____________________________^ help: consider using the `vec![]` macro: `let numbers2 = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `numbers2.get(0)` [INFO] [stdout] --> src/lib.rs:1034:20 [INFO] [stdout] | [INFO] [stdout] 1034 | assert_eq!(numbers2.get(0).unwrap(), &42); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try: `numbers2.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lib.rs:571:39 [INFO] [stdout] | [INFO] [stdout] 571 | let mut refresh_tui = false || force_refresh; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `force_refresh` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/lib.rs:522:45 [INFO] [stdout] | [INFO] [stdout] 522 | ... else if c >= 'a' && c <= 'z' [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use: `('a'..='z').contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/lib.rs:523:44 [INFO] [stdout] | [INFO] [stdout] 523 | ... || c >= 'A' && c <= 'Z' [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use: `('A'..='Z').contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/lib.rs:524:44 [INFO] [stdout] | [INFO] [stdout] 524 | ... || c >= '0' && c <= '9' [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: use: `('0'..='9').contains(&c)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/lib.rs:1042:9 [INFO] [stdout] | [INFO] [stdout] 1042 | / let mut messages = Vec::::new(); [INFO] [stdout] 1043 | | messages.push(String::from("äöüß⚓")); [INFO] [stdout] 1044 | | messages.push(String::from("abcdefghij")); [INFO] [stdout] 1045 | | messages.push(String::from("12345678901234567890")); [INFO] [stdout] | |____________________________________________________________^ help: consider using the `vec![]` macro: `let messages = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `result.get(0)` [INFO] [stdout] --> src/lib.rs:1049:20 [INFO] [stdout] | [INFO] [stdout] 1049 | assert_eq!(result.get(0).unwrap().clone(), String::from("äöüß⚓ ")); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `result.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lib.rs:639:12 [INFO] [stdout] | [INFO] [stdout] 639 | if stdin_length > available_space || false { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `stdin_length > available_space` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `result.get(0)` [INFO] [stdout] --> src/lib.rs:1063:20 [INFO] [stdout] | [INFO] [stdout] 1063 | assert_eq!(result.get(0).unwrap().clone(), String::from(" ")); [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `result.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/lib.rs:637:9 [INFO] [stdout] | [INFO] [stdout] 637 | let formated: String; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `formated` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 637 ~ [INFO] [stdout] 638 | [INFO] [stdout] 639 ~ let formated: String = if stdin_length > available_space || false { [INFO] [stdout] 640 | // TODO: utf8 slicing panic with äöü [INFO] [stdout] 641 ~ format!("[..]{}", stdin[(stdin_length - available_space)..].to_string()) [INFO] [stdout] 642 | } [INFO] [stdout] 643 | else { [INFO] [stdout] 644 ~ stdin [INFO] [stdout] 645 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/lib.rs:641:42 [INFO] [stdout] | [INFO] [stdout] 641 | formated = format!("[..]{}", stdin[(stdin_length - available_space)..].to_string()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use this: `&stdin[(stdin_length - available_space)..]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_in_format_args [INFO] [stdout] = note: `#[warn(clippy::to_string_in_format_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/lib.rs:771:9 [INFO] [stdout] | [INFO] [stdout] 771 | let logfile_cols: usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ created here [INFO] [stdout] 772 | let logfile_rows: usize; [INFO] [stdout] 773 | logfile_cols = (window_width - 2) as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ initialised here [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `logfile_cols` here [INFO] [stdout] | [INFO] [stdout] 771 ~ [INFO] [stdout] 772 | let logfile_rows: usize; [INFO] [stdout] 773 ~ let logfile_cols: usize = (window_width - 2) as usize; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/lib.rs:772:9 [INFO] [stdout] | [INFO] [stdout] 772 | let logfile_rows: usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ created here [INFO] [stdout] 773 | logfile_cols = (window_width - 2) as usize; [INFO] [stdout] 774 | logfile_rows = (window_height - 2) as usize; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ initialised here [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `logfile_rows` here [INFO] [stdout] | [INFO] [stdout] 772 ~ [INFO] [stdout] 773 | logfile_cols = (window_width - 2) as usize; [INFO] [stdout] 774 ~ let logfile_rows: usize = (window_height - 2) as usize; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/lib.rs:853:32 [INFO] [stdout] | [INFO] [stdout] 853 | fn message_length(message: &String) -> usize { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 853 - fn message_length(message: &String) -> usize { [INFO] [stdout] 853 + fn message_length(message: &str) -> usize { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `str::repeat` using iterators [INFO] [stdout] --> src/lib.rs:879:26 [INFO] [stdout] | [INFO] [stdout] 879 | let blanks = std::iter::repeat(" ").take(number_of_blanks).collect::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `" ".repeat(number_of_blanks)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_str_repeat [INFO] [stdout] = note: `#[warn(clippy::manual_str_repeat)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> src/lib.rs:879:26 [INFO] [stdout] | [INFO] [stdout] 879 | let blanks = std::iter::repeat(" ").take(number_of_blanks).collect::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n(" ", number_of_blanks)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] = note: `#[warn(clippy::manual_repeat_n)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `SPLIT` contains a capitalized acronym [INFO] [stdout] --> src/lib.rs:888:33 [INFO] [stdout] | [INFO] [stdout] 888 | enum StateMachine { SPLIT, DONE }; [INFO] [stdout] | ^^^^^ help: consider making the acronym lowercase, except the initial letter: `Split` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `DONE` contains a capitalized acronym [INFO] [stdout] --> src/lib.rs:888:40 [INFO] [stdout] | [INFO] [stdout] 888 | enum StateMachine { SPLIT, DONE }; [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Done` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `str::repeat` using iterators [INFO] [stdout] --> src/lib.rs:918:34 [INFO] [stdout] | [INFO] [stdout] 918 | let blanks = std::iter::repeat(" ").take(number_of_blanks).collect::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `" ".repeat(number_of_blanks)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_str_repeat [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> src/lib.rs:918:34 [INFO] [stdout] | [INFO] [stdout] 918 | let blanks = std::iter::repeat(" ").take(number_of_blanks).collect::(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n(" ", number_of_blanks)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_repeat_n [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `Term::split_or_bloat_message(available_cols, String::from("")).get(0)` [INFO] [stdout] --> src/lib.rs:953:32 [INFO] [stdout] | [INFO] [stdout] 953 | let fill_message = Term::split_or_bloat_message(available_cols, String::from("")).get(0).unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `Term::split_or_bloat_message(available_cols, String::from("")).first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.45s [INFO] running `Command { std: "docker" "inspect" "8eb28c28c19009fc107f9b960f82ed1d7801fb6b3ab7b1b322fec8c6932d983c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "8eb28c28c19009fc107f9b960f82ed1d7801fb6b3ab7b1b322fec8c6932d983c", kill_on_drop: false }` [INFO] [stdout] 8eb28c28c19009fc107f9b960f82ed1d7801fb6b3ab7b1b322fec8c6932d983c