[INFO] fetching crate oppenheimer 0.4.0... [INFO] linting oppenheimer-0.4.0 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate oppenheimer 0.4.0 into /workspace/builds/worker-5-tc1/source [INFO] started tweaking crates.io crate oppenheimer 0.4.0 [INFO] finished tweaking crates.io crate oppenheimer 0.4.0 [INFO] tweaked toml for crates.io crate oppenheimer 0.4.0 written to /workspace/builds/worker-5-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate oppenheimer 0.4.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] crate crates.io crate oppenheimer 0.4.0 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] Downloading crates ... [INFO] [stderr] Downloaded unicode-id v0.3.5 [INFO] [stderr] Downloaded confy v1.0.0 [INFO] [stderr] Downloaded markdown v1.0.0-alpha.22 [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] 4c29acf2f0a31a5d8344df88e9b3b46f9ef39d48010dfe3da6e3a413cdd1f905 [INFO] running `Command { std: "docker" "start" "-a" "4c29acf2f0a31a5d8344df88e9b3b46f9ef39d48010dfe3da6e3a413cdd1f905", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "4c29acf2f0a31a5d8344df88e9b3b46f9ef39d48010dfe3da6e3a413cdd1f905", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4c29acf2f0a31a5d8344df88e9b3b46f9ef39d48010dfe3da6e3a413cdd1f905", kill_on_drop: false }` [INFO] [stdout] 4c29acf2f0a31a5d8344df88e9b3b46f9ef39d48010dfe3da6e3a413cdd1f905 [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] 808c64d4f0fe1a23cd69f7959ff7d0e38716ca7379c9dc47a046b431cfb2f940 [INFO] running `Command { std: "docker" "start" "-a" "808c64d4f0fe1a23cd69f7959ff7d0e38716ca7379c9dc47a046b431cfb2f940", kill_on_drop: false }` [INFO] [stderr] Compiling serde v1.0.219 [INFO] [stderr] Checking log v0.4.25 [INFO] [stderr] Checking indexmap v2.11.0 [INFO] [stderr] Checking bitflags v2.8.0 [INFO] [stderr] Checking winnow v0.7.13 [INFO] [stderr] Compiling syn v2.0.98 [INFO] [stderr] Checking parking_lot_core v0.9.10 [INFO] [stderr] Checking dirs-sys v0.5.0 [INFO] [stderr] Checking compact_str v0.8.1 [INFO] [stderr] Checking unicode-id v0.3.5 [INFO] [stderr] Checking textwrap v0.16.1 [INFO] [stderr] Checking markdown v1.0.0-alpha.22 [INFO] [stderr] Checking mio v1.0.3 [INFO] [stderr] Checking directories v6.0.0 [INFO] [stderr] Checking parking_lot v0.12.3 [INFO] [stderr] Checking rustix v0.38.44 [INFO] [stderr] Checking signal-hook-mio v0.2.4 [INFO] [stderr] Checking crossterm v0.28.1 [INFO] [stderr] Checking toml_datetime v0.6.11 [INFO] [stderr] Checking serde_spanned v0.6.9 [INFO] [stderr] Checking toml_edit v0.22.27 [INFO] [stderr] Compiling darling_core v0.20.10 [INFO] [stderr] Compiling thiserror-impl v2.0.16 [INFO] [stderr] Compiling strum_macros v0.26.4 [INFO] [stderr] Compiling serde_derive v1.0.219 [INFO] [stderr] Checking thiserror v2.0.16 [INFO] [stderr] Checking toml v0.8.23 [INFO] [stderr] Checking confy v1.0.0 [INFO] [stderr] Checking strum v0.26.3 [INFO] [stderr] Compiling darling_macro v0.20.10 [INFO] [stderr] Compiling darling v0.20.10 [INFO] [stderr] Compiling instability v0.3.7 [INFO] [stderr] Checking ratatui v0.29.0 [INFO] [stderr] Checking oppenheimer v0.4.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unneeded unit expression [INFO] [stdout] --> src/main.rs:270:33 [INFO] [stdout] | [INFO] [stdout] 270 | ... () [INFO] [stdout] | ^^ help: remove the final `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit expression [INFO] [stdout] --> src/main.rs:636:17 [INFO] [stdout] | [INFO] [stdout] 636 | () [INFO] [stdout] | ^^ help: remove the final `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit expression [INFO] [stdout] --> src/main.rs:270:33 [INFO] [stdout] | [INFO] [stdout] 270 | ... () [INFO] [stdout] | ^^ help: remove the final `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit expression [INFO] [stdout] --> src/main.rs:636:17 [INFO] [stdout] | [INFO] [stdout] 636 | () [INFO] [stdout] | ^^ help: remove the final `()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `self.current_list` after checking its variant with `is_some` [INFO] [stdout] --> src/board.rs:38:24 [INFO] [stdout] | [INFO] [stdout] 37 | if self.current_list.is_some() { [INFO] [stdout] | ------------------------------ help: try: `if let Some() = self.current_list` [INFO] [stdout] 38 | self.lists[self.current_list.unwrap()].select_next() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `self.current_list` after checking its variant with `is_some` [INFO] [stdout] --> src/board.rs:44:24 [INFO] [stdout] | [INFO] [stdout] 43 | if self.current_list.is_some() { [INFO] [stdout] | ------------------------------ help: try: `if let Some() = self.current_list` [INFO] [stdout] 44 | self.lists[self.current_list.unwrap()].select_previous() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/board.rs:84:17 [INFO] [stdout] | [INFO] [stdout] 84 | !(focused_list && index == current_item || !dim_tailing_items || !list_exception) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(index != current_item || !focused_list) && list_exception && dim_tailing_items` [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: this `if` statement can be collapsed [INFO] [stdout] --> src/board.rs:132:13 [INFO] [stdout] | [INFO] [stdout] 132 | / if let Some(selected_item_index) = current_list.selected_item_index { [INFO] [stdout] 133 | | if selected_item_index > 0 { [INFO] [stdout] 134 | | let cmd = ShuffleItemCommand { [INFO] [stdout] 135 | | list: current_list_index, [INFO] [stdout] ... | [INFO] [stdout] 142 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 132 ~ if let Some(selected_item_index) = current_list.selected_item_index [INFO] [stdout] 133 ~ && selected_item_index > 0 { [INFO] [stdout] 134 | let cmd = ShuffleItemCommand { [INFO] [stdout] ... [INFO] [stdout] 140 | return Some(Box::new(cmd)); [INFO] [stdout] 141 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/board.rs:150:13 [INFO] [stdout] | [INFO] [stdout] 150 | / if let Some(selected_item_index) = current_list.selected_item_index { [INFO] [stdout] 151 | | if selected_item_index < current_list.items.len() - 1 { [INFO] [stdout] 152 | | let cmd = ShuffleItemCommand { [INFO] [stdout] 153 | | list: current_list_index, [INFO] [stdout] ... | [INFO] [stdout] 160 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 150 ~ if let Some(selected_item_index) = current_list.selected_item_index [INFO] [stdout] 151 ~ && selected_item_index < current_list.items.len() - 1 { [INFO] [stdout] 152 | let cmd = ShuffleItemCommand { [INFO] [stdout] ... [INFO] [stdout] 158 | return Some(Box::new(cmd)); [INFO] [stdout] 159 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/board.rs:166:9 [INFO] [stdout] | [INFO] [stdout] 166 | / if let Some(current_list_index) = self.current_list { [INFO] [stdout] 167 | | if current_list_index > 0 { [INFO] [stdout] 168 | | let current_list = self.current_list_mut().unwrap(); [INFO] [stdout] 169 | | if let Some(selected_item_index) = current_list.selected_item_index { [INFO] [stdout] ... | [INFO] [stdout] 180 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 166 ~ if let Some(current_list_index) = self.current_list [INFO] [stdout] 167 ~ && current_list_index > 0 { [INFO] [stdout] 168 | let current_list = self.current_list_mut().unwrap(); [INFO] [stdout] ... [INFO] [stdout] 178 | } [INFO] [stdout] 179 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/board.rs:185:9 [INFO] [stdout] | [INFO] [stdout] 185 | / if let Some(current_list_index) = self.current_list { [INFO] [stdout] 186 | | if current_list_index < self.lists.len() - 1 { [INFO] [stdout] 187 | | let current_list = self.current_list_mut().unwrap(); [INFO] [stdout] 188 | | if let Some(selected_item_index) = current_list.selected_item_index { [INFO] [stdout] ... | [INFO] [stdout] 199 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 185 ~ if let Some(current_list_index) = self.current_list [INFO] [stdout] 186 ~ && current_list_index < self.lists.len() - 1 { [INFO] [stdout] 187 | let current_list = self.current_list_mut().unwrap(); [INFO] [stdout] ... [INFO] [stdout] 197 | } [INFO] [stdout] 198 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/board.rs:334:9 [INFO] [stdout] | [INFO] [stdout] 334 | / if let Some(current_list) = self.current_list { [INFO] [stdout] 335 | | if current_list > 0 { [INFO] [stdout] 336 | | let cmd = ShuffleListCommand { [INFO] [stdout] 337 | | from_index: current_list, [INFO] [stdout] ... | [INFO] [stdout] 343 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 334 ~ if let Some(current_list) = self.current_list [INFO] [stdout] 335 ~ && current_list > 0 { [INFO] [stdout] 336 | let cmd = ShuffleListCommand { [INFO] [stdout] ... [INFO] [stdout] 341 | return Some(Box::new(cmd)); [INFO] [stdout] 342 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/board.rs:348:9 [INFO] [stdout] | [INFO] [stdout] 348 | / if let Some(current_list) = self.current_list { [INFO] [stdout] 349 | | if current_list < self.lists.len() - 1 { [INFO] [stdout] 350 | | let cmd = ShuffleListCommand { [INFO] [stdout] 351 | | from_index: current_list, [INFO] [stdout] ... | [INFO] [stdout] 357 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 348 ~ if let Some(current_list) = self.current_list [INFO] [stdout] 349 ~ && current_list < self.lists.len() - 1 { [INFO] [stdout] 350 | let cmd = ShuffleListCommand { [INFO] [stdout] ... [INFO] [stdout] 355 | return Some(Box::new(cmd)); [INFO] [stdout] 356 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/board.rs:362:9 [INFO] [stdout] | [INFO] [stdout] 362 | / if let Some(list) = self.current_list { [INFO] [stdout] 363 | | if let Some(item) = self.lists[list].selected_item_index { [INFO] [stdout] 364 | | return Some(Box::new(ChangeTextCommand { [INFO] [stdout] 365 | | list, [INFO] [stdout] ... | [INFO] [stdout] 372 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 362 ~ if let Some(list) = self.current_list [INFO] [stdout] 363 ~ && let Some(item) = self.lists[list].selected_item_index { [INFO] [stdout] 364 | return Some(Box::new(ChangeTextCommand { [INFO] [stdout] ... [INFO] [stdout] 370 | })); [INFO] [stdout] 371 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `self.current_list` after checking its variant with `is_some` [INFO] [stdout] --> src/board.rs:38:24 [INFO] [stdout] | [INFO] [stdout] 37 | if self.current_list.is_some() { [INFO] [stdout] | ------------------------------ help: try: `if let Some() = self.current_list` [INFO] [stdout] 38 | self.lists[self.current_list.unwrap()].select_next() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `self.current_list` after checking its variant with `is_some` [INFO] [stdout] --> src/board.rs:44:24 [INFO] [stdout] | [INFO] [stdout] 43 | if self.current_list.is_some() { [INFO] [stdout] | ------------------------------ help: try: `if let Some() = self.current_list` [INFO] [stdout] 44 | self.lists[self.current_list.unwrap()].select_previous() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/board.rs:84:17 [INFO] [stdout] | [INFO] [stdout] 84 | !(focused_list && index == current_item || !dim_tailing_items || !list_exception) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(index != current_item || !focused_list) && list_exception && dim_tailing_items` [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: this `if` statement can be collapsed [INFO] [stdout] --> src/board.rs:132:13 [INFO] [stdout] | [INFO] [stdout] 132 | / if let Some(selected_item_index) = current_list.selected_item_index { [INFO] [stdout] 133 | | if selected_item_index > 0 { [INFO] [stdout] 134 | | let cmd = ShuffleItemCommand { [INFO] [stdout] 135 | | list: current_list_index, [INFO] [stdout] ... | [INFO] [stdout] 142 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 132 ~ if let Some(selected_item_index) = current_list.selected_item_index [INFO] [stdout] 133 ~ && selected_item_index > 0 { [INFO] [stdout] 134 | let cmd = ShuffleItemCommand { [INFO] [stdout] ... [INFO] [stdout] 140 | return Some(Box::new(cmd)); [INFO] [stdout] 141 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/board.rs:150:13 [INFO] [stdout] | [INFO] [stdout] 150 | / if let Some(selected_item_index) = current_list.selected_item_index { [INFO] [stdout] 151 | | if selected_item_index < current_list.items.len() - 1 { [INFO] [stdout] 152 | | let cmd = ShuffleItemCommand { [INFO] [stdout] 153 | | list: current_list_index, [INFO] [stdout] ... | [INFO] [stdout] 160 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 150 ~ if let Some(selected_item_index) = current_list.selected_item_index [INFO] [stdout] 151 ~ && selected_item_index < current_list.items.len() - 1 { [INFO] [stdout] 152 | let cmd = ShuffleItemCommand { [INFO] [stdout] ... [INFO] [stdout] 158 | return Some(Box::new(cmd)); [INFO] [stdout] 159 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> src/config.rs:116:31 [INFO] [stdout] | [INFO] [stdout] 116 | .flat_map(|c| std::iter::repeat(c).take(2)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n(c, 2)` [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: this `if` statement can be collapsed [INFO] [stdout] --> src/board.rs:166:9 [INFO] [stdout] | [INFO] [stdout] 166 | / if let Some(current_list_index) = self.current_list { [INFO] [stdout] 167 | | if current_list_index > 0 { [INFO] [stdout] 168 | | let current_list = self.current_list_mut().unwrap(); [INFO] [stdout] 169 | | if let Some(selected_item_index) = current_list.selected_item_index { [INFO] [stdout] ... | [INFO] [stdout] 180 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 166 ~ if let Some(current_list_index) = self.current_list [INFO] [stdout] 167 ~ && current_list_index > 0 { [INFO] [stdout] 168 | let current_list = self.current_list_mut().unwrap(); [INFO] [stdout] ... [INFO] [stdout] 178 | } [INFO] [stdout] 179 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/board.rs:185:9 [INFO] [stdout] | [INFO] [stdout] 185 | / if let Some(current_list_index) = self.current_list { [INFO] [stdout] 186 | | if current_list_index < self.lists.len() - 1 { [INFO] [stdout] 187 | | let current_list = self.current_list_mut().unwrap(); [INFO] [stdout] 188 | | if let Some(selected_item_index) = current_list.selected_item_index { [INFO] [stdout] ... | [INFO] [stdout] 199 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 185 ~ if let Some(current_list_index) = self.current_list [INFO] [stdout] 186 ~ && current_list_index < self.lists.len() - 1 { [INFO] [stdout] 187 | let current_list = self.current_list_mut().unwrap(); [INFO] [stdout] ... [INFO] [stdout] 197 | } [INFO] [stdout] 198 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/board.rs:334:9 [INFO] [stdout] | [INFO] [stdout] 334 | / if let Some(current_list) = self.current_list { [INFO] [stdout] 335 | | if current_list > 0 { [INFO] [stdout] 336 | | let cmd = ShuffleListCommand { [INFO] [stdout] 337 | | from_index: current_list, [INFO] [stdout] ... | [INFO] [stdout] 343 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 334 ~ if let Some(current_list) = self.current_list [INFO] [stdout] 335 ~ && current_list > 0 { [INFO] [stdout] 336 | let cmd = ShuffleListCommand { [INFO] [stdout] ... [INFO] [stdout] 341 | return Some(Box::new(cmd)); [INFO] [stdout] 342 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/board.rs:348:9 [INFO] [stdout] | [INFO] [stdout] 348 | / if let Some(current_list) = self.current_list { [INFO] [stdout] 349 | | if current_list < self.lists.len() - 1 { [INFO] [stdout] 350 | | let cmd = ShuffleListCommand { [INFO] [stdout] 351 | | from_index: current_list, [INFO] [stdout] ... | [INFO] [stdout] 357 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 348 ~ if let Some(current_list) = self.current_list [INFO] [stdout] 349 ~ && current_list < self.lists.len() - 1 { [INFO] [stdout] 350 | let cmd = ShuffleListCommand { [INFO] [stdout] ... [INFO] [stdout] 355 | return Some(Box::new(cmd)); [INFO] [stdout] 356 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/board.rs:362:9 [INFO] [stdout] | [INFO] [stdout] 362 | / if let Some(list) = self.current_list { [INFO] [stdout] 363 | | if let Some(item) = self.lists[list].selected_item_index { [INFO] [stdout] 364 | | return Some(Box::new(ChangeTextCommand { [INFO] [stdout] 365 | | list, [INFO] [stdout] ... | [INFO] [stdout] 372 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 362 ~ if let Some(list) = self.current_list [INFO] [stdout] 363 ~ && let Some(item) = self.lists[list].selected_item_index { [INFO] [stdout] 364 | return Some(Box::new(ChangeTextCommand { [INFO] [stdout] ... [INFO] [stdout] 370 | })); [INFO] [stdout] 371 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/list.rs:135:9 [INFO] [stdout] | [INFO] [stdout] 135 | / if let Some(selected_item_index) = self.selected_item_index { [INFO] [stdout] 136 | | if selected_item_index > 0 { [INFO] [stdout] 137 | | self.selected_item_index = Some((selected_item_index - 1).max(0)) [INFO] [stdout] 138 | | } [INFO] [stdout] 139 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 135 ~ if let Some(selected_item_index) = self.selected_item_index [INFO] [stdout] 136 ~ && selected_item_index > 0 { [INFO] [stdout] 137 | self.selected_item_index = Some((selected_item_index - 1).max(0)) [INFO] [stdout] 138 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `(selected_item_index - 1)` is never smaller than `0` and has therefore no effect [INFO] [stdout] --> src/list.rs:137:49 [INFO] [stdout] | [INFO] [stdout] 137 | self.selected_item_index = Some((selected_item_index - 1).max(0)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(selected_item_index - 1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_min_or_max [INFO] [stdout] = note: `#[warn(clippy::unnecessary_min_or_max)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/list.rs:144:9 [INFO] [stdout] | [INFO] [stdout] 144 | / if let Some(selected_item_index) = self.selected_item_index { [INFO] [stdout] 145 | | if selected_item_index < self.items.len() - 1 { [INFO] [stdout] 146 | | self.selected_item_index = Some(selected_item_index + 1) [INFO] [stdout] 147 | | } [INFO] [stdout] 148 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 144 ~ if let Some(selected_item_index) = self.selected_item_index [INFO] [stdout] 145 ~ && selected_item_index < self.items.len() - 1 { [INFO] [stdout] 146 | self.selected_item_index = Some(selected_item_index + 1) [INFO] [stdout] 147 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/list.rs:177:9 [INFO] [stdout] | [INFO] [stdout] 177 | / if !self.items.is_empty() { [INFO] [stdout] 178 | | if let Some(selected_item_index) = self.selected_item_index { [INFO] [stdout] 179 | | return Some(&self.items[selected_item_index].text); [INFO] [stdout] 180 | | } [INFO] [stdout] 181 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 177 ~ if !self.items.is_empty() [INFO] [stdout] 178 ~ && let Some(selected_item_index) = self.selected_item_index { [INFO] [stdout] 179 | return Some(&self.items[selected_item_index].text); [INFO] [stdout] 180 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/list.rs:186:9 [INFO] [stdout] | [INFO] [stdout] 186 | / if !self.items.is_empty() { [INFO] [stdout] 187 | | if let Some(selected_item_index) = self.selected_item_index { [INFO] [stdout] 188 | | return Some(&self.items[selected_item_index]); [INFO] [stdout] 189 | | } [INFO] [stdout] 190 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 186 ~ if !self.items.is_empty() [INFO] [stdout] 187 ~ && let Some(selected_item_index) = self.selected_item_index { [INFO] [stdout] 188 | return Some(&self.items[selected_item_index]); [INFO] [stdout] 189 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/list.rs:194:9 [INFO] [stdout] | [INFO] [stdout] 194 | / if !self.items.is_empty() { [INFO] [stdout] 195 | | if let Some(selected_item_index) = self.selected_item_index { [INFO] [stdout] 196 | | return Some(&mut self.items[selected_item_index]); [INFO] [stdout] 197 | | } [INFO] [stdout] 198 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 194 ~ if !self.items.is_empty() [INFO] [stdout] 195 ~ && let Some(selected_item_index) = self.selected_item_index { [INFO] [stdout] 196 | return Some(&mut self.items[selected_item_index]); [INFO] [stdout] 197 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/markdown.rs:36:9 [INFO] [stdout] | [INFO] [stdout] 36 | / if let markdown::mdast::Node::Paragraph(paragraph_node) = list_node { [INFO] [stdout] 37 | | if let Some(markdown::mdast::Node::Text(text_node)) = paragraph_node.children.first() { [INFO] [stdout] 38 | | self.boards[board].lists.push(BoardList { [INFO] [stdout] 39 | | name: text_node.value.clone(), [INFO] [stdout] ... | [INFO] [stdout] 43 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 36 ~ if let markdown::mdast::Node::Paragraph(paragraph_node) = list_node [INFO] [stdout] 37 ~ && let Some(markdown::mdast::Node::Text(text_node)) = paragraph_node.children.first() { [INFO] [stdout] 38 | self.boards[board].lists.push(BoardList { [INFO] [stdout] ... [INFO] [stdout] 41 | }); [INFO] [stdout] 42 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/markdown.rs:84:17 [INFO] [stdout] | [INFO] [stdout] 84 | / if has_sub_board { [INFO] [stdout] 85 | | if let markdown::mdast::Node::ListItem(list_item_node) = list_item.clone() { [INFO] [stdout] 86 | | self.boards.push(Board::default()); [INFO] [stdout] ... | [INFO] [stdout] 100 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 84 ~ if has_sub_board [INFO] [stdout] 85 ~ && let markdown::mdast::Node::ListItem(list_item_node) = list_item.clone() { [INFO] [stdout] 86 | self.boards.push(Board::default()); [INFO] [stdout] ... [INFO] [stdout] 98 | self.load_sub_board(&list_item_node, self.boards.len() - 1); [INFO] [stdout] 99 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/markdown.rs:158:21 [INFO] [stdout] | [INFO] [stdout] 158 | / if h.depth == 2 { [INFO] [stdout] 159 | | if let Some(markdown::mdast::Node::Text(name)) = h.children.first() { [INFO] [stdout] 160 | | lists.push(BoardList { [INFO] [stdout] 161 | | name: name.value.clone(), [INFO] [stdout] ... | [INFO] [stdout] 167 | | } [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] 157 ~ markdown::mdast::Node::Heading(h) [INFO] [stdout] 158 ~ if h.depth == 2 => { [INFO] [stdout] 159 | if let Some(markdown::mdast::Node::Text(name)) = h.children.first() { [INFO] [stdout] ... [INFO] [stdout] 166 | } [INFO] [stdout] 167 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/markdown.rs:140:45 [INFO] [stdout] | [INFO] [stdout] 140 | / ... if let markdown::mdast::Node::ListItem(li) = i.clone() { [INFO] [stdout] 141 | | ... if li.children.len() > 1 { [INFO] [stdout] 142 | | ... self.boards.push(Board::default()); [INFO] [stdout] 143 | | ... list.items.iter_mut().last().unwrap().board = [INFO] [stdout] ... | [INFO] [stdout] 147 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 140 ~ if let markdown::mdast::Node::ListItem(li) = i.clone() [INFO] [stdout] 141 ~ && li.children.len() > 1 { [INFO] [stdout] 142 | self.boards.push(Board::default()); [INFO] [stdout] ... [INFO] [stdout] 145 | self.load_sub_board(&li, self.boards.len() - 1); [INFO] [stdout] 146 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/search.rs:40:17 [INFO] [stdout] | [INFO] [stdout] 40 | / if let Some(current_list_index) = board.current_list { [INFO] [stdout] 41 | | if board.get_current_selection_index() [INFO] [stdout] 42 | | < self.view_items_in_list(current_list_index) - 1 [INFO] [stdout] ... | [INFO] [stdout] 46 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 40 ~ if let Some(current_list_index) = board.current_list [INFO] [stdout] 41 ~ && board.get_current_selection_index() [INFO] [stdout] 42 | < self.view_items_in_list(current_list_index) - 1 [INFO] [stdout] 43 | { [INFO] [stdout] 44 | board.move_down() [INFO] [stdout] 45 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/search.rs:117:9 [INFO] [stdout] | [INFO] [stdout] 117 | self.board_view[current_list_index].len() == 0 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.board_view[current_list_index].is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/main.rs:259:36 [INFO] [stdout] | [INFO] [stdout] 259 | ... if self.active_board().filter != "" { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!self.active_board().filter.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 `if` statement can be collapsed [INFO] [stdout] --> src/main.rs:499:9 [INFO] [stdout] | [INFO] [stdout] 499 | / if let Some(current_list) = self.active_board().current_list() { [INFO] [stdout] 500 | | if let Some(current_item) = current_list.current_item() { [INFO] [stdout] 501 | | if let Some(board) = current_item.board { [INFO] [stdout] 502 | | self.boards[board].config = self.config.board_config.clone(); [INFO] [stdout] ... | [INFO] [stdout] 517 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 499 ~ if let Some(current_list) = self.active_board().current_list() [INFO] [stdout] 500 ~ && let Some(current_item) = current_list.current_item() { [INFO] [stdout] 501 | if let Some(board) = current_item.board { [INFO] [stdout] ... [INFO] [stdout] 515 | } [INFO] [stdout] 516 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/main.rs:521:9 [INFO] [stdout] | [INFO] [stdout] 521 | / if let Some(r) = self.board_path.pop_front() { [INFO] [stdout] 522 | | if self.boards[r.board].lists.is_empty() { [INFO] [stdout] 523 | | if let (Some(source_list), Some(source_item)) = (r.source_list, r.source_item) { [INFO] [stdout] 524 | | self.boards[r.source_board].lists[source_list].items[source_item].board = None; [INFO] [stdout] ... | [INFO] [stdout] 527 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 521 ~ if let Some(r) = self.board_path.pop_front() [INFO] [stdout] 522 ~ && self.boards[r.board].lists.is_empty() { [INFO] [stdout] 523 | if let (Some(source_list), Some(source_item)) = (r.source_list, r.source_item) { [INFO] [stdout] 524 | self.boards[r.source_board].lists[source_list].items[source_item].board = None; [INFO] [stdout] 525 | } [INFO] [stdout] 526 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/main.rs:522:13 [INFO] [stdout] | [INFO] [stdout] 522 | / if self.boards[r.board].lists.is_empty() { [INFO] [stdout] 523 | | if let (Some(source_list), Some(source_item)) = (r.source_list, r.source_item) { [INFO] [stdout] 524 | | self.boards[r.source_board].lists[source_list].items[source_item].board = None; [INFO] [stdout] 525 | | } [INFO] [stdout] 526 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 522 ~ if self.boards[r.board].lists.is_empty() [INFO] [stdout] 523 ~ && let (Some(source_list), Some(source_item)) = (r.source_list, r.source_item) { [INFO] [stdout] 524 | self.boards[r.source_board].lists[source_list].items[source_item].board = None; [INFO] [stdout] 525 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/main.rs:282:21 [INFO] [stdout] | [INFO] [stdout] 282 | fn make_context(&mut self) -> Context { [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 282 | fn make_context(&mut self) -> Context<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/board.rs:72:21 [INFO] [stdout] | [INFO] [stdout] 72 | fn render_items(&self, list: usize) -> Vec { [INFO] [stdout] | ^^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 72 | fn render_items(&self, list: usize) -> Vec> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/list.rs:31:9 [INFO] [stdout] | [INFO] [stdout] 31 | &self, [INFO] [stdout] | ^^^^^ the lifetime is elided here [INFO] [stdout] ... [INFO] [stdout] 36 | ) -> ListItem { [INFO] [stdout] | ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 36 | ) -> ListItem<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `repeat().take()` can be written more concisely [INFO] [stdout] --> src/config.rs:116:31 [INFO] [stdout] | [INFO] [stdout] 116 | .flat_map(|c| std::iter::repeat(c).take(2)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `repeat_n()` instead: `std::iter::repeat_n(c, 2)` [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: this `if` statement can be collapsed [INFO] [stdout] --> src/list.rs:135:9 [INFO] [stdout] | [INFO] [stdout] 135 | / if let Some(selected_item_index) = self.selected_item_index { [INFO] [stdout] 136 | | if selected_item_index > 0 { [INFO] [stdout] 137 | | self.selected_item_index = Some((selected_item_index - 1).max(0)) [INFO] [stdout] 138 | | } [INFO] [stdout] 139 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 135 ~ if let Some(selected_item_index) = self.selected_item_index [INFO] [stdout] 136 ~ && selected_item_index > 0 { [INFO] [stdout] 137 | self.selected_item_index = Some((selected_item_index - 1).max(0)) [INFO] [stdout] 138 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `(selected_item_index - 1)` is never smaller than `0` and has therefore no effect [INFO] [stdout] --> src/list.rs:137:49 [INFO] [stdout] | [INFO] [stdout] 137 | self.selected_item_index = Some((selected_item_index - 1).max(0)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(selected_item_index - 1)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_min_or_max [INFO] [stdout] = note: `#[warn(clippy::unnecessary_min_or_max)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/list.rs:144:9 [INFO] [stdout] | [INFO] [stdout] 144 | / if let Some(selected_item_index) = self.selected_item_index { [INFO] [stdout] 145 | | if selected_item_index < self.items.len() - 1 { [INFO] [stdout] 146 | | self.selected_item_index = Some(selected_item_index + 1) [INFO] [stdout] 147 | | } [INFO] [stdout] 148 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 144 ~ if let Some(selected_item_index) = self.selected_item_index [INFO] [stdout] 145 ~ && selected_item_index < self.items.len() - 1 { [INFO] [stdout] 146 | self.selected_item_index = Some(selected_item_index + 1) [INFO] [stdout] 147 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/list.rs:177:9 [INFO] [stdout] | [INFO] [stdout] 177 | / if !self.items.is_empty() { [INFO] [stdout] 178 | | if let Some(selected_item_index) = self.selected_item_index { [INFO] [stdout] 179 | | return Some(&self.items[selected_item_index].text); [INFO] [stdout] 180 | | } [INFO] [stdout] 181 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 177 ~ if !self.items.is_empty() [INFO] [stdout] 178 ~ && let Some(selected_item_index) = self.selected_item_index { [INFO] [stdout] 179 | return Some(&self.items[selected_item_index].text); [INFO] [stdout] 180 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/list.rs:186:9 [INFO] [stdout] | [INFO] [stdout] 186 | / if !self.items.is_empty() { [INFO] [stdout] 187 | | if let Some(selected_item_index) = self.selected_item_index { [INFO] [stdout] 188 | | return Some(&self.items[selected_item_index]); [INFO] [stdout] 189 | | } [INFO] [stdout] 190 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 186 ~ if !self.items.is_empty() [INFO] [stdout] 187 ~ && let Some(selected_item_index) = self.selected_item_index { [INFO] [stdout] 188 | return Some(&self.items[selected_item_index]); [INFO] [stdout] 189 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/list.rs:194:9 [INFO] [stdout] | [INFO] [stdout] 194 | / if !self.items.is_empty() { [INFO] [stdout] 195 | | if let Some(selected_item_index) = self.selected_item_index { [INFO] [stdout] 196 | | return Some(&mut self.items[selected_item_index]); [INFO] [stdout] 197 | | } [INFO] [stdout] 198 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 194 ~ if !self.items.is_empty() [INFO] [stdout] 195 ~ && let Some(selected_item_index) = self.selected_item_index { [INFO] [stdout] 196 | return Some(&mut self.items[selected_item_index]); [INFO] [stdout] 197 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/markdown.rs:36:9 [INFO] [stdout] | [INFO] [stdout] 36 | / if let markdown::mdast::Node::Paragraph(paragraph_node) = list_node { [INFO] [stdout] 37 | | if let Some(markdown::mdast::Node::Text(text_node)) = paragraph_node.children.first() { [INFO] [stdout] 38 | | self.boards[board].lists.push(BoardList { [INFO] [stdout] 39 | | name: text_node.value.clone(), [INFO] [stdout] ... | [INFO] [stdout] 43 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 36 ~ if let markdown::mdast::Node::Paragraph(paragraph_node) = list_node [INFO] [stdout] 37 ~ && let Some(markdown::mdast::Node::Text(text_node)) = paragraph_node.children.first() { [INFO] [stdout] 38 | self.boards[board].lists.push(BoardList { [INFO] [stdout] ... [INFO] [stdout] 41 | }); [INFO] [stdout] 42 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/markdown.rs:84:17 [INFO] [stdout] | [INFO] [stdout] 84 | / if has_sub_board { [INFO] [stdout] 85 | | if let markdown::mdast::Node::ListItem(list_item_node) = list_item.clone() { [INFO] [stdout] 86 | | self.boards.push(Board::default()); [INFO] [stdout] ... | [INFO] [stdout] 100 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 84 ~ if has_sub_board [INFO] [stdout] 85 ~ && let markdown::mdast::Node::ListItem(list_item_node) = list_item.clone() { [INFO] [stdout] 86 | self.boards.push(Board::default()); [INFO] [stdout] ... [INFO] [stdout] 98 | self.load_sub_board(&list_item_node, self.boards.len() - 1); [INFO] [stdout] 99 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/markdown.rs:158:21 [INFO] [stdout] | [INFO] [stdout] 158 | / if h.depth == 2 { [INFO] [stdout] 159 | | if let Some(markdown::mdast::Node::Text(name)) = h.children.first() { [INFO] [stdout] 160 | | lists.push(BoardList { [INFO] [stdout] 161 | | name: name.value.clone(), [INFO] [stdout] ... | [INFO] [stdout] 167 | | } [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] 157 ~ markdown::mdast::Node::Heading(h) [INFO] [stdout] 158 ~ if h.depth == 2 => { [INFO] [stdout] 159 | if let Some(markdown::mdast::Node::Text(name)) = h.children.first() { [INFO] [stdout] ... [INFO] [stdout] 166 | } [INFO] [stdout] 167 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/markdown.rs:140:45 [INFO] [stdout] | [INFO] [stdout] 140 | / ... if let markdown::mdast::Node::ListItem(li) = i.clone() { [INFO] [stdout] 141 | | ... if li.children.len() > 1 { [INFO] [stdout] 142 | | ... self.boards.push(Board::default()); [INFO] [stdout] 143 | | ... list.items.iter_mut().last().unwrap().board = [INFO] [stdout] ... | [INFO] [stdout] 147 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 140 ~ if let markdown::mdast::Node::ListItem(li) = i.clone() [INFO] [stdout] 141 ~ && li.children.len() > 1 { [INFO] [stdout] 142 | self.boards.push(Board::default()); [INFO] [stdout] ... [INFO] [stdout] 145 | self.load_sub_board(&li, self.boards.len() - 1); [INFO] [stdout] 146 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/search.rs:40:17 [INFO] [stdout] | [INFO] [stdout] 40 | / if let Some(current_list_index) = board.current_list { [INFO] [stdout] 41 | | if board.get_current_selection_index() [INFO] [stdout] 42 | | < self.view_items_in_list(current_list_index) - 1 [INFO] [stdout] ... | [INFO] [stdout] 46 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 40 ~ if let Some(current_list_index) = board.current_list [INFO] [stdout] 41 ~ && board.get_current_selection_index() [INFO] [stdout] 42 | < self.view_items_in_list(current_list_index) - 1 [INFO] [stdout] 43 | { [INFO] [stdout] 44 | board.move_down() [INFO] [stdout] 45 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/search.rs:117:9 [INFO] [stdout] | [INFO] [stdout] 117 | self.board_view[current_list_index].len() == 0 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.board_view[current_list_index].is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/main.rs:259:36 [INFO] [stdout] | [INFO] [stdout] 259 | ... if self.active_board().filter != "" { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!self.active_board().filter.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 `if` statement can be collapsed [INFO] [stdout] --> src/main.rs:499:9 [INFO] [stdout] | [INFO] [stdout] 499 | / if let Some(current_list) = self.active_board().current_list() { [INFO] [stdout] 500 | | if let Some(current_item) = current_list.current_item() { [INFO] [stdout] 501 | | if let Some(board) = current_item.board { [INFO] [stdout] 502 | | self.boards[board].config = self.config.board_config.clone(); [INFO] [stdout] ... | [INFO] [stdout] 517 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 499 ~ if let Some(current_list) = self.active_board().current_list() [INFO] [stdout] 500 ~ && let Some(current_item) = current_list.current_item() { [INFO] [stdout] 501 | if let Some(board) = current_item.board { [INFO] [stdout] ... [INFO] [stdout] 515 | } [INFO] [stdout] 516 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/main.rs:521:9 [INFO] [stdout] | [INFO] [stdout] 521 | / if let Some(r) = self.board_path.pop_front() { [INFO] [stdout] 522 | | if self.boards[r.board].lists.is_empty() { [INFO] [stdout] 523 | | if let (Some(source_list), Some(source_item)) = (r.source_list, r.source_item) { [INFO] [stdout] 524 | | self.boards[r.source_board].lists[source_list].items[source_item].board = None; [INFO] [stdout] ... | [INFO] [stdout] 527 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 521 ~ if let Some(r) = self.board_path.pop_front() [INFO] [stdout] 522 ~ && self.boards[r.board].lists.is_empty() { [INFO] [stdout] 523 | if let (Some(source_list), Some(source_item)) = (r.source_list, r.source_item) { [INFO] [stdout] 524 | self.boards[r.source_board].lists[source_list].items[source_item].board = None; [INFO] [stdout] 525 | } [INFO] [stdout] 526 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/main.rs:522:13 [INFO] [stdout] | [INFO] [stdout] 522 | / if self.boards[r.board].lists.is_empty() { [INFO] [stdout] 523 | | if let (Some(source_list), Some(source_item)) = (r.source_list, r.source_item) { [INFO] [stdout] 524 | | self.boards[r.source_board].lists[source_list].items[source_item].board = None; [INFO] [stdout] 525 | | } [INFO] [stdout] 526 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 522 ~ if self.boards[r.board].lists.is_empty() [INFO] [stdout] 523 ~ && let (Some(source_list), Some(source_item)) = (r.source_list, r.source_item) { [INFO] [stdout] 524 | self.boards[r.source_board].lists[source_list].items[source_item].board = None; [INFO] [stdout] 525 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/main.rs:282:21 [INFO] [stdout] | [INFO] [stdout] 282 | fn make_context(&mut self) -> Context { [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 282 | fn make_context(&mut self) -> Context<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/board.rs:72:21 [INFO] [stdout] | [INFO] [stdout] 72 | fn render_items(&self, list: usize) -> Vec { [INFO] [stdout] | ^^^^^ ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 72 | fn render_items(&self, list: usize) -> Vec> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/list.rs:31:9 [INFO] [stdout] | [INFO] [stdout] 31 | &self, [INFO] [stdout] | ^^^^^ the lifetime is elided here [INFO] [stdout] ... [INFO] [stdout] 36 | ) -> ListItem { [INFO] [stdout] | ^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 36 | ) -> ListItem<'_> { [INFO] [stdout] | ++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 20.35s [INFO] running `Command { std: "docker" "inspect" "808c64d4f0fe1a23cd69f7959ff7d0e38716ca7379c9dc47a046b431cfb2f940", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "808c64d4f0fe1a23cd69f7959ff7d0e38716ca7379c9dc47a046b431cfb2f940", kill_on_drop: false }` [INFO] [stdout] 808c64d4f0fe1a23cd69f7959ff7d0e38716ca7379c9dc47a046b431cfb2f940