[INFO] cloning repository https://github.com/JimJ92120/xplr-tui [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/JimJ92120/xplr-tui" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJimJ92120%2Fxplr-tui", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJimJ92120%2Fxplr-tui'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] eeeb18c4148d04ade290b1b46c0048496a23b25c [INFO] linting JimJ92120/xplr-tui against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJimJ92120%2Fxplr-tui" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/JimJ92120/xplr-tui [INFO] finished tweaking git repo https://github.com/JimJ92120/xplr-tui [INFO] tweaked toml for git repo https://github.com/JimJ92120/xplr-tui written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/JimJ92120/xplr-tui 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] crate git repo https://github.com/JimJ92120/xplr-tui already has a lockfile, it will not be regenerated [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] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded num-conv v0.2.0 [INFO] [stderr] Downloaded time-core v0.1.8 [INFO] [stderr] Downloaded num_threads v0.1.7 [INFO] [stderr] Downloaded unicode-truncate v2.0.1 [INFO] [stderr] Downloaded lru v0.16.3 [INFO] [stderr] Downloaded vtparse v0.6.2 [INFO] [stderr] Downloaded siphasher v1.0.2 [INFO] [stderr] Downloaded wezterm-color-types v0.3.0 [INFO] [stderr] Downloaded memmem v0.1.1 [INFO] [stderr] Downloaded signal-hook-mio v0.2.5 [INFO] [stderr] Downloaded color-spantrace v0.3.0 [INFO] [stderr] Downloaded indenter v0.3.4 [INFO] [stderr] Downloaded filedescriptor v0.8.3 [INFO] [stderr] Downloaded ratatui-macros v0.7.0 [INFO] [stderr] Downloaded rustc-demangle v0.1.27 [INFO] [stderr] Downloaded pest_generator v2.8.6 [INFO] [stderr] Downloaded owo-colors v4.2.3 [INFO] [stderr] Downloaded eyre v0.6.12 [INFO] [stderr] Downloaded fancy-regex v0.11.0 [INFO] [stderr] Downloaded finl_unicode v1.4.0 [INFO] [stderr] Downloaded ratatui-core v0.1.0 [INFO] [stderr] Downloaded pest v2.8.6 [INFO] [stderr] Downloaded crossterm v0.29.0 [INFO] [stderr] Downloaded pest_meta v2.8.6 [INFO] [stderr] Downloaded time v0.3.47 [INFO] [stderr] Downloaded ratatui-widgets v0.3.0 [INFO] [stderr] Downloaded anyhow v1.0.101 [INFO] [stderr] Downloaded signal-hook v0.3.18 [INFO] [stderr] Downloaded wezterm-bidi v0.2.3 [INFO] [stderr] Downloaded darling_core v0.23.0 [INFO] [stderr] Downloaded kasuari v0.4.11 [INFO] [stderr] Downloaded terminfo v0.9.0 [INFO] [stderr] Downloaded ucd-trie v0.1.7 [INFO] [stderr] Downloaded darling v0.23.0 [INFO] [stderr] Downloaded regex-syntax v0.8.9 [INFO] [stderr] Downloaded termwiz v0.23.3 [INFO] [stderr] Downloaded indoc v2.0.7 [INFO] [stderr] Downloaded pest_derive v2.8.6 [INFO] [stderr] Downloaded termios v0.3.3 [INFO] [stderr] Downloaded ratatui v0.30.0 [INFO] [stderr] Downloaded ratatui-crossterm v0.1.0 [INFO] [stderr] Downloaded wezterm-blob-leases v0.1.1 [INFO] [stderr] Downloaded lab v0.11.0 [INFO] [stderr] Downloaded csscolorparser v0.6.2 [INFO] [stderr] Downloaded wezterm-input-types v0.1.0 [INFO] [stderr] Downloaded ratatui-termwiz v0.1.0 [INFO] [stderr] Downloaded mac_address v1.1.8 [INFO] [stderr] Downloaded color-eyre v0.6.5 [INFO] [stderr] Downloaded wezterm-dynamic-derive v0.1.1 [INFO] [stderr] Downloaded wezterm-dynamic v0.2.1 [INFO] [stderr] Downloaded tracing-error v0.2.1 [INFO] [stderr] Downloaded darling_macro v0.23.0 [INFO] [stderr] Downloaded line-clipping v0.3.5 [INFO] [stderr] Downloaded atomic v0.6.1 [INFO] [stderr] Downloaded instability v0.3.11 [INFO] [stderr] Downloaded deltae v0.3.2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 3e68f26ff1ec1a2d7e23fa290042dc82efacee886601bb92e779c56b0581f154 [INFO] running `Command { std: "docker" "start" "-a" "3e68f26ff1ec1a2d7e23fa290042dc82efacee886601bb92e779c56b0581f154", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "3e68f26ff1ec1a2d7e23fa290042dc82efacee886601bb92e779c56b0581f154", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3e68f26ff1ec1a2d7e23fa290042dc82efacee886601bb92e779c56b0581f154", kill_on_drop: false }` [INFO] [stdout] 3e68f26ff1ec1a2d7e23fa290042dc82efacee886601bb92e779c56b0581f154 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] ddb77bab6d7cea18b2d1ed72cbf8c76f0a1f7ecb05e879c876b4dad9f7b12712 [INFO] running `Command { std: "docker" "start" "-a" "ddb77bab6d7cea18b2d1ed72cbf8c76f0a1f7ecb05e879c876b4dad9f7b12712", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling quote v1.0.44 [INFO] [stderr] Compiling libc v0.2.180 [INFO] [stderr] Checking cfg-if v1.0.4 [INFO] [stderr] Compiling rustversion v1.0.22 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Checking allocator-api2 v0.2.21 [INFO] [stderr] Checking foldhash v0.2.0 [INFO] [stderr] Compiling ident_case v1.0.1 [INFO] [stderr] Checking bitflags v2.10.0 [INFO] [stderr] Compiling strsim v0.11.1 [INFO] [stderr] Checking itertools v0.14.0 [INFO] [stderr] Compiling signal-hook v0.3.18 [INFO] [stderr] Checking ryu v1.0.22 [INFO] [stderr] Checking unicode-width v0.2.2 [INFO] [stderr] Compiling unicode-segmentation v1.12.0 [INFO] [stderr] Compiling instability v0.3.11 [INFO] [stderr] Compiling indoc v2.0.7 [INFO] [stderr] Checking tracing-core v0.1.36 [INFO] [stderr] Checking log v0.4.29 [INFO] [stderr] Checking lazy_static v1.5.0 [INFO] [stderr] Compiling rustix v1.1.3 [INFO] [stderr] Checking powerfmt v0.2.0 [INFO] [stderr] Checking sharded-slab v0.1.7 [INFO] [stderr] Checking thread_local v1.1.9 [INFO] [stderr] Checking num-conv v0.2.0 [INFO] [stderr] Checking time-core v0.1.8 [INFO] [stderr] Checking hashbrown v0.16.1 [INFO] [stderr] Compiling litrs v1.0.0 [INFO] [stderr] Checking deranged v0.5.5 [INFO] [stderr] Checking num_threads v0.1.7 [INFO] [stderr] Compiling owo-colors v4.2.3 [INFO] [stderr] Compiling object v0.37.3 [INFO] [stderr] Checking tracing v0.1.44 [INFO] [stderr] Checking line-clipping v0.3.5 [INFO] [stderr] Compiling eyre v0.6.12 [INFO] [stderr] Compiling convert_case v0.10.0 [INFO] [stderr] Checking gimli v0.32.3 [INFO] [stderr] Checking adler2 v2.0.1 [INFO] [stderr] Checking memchr v2.8.0 [INFO] [stderr] Checking tracing-subscriber v0.3.22 [INFO] [stderr] Compiling color-spantrace v0.3.0 [INFO] [stderr] Checking miniz_oxide v0.8.9 [INFO] [stderr] Checking errno v0.3.14 [INFO] [stderr] Checking castaway v0.2.4 [INFO] [stderr] Checking mio v1.1.1 [INFO] [stderr] Checking parking_lot_core v0.9.12 [INFO] [stderr] Checking compact_str v0.9.0 [INFO] [stderr] Compiling document-features v0.2.12 [INFO] [stderr] Checking parking_lot v0.12.5 [INFO] [stderr] Checking lru v0.16.3 [INFO] [stderr] Checking signal-hook-registry v1.4.8 [INFO] [stderr] Checking rustc-demangle v0.1.27 [INFO] [stderr] Checking indenter v0.3.4 [INFO] [stderr] Compiling syn v2.0.114 [INFO] [stderr] Checking signal-hook-mio v0.2.5 [INFO] [stderr] Checking time v0.3.47 [INFO] [stderr] Checking tracing-error v0.2.1 [INFO] [stderr] Checking unicode-truncate v2.0.1 [INFO] [stderr] Checking addr2line v0.25.1 [INFO] [stderr] Compiling darling_core v0.23.0 [INFO] [stderr] Checking backtrace v0.3.76 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling strum_macros v0.27.2 [INFO] [stderr] Compiling derive_more-impl v2.1.1 [INFO] [stderr] Checking color-eyre v0.6.5 [INFO] [stderr] Checking derive_more v2.1.1 [INFO] [stderr] Checking crossterm v0.29.0 [INFO] [stderr] Checking kasuari v0.4.11 [INFO] [stderr] Checking strum v0.27.2 [INFO] [stderr] Checking ratatui-core v0.1.0 [INFO] [stderr] Compiling darling_macro v0.23.0 [INFO] [stderr] Compiling darling v0.23.0 [INFO] [stderr] Checking ratatui-widgets v0.3.0 [INFO] [stderr] Checking ratatui-crossterm v0.1.0 [INFO] [stderr] Checking ratatui-macros v0.7.0 [INFO] [stderr] Checking ratatui v0.30.0 [INFO] [stderr] Checking xplr-tui v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: methods called `new` usually return `Self` [INFO] [stdout] --> src/components/base/box_container.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | / pub fn new(title: String) -> Block<'static> { [INFO] [stdout] 15 | | let box_container = Block::bordered() [INFO] [stdout] 16 | | .border_type(BorderType::Rounded) [INFO] [stdout] 17 | | .padding(Padding::new(1, 1, 0, 0)); [INFO] [stdout] ... | [INFO] [stdout] 23 | | box_container [INFO] [stdout] 24 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stdout] = note: `#[warn(clippy::new_ret_no_self)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/components/directory_content.rs:95:35 [INFO] [stdout] | [INFO] [stdout] 95 | let selected_item_index = self.data.selected_item_index.clone() as u16; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.data.selected_item_index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/components/directory_content.rs:113:13 [INFO] [stdout] | [INFO] [stdout] 113 | return current_directory.path_name; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 113 - return current_directory.path_name; [INFO] [stdout] 113 + current_directory.path_name [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/components/directory_content.rs:123:25 [INFO] [stdout] | [INFO] [stdout] 123 | return directory.name.to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 123 - return directory.name.to_string(); [INFO] [stdout] 123 + directory.name.to_string() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/components/directory_item_preview.rs:30:17 [INFO] [stdout] | [INFO] [stdout] 30 | || "" == self.data.preview [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.data.preview.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/components/command_list.rs:57:12 [INFO] [stdout] | [INFO] [stdout] 57 | if !current_command.is_none() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `current_command.is_some()` [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: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/view/layout/content.rs:56:34 [INFO] [stdout] | [INFO] [stdout] 56 | selected_item_index: selected_item_index.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `selected_item_index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `new` usually return `Self` [INFO] [stdout] --> src/components/base/box_container.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | / pub fn new(title: String) -> Block<'static> { [INFO] [stdout] 15 | | let box_container = Block::bordered() [INFO] [stdout] 16 | | .border_type(BorderType::Rounded) [INFO] [stdout] 17 | | .padding(Padding::new(1, 1, 0, 0)); [INFO] [stdout] ... | [INFO] [stdout] 23 | | box_container [INFO] [stdout] 24 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stdout] = note: `#[warn(clippy::new_ret_no_self)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `char` which implements the `Copy` trait [INFO] [stdout] --> src/store/command/mod.rs:47:17 [INFO] [stdout] | [INFO] [stdout] 47 | payload.downcast_ref::().unwrap().clone() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*payload.downcast_ref::().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/components/directory_content.rs:95:35 [INFO] [stdout] | [INFO] [stdout] 95 | let selected_item_index = self.data.selected_item_index.clone() as u16; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.data.selected_item_index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/store/command/mod.rs:77:12 [INFO] [stdout] | [INFO] [stdout] 77 | if !self.current_command.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.current_command.is_some()` [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 `return` statement [INFO] [stdout] --> src/components/directory_content.rs:113:13 [INFO] [stdout] | [INFO] [stdout] 113 | return current_directory.path_name; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 113 - return current_directory.path_name; [INFO] [stdout] 113 + current_directory.path_name [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/store/command/mod.rs:82:12 [INFO] [stdout] | [INFO] [stdout] 82 | if !self.current_command.is_none() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.current_command.is_some()` [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 `return` statement [INFO] [stdout] --> src/components/directory_content.rs:123:25 [INFO] [stdout] | [INFO] [stdout] 123 | return directory.name.to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 123 - return directory.name.to_string(); [INFO] [stdout] 123 + directory.name.to_string() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/store/command/mod.rs:112:12 [INFO] [stdout] | [INFO] [stdout] 112 | if "" == self.input { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.input.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/components/directory_item_preview.rs:30:17 [INFO] [stdout] | [INFO] [stdout] 30 | || "" == self.data.preview [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.data.preview.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/store/command/mod.rs:134:12 [INFO] [stdout] | [INFO] [stdout] 134 | if "" == self.input { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.input.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/components/command_list.rs:57:12 [INFO] [stdout] | [INFO] [stdout] 57 | if !current_command.is_none() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `current_command.is_some()` [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: using `clone` on type `bool` which implements the `Copy` trait [INFO] [stdout] --> src/store/client.rs:15:38 [INFO] [stdout] | [INFO] [stdout] 15 | "is_running" => Box::new(self.is_running.clone()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.is_running` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/store/directory/controller.rs:20:12 [INFO] [stdout] | [INFO] [stdout] 20 | if "" != path_name && "./" != path_name { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!path_name.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/view/layout/content.rs:56:34 [INFO] [stdout] | [INFO] [stdout] 56 | selected_item_index: selected_item_index.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `selected_item_index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/store/directory/controller.rs:61:35 [INFO] [stdout] | [INFO] [stdout] 61 | let entry = entry.expect(&format!("Invalid entry in {}.", directory_path_name)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("Invalid entry in {}.", directory_path_name))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] = note: `#[warn(clippy::expect_fun_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/store/directory/controller.rs:65:22 [INFO] [stdout] | [INFO] [stdout] 65 | .expect(&format!("Unable to fetch content type for '{}'.", path_name)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("Unable to fetch content type for '{}'.", path_name))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/store/directory/controller.rs:67:22 [INFO] [stdout] | [INFO] [stdout] 67 | .expect(&format!("Unable to retrieve '{}' metadata.", entry_path.display().to_string())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("Unable to retrieve '{}' metadata.", entry_path.display().to_string()))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/store/directory/controller.rs:67:95 [INFO] [stdout] | [INFO] [stdout] 67 | .expect(&format!("Unable to retrieve '{}' metadata.", entry_path.display().to_string())); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [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: use of `unwrap_or` to construct default value [INFO] [stdout] --> src/store/directory/controller.rs:91:14 [INFO] [stdout] | [INFO] [stdout] 91 | .unwrap_or(String::new()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `panic!` args [INFO] [stdout] --> src/store/directory/controller.rs:102:49 [INFO] [stdout] | [INFO] [stdout] 102 | panic!("'{}' not found.", path.display().to_string()); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [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] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/store/directory/mod.rs:29:47 [INFO] [stdout] | [INFO] [stdout] 29 | "selected_item_index" => Box::new(self.selected_item_index.clone()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.selected_item_index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/store/directory/mod.rs:56:14 [INFO] [stdout] | [INFO] [stdout] 56 | .expect(&format!("Unable to initialize Store with '{}' path name", path_name)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("Unable to initialize Store with '{}' path name", path_name))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/store/directory/mod.rs:58:14 [INFO] [stdout] | [INFO] [stdout] 58 | .expect(&format!("Unable to initialize Store with '{}' directory name", root_directory_path_name)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("Unable to initialize Store with '{}' directory name", root_directory_path_name))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/store/directory/mod.rs:92:17 [INFO] [stdout] | [INFO] [stdout] 92 | / if DirectoryItemType::File == item.item_type { [INFO] [stdout] 93 | | self.load_preview(); [INFO] [stdout] 94 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 91 ~ Some(item) [INFO] [stdout] 92 ~ if DirectoryItemType::File == item.item_type => { [INFO] [stdout] 93 | self.load_preview(); [INFO] [stdout] 94 ~ }, [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/store/directory/mod.rs:90:9 [INFO] [stdout] | [INFO] [stdout] 90 | / match self.selected_item() { [INFO] [stdout] 91 | | Some(item) => { [INFO] [stdout] 92 | | if DirectoryItemType::File == item.item_type { [INFO] [stdout] 93 | | self.load_preview(); [INFO] [stdout] ... | [INFO] [stdout] 96 | | None => () [INFO] [stdout] 97 | | } [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] 90 ~ if let Some(item) = self.selected_item() { [INFO] [stdout] 91 + if DirectoryItemType::File == item.item_type { [INFO] [stdout] 92 + self.load_preview(); [INFO] [stdout] 93 + } [INFO] [stdout] 94 + } [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/store/directory/mod.rs:126:9 [INFO] [stdout] | [INFO] [stdout] 126 | / match self.selected_item() { [INFO] [stdout] 127 | | Some(selected_item) => { [INFO] [stdout] 128 | | // maybe move to DirectoryController to further prevent fetching non-readable items [INFO] [stdout] 129 | | if !selected_item.can_read { [INFO] [stdout] ... | [INFO] [stdout] 147 | | None => () [INFO] [stdout] 148 | | } [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] 126 ~ if let Some(selected_item) = self.selected_item() { [INFO] [stdout] 127 + // maybe move to DirectoryController to further prevent fetching non-readable items [INFO] [stdout] 128 + if !selected_item.can_read { [INFO] [stdout] 129 + return; [INFO] [stdout] 130 + } [INFO] [stdout] 131 + [INFO] [stdout] 132 + if DirectoryItemType::Directory == selected_item.item_type { [INFO] [stdout] 133 + let next_directory_path_name = selected_item.path_name.clone(); [INFO] [stdout] 134 + [INFO] [stdout] 135 + match DirectoryController::get_directory(next_directory_path_name.clone()) { [INFO] [stdout] 136 + Ok(next_directory) => { [INFO] [stdout] 137 + self.parent_directory_list.push(directory.clone()); [INFO] [stdout] 138 + self.directory = next_directory.clone(); [INFO] [stdout] 139 + [INFO] [stdout] 140 + self.update_selected_item_index(0) [INFO] [stdout] 141 + }, [INFO] [stdout] 142 + Err(error) => panic!("Unable to retrieve content for '{}' directory.\n{}", next_directory_path_name, error) [INFO] [stdout] 143 + }; [INFO] [stdout] 144 + } [INFO] [stdout] 145 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/store/directory/mod.rs:207:18 [INFO] [stdout] | [INFO] [stdout] 207 | .expect( [INFO] [stdout] | __________________^ [INFO] [stdout] 208 | | &format!("'{}' is not a file.", selected_item.path_name) [INFO] [stdout] 209 | | ); [INFO] [stdout] | |_________________^ help: try: `unwrap_or_else(|_| panic!("'{}' is not a file.", selected_item.path_name))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `char` which implements the `Copy` trait [INFO] [stdout] --> src/store/command/mod.rs:47:17 [INFO] [stdout] | [INFO] [stdout] 47 | payload.downcast_ref::().unwrap().clone() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*payload.downcast_ref::().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/store/command/mod.rs:77:12 [INFO] [stdout] | [INFO] [stdout] 77 | if !self.current_command.is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.current_command.is_some()` [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: this boolean expression can be simplified [INFO] [stdout] --> src/store/command/mod.rs:82:12 [INFO] [stdout] | [INFO] [stdout] 82 | if !self.current_command.is_none() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.current_command.is_some()` [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: usage of `Box<&dyn NestedStore>` [INFO] [stdout] --> src/store/mod.rs:77:58 [INFO] [stdout] | [INFO] [stdout] 77 | fn get_nested_store(&self, store_type: StoreType) -> Box<&dyn NestedStore> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `&dyn NestedStore` [INFO] [stdout] | [INFO] [stdout] = note: `&dyn NestedStore` is already a pointer, `Box<&dyn NestedStore>` allocates a pointer on the heap [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_allocation [INFO] [stdout] = note: `#[warn(clippy::redundant_allocation)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/store/command/mod.rs:112:12 [INFO] [stdout] | [INFO] [stdout] 112 | if "" == self.input { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.input.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `Box<&mut dyn NestedStore>` [INFO] [stdout] --> src/store/mod.rs:85:66 [INFO] [stdout] | [INFO] [stdout] 85 | fn get_nested_store_mut(&mut self, store_type: StoreType) -> Box<&mut dyn NestedStore> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut dyn NestedStore` [INFO] [stdout] | [INFO] [stdout] = note: `&mut dyn NestedStore` is already a pointer, `Box<&mut dyn NestedStore>` allocates a pointer on the heap [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_allocation [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/store/command/mod.rs:134:12 [INFO] [stdout] | [INFO] [stdout] 134 | if "" == self.input { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.input.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `bool` which implements the `Copy` trait [INFO] [stdout] --> src/store/client.rs:15:38 [INFO] [stdout] | [INFO] [stdout] 15 | "is_running" => Box::new(self.is_running.clone()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.is_running` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/store/directory/controller.rs:20:12 [INFO] [stdout] | [INFO] [stdout] 20 | if "" != path_name && "./" != path_name { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!path_name.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/store/directory/controller.rs:61:35 [INFO] [stdout] | [INFO] [stdout] 61 | let entry = entry.expect(&format!("Invalid entry in {}.", directory_path_name)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("Invalid entry in {}.", directory_path_name))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] = note: `#[warn(clippy::expect_fun_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/store/directory/controller.rs:65:22 [INFO] [stdout] | [INFO] [stdout] 65 | .expect(&format!("Unable to fetch content type for '{}'.", path_name)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("Unable to fetch content type for '{}'.", path_name))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/store/directory/controller.rs:67:22 [INFO] [stdout] | [INFO] [stdout] 67 | .expect(&format!("Unable to retrieve '{}' metadata.", entry_path.display().to_string())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("Unable to retrieve '{}' metadata.", entry_path.display().to_string()))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `format!` args [INFO] [stdout] --> src/store/directory/controller.rs:67:95 [INFO] [stdout] | [INFO] [stdout] 67 | .expect(&format!("Unable to retrieve '{}' metadata.", entry_path.display().to_string())); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [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: use of `unwrap_or` to construct default value [INFO] [stdout] --> src/store/directory/controller.rs:91:14 [INFO] [stdout] | [INFO] [stdout] 91 | .unwrap_or(String::new()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `to_string` applied to a type that implements `Display` in `panic!` args [INFO] [stdout] --> src/store/directory/controller.rs:102:49 [INFO] [stdout] | [INFO] [stdout] 102 | panic!("'{}' not found.", path.display().to_string()); [INFO] [stdout] | ^^^^^^^^^^^^ help: remove this [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] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/store/directory/mod.rs:29:47 [INFO] [stdout] | [INFO] [stdout] 29 | "selected_item_index" => Box::new(self.selected_item_index.clone()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.selected_item_index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/store/directory/mod.rs:56:14 [INFO] [stdout] | [INFO] [stdout] 56 | .expect(&format!("Unable to initialize Store with '{}' path name", path_name)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("Unable to initialize Store with '{}' path name", path_name))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/store/directory/mod.rs:58:14 [INFO] [stdout] | [INFO] [stdout] 58 | .expect(&format!("Unable to initialize Store with '{}' directory name", root_directory_path_name)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("Unable to initialize Store with '{}' directory name", root_directory_path_name))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/store/directory/mod.rs:92:17 [INFO] [stdout] | [INFO] [stdout] 92 | / if DirectoryItemType::File == item.item_type { [INFO] [stdout] 93 | | self.load_preview(); [INFO] [stdout] 94 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 91 ~ Some(item) [INFO] [stdout] 92 ~ if DirectoryItemType::File == item.item_type => { [INFO] [stdout] 93 | self.load_preview(); [INFO] [stdout] 94 ~ }, [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/store/directory/mod.rs:90:9 [INFO] [stdout] | [INFO] [stdout] 90 | / match self.selected_item() { [INFO] [stdout] 91 | | Some(item) => { [INFO] [stdout] 92 | | if DirectoryItemType::File == item.item_type { [INFO] [stdout] 93 | | self.load_preview(); [INFO] [stdout] ... | [INFO] [stdout] 96 | | None => () [INFO] [stdout] 97 | | } [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] 90 ~ if let Some(item) = self.selected_item() { [INFO] [stdout] 91 + if DirectoryItemType::File == item.item_type { [INFO] [stdout] 92 + self.load_preview(); [INFO] [stdout] 93 + } [INFO] [stdout] 94 + } [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/store/directory/mod.rs:126:9 [INFO] [stdout] | [INFO] [stdout] 126 | / match self.selected_item() { [INFO] [stdout] 127 | | Some(selected_item) => { [INFO] [stdout] 128 | | // maybe move to DirectoryController to further prevent fetching non-readable items [INFO] [stdout] 129 | | if !selected_item.can_read { [INFO] [stdout] ... | [INFO] [stdout] 147 | | None => () [INFO] [stdout] 148 | | } [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] 126 ~ if let Some(selected_item) = self.selected_item() { [INFO] [stdout] 127 + // maybe move to DirectoryController to further prevent fetching non-readable items [INFO] [stdout] 128 + if !selected_item.can_read { [INFO] [stdout] 129 + return; [INFO] [stdout] 130 + } [INFO] [stdout] 131 + [INFO] [stdout] 132 + if DirectoryItemType::Directory == selected_item.item_type { [INFO] [stdout] 133 + let next_directory_path_name = selected_item.path_name.clone(); [INFO] [stdout] 134 + [INFO] [stdout] 135 + match DirectoryController::get_directory(next_directory_path_name.clone()) { [INFO] [stdout] 136 + Ok(next_directory) => { [INFO] [stdout] 137 + self.parent_directory_list.push(directory.clone()); [INFO] [stdout] 138 + self.directory = next_directory.clone(); [INFO] [stdout] 139 + [INFO] [stdout] 140 + self.update_selected_item_index(0) [INFO] [stdout] 141 + }, [INFO] [stdout] 142 + Err(error) => panic!("Unable to retrieve content for '{}' directory.\n{}", next_directory_path_name, error) [INFO] [stdout] 143 + }; [INFO] [stdout] 144 + } [INFO] [stdout] 145 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> src/store/directory/mod.rs:207:18 [INFO] [stdout] | [INFO] [stdout] 207 | .expect( [INFO] [stdout] | __________________^ [INFO] [stdout] 208 | | &format!("'{}' is not a file.", selected_item.path_name) [INFO] [stdout] 209 | | ); [INFO] [stdout] | |_________________^ help: try: `unwrap_or_else(|_| panic!("'{}' is not a file.", selected_item.path_name))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `Box<&dyn NestedStore>` [INFO] [stdout] --> src/store/mod.rs:77:58 [INFO] [stdout] | [INFO] [stdout] 77 | fn get_nested_store(&self, store_type: StoreType) -> Box<&dyn NestedStore> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `&dyn NestedStore` [INFO] [stdout] | [INFO] [stdout] = note: `&dyn NestedStore` is already a pointer, `Box<&dyn NestedStore>` allocates a pointer on the heap [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_allocation [INFO] [stdout] = note: `#[warn(clippy::redundant_allocation)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `Box<&mut dyn NestedStore>` [INFO] [stdout] --> src/store/mod.rs:85:66 [INFO] [stdout] | [INFO] [stdout] 85 | fn get_nested_store_mut(&mut self, store_type: StoreType) -> Box<&mut dyn NestedStore> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut dyn NestedStore` [INFO] [stdout] | [INFO] [stdout] = note: `&mut dyn NestedStore` is already a pointer, `Box<&mut dyn NestedStore>` allocates a pointer on the heap [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_allocation [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 20.38s [INFO] running `Command { std: "docker" "inspect" "ddb77bab6d7cea18b2d1ed72cbf8c76f0a1f7ecb05e879c876b4dad9f7b12712", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ddb77bab6d7cea18b2d1ed72cbf8c76f0a1f7ecb05e879c876b4dad9f7b12712", kill_on_drop: false }` [INFO] [stdout] ddb77bab6d7cea18b2d1ed72cbf8c76f0a1f7ecb05e879c876b4dad9f7b12712