[INFO] updating cached repository lotabout/skim [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/lotabout/skim [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/lotabout/skim" "work/ex/clippy-test-run/sources/stable/gh/lotabout/skim"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/lotabout/skim'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/lotabout/skim" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/lotabout/skim"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/lotabout/skim'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 9b8f32fea0fd14949aa19fa33fe06dff22fbe964 [INFO] sha for GitHub repo lotabout/skim: 9b8f32fea0fd14949aa19fa33fe06dff22fbe964 [INFO] validating manifest of lotabout/skim on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of lotabout/skim on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing lotabout/skim [INFO] finished frobbing lotabout/skim [INFO] frobbed toml for lotabout/skim written to work/ex/clippy-test-run/sources/stable/gh/lotabout/skim/Cargo.toml [INFO] started frobbing lotabout/skim [INFO] finished frobbing lotabout/skim [INFO] frobbed toml for lotabout/skim written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/lotabout/skim/Cargo.toml [INFO] crate lotabout/skim has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting lotabout/skim against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/lotabout/skim:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] bf402ca85fc99cda345bc473da76eb694e962e321a7fa63e5d4411a79021deec [INFO] running `"docker" "start" "-a" "bf402ca85fc99cda345bc473da76eb694e962e321a7fa63e5d4411a79021deec"` [INFO] [stderr] Checking atty v0.2.3 [INFO] [stderr] Checking time v0.1.38 [INFO] [stderr] Checking thread_local v0.3.4 [INFO] [stderr] Checking nix v0.11.0 [INFO] [stderr] Checking clap v2.28.0 [INFO] [stderr] Checking regex v0.2.3 [INFO] [stderr] Checking env_logger v0.4.3 [INFO] [stderr] Checking skim v0.5.2 (/opt/crater/workdir) [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/curses.rs:198:5 [INFO] [stderr] | [INFO] [stderr] 198 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::deprecated_cfg_attr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/curses.rs:668:5 [INFO] [stderr] | [INFO] [stderr] 668 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/curses.rs:816:1 [INFO] [stderr] | [INFO] [stderr] 816 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/curses.rs:198:5 [INFO] [stderr] | [INFO] [stderr] 198 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::deprecated_cfg_attr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/curses.rs:835:1 [INFO] [stderr] | [INFO] [stderr] 835 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/event.rs:83:1 [INFO] [stderr] | [INFO] [stderr] 83 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/curses.rs:668:5 [INFO] [stderr] | [INFO] [stderr] 668 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/curses.rs:816:1 [INFO] [stderr] | [INFO] [stderr] 816 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/input.rs:22:13 [INFO] [stderr] | [INFO] [stderr] 22 | tx_input: tx_input, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `tx_input` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/curses.rs:835:1 [INFO] [stderr] | [INFO] [stderr] 835 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/input.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | keyboard: keyboard, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `keyboard` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/event.rs:83:1 [INFO] [stderr] | [INFO] [stderr] 83 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/input.rs:385:1 [INFO] [stderr] | [INFO] [stderr] 385 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/input.rs:22:13 [INFO] [stderr] | [INFO] [stderr] 22 | tx_input: tx_input, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `tx_input` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/input.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | keyboard: keyboard, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `keyboard` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/input.rs:418:1 [INFO] [stderr] | [INFO] [stderr] 418 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/item.rs:194:13 [INFO] [stderr] | [INFO] [stderr] --> src/input.rs:385:1 [INFO] [stderr] 194 | item: item, [INFO] [stderr] | [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `item` [INFO] [stderr] 385 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/matcher.rs:48:13 [INFO] [stderr] | [INFO] [stderr] 48 | tx_result: tx_result, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tx_result` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/input.rs:418:1 [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] 418 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/item.rs:194:13 [INFO] [stderr] | [INFO] [stderr] 194 | item: item, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `item` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/matcher.rs:48:13 [INFO] [stderr] | [INFO] [stderr] 48 | tx_result: tx_result, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tx_result` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/matcher.rs:542:21 [INFO] [stderr] | [INFO] [stderr] 542 | AndEngine { engines: engines } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `engines` [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model.rs:75:13 [INFO] [stderr] | [INFO] [stderr] 75 | rx_cmd: rx_cmd, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `rx_cmd` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/matcher.rs:542:21 [INFO] [stderr] | [INFO] [stderr] 542 | AndEngine { engines: engines } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `engines` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model.rs:75:13 [INFO] [stderr] | [INFO] [stderr] 75 | rx_cmd: rx_cmd, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `rx_cmd` [INFO] [stderr] | [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model.rs:715:17 [INFO] [stderr] | [INFO] [stderr] 715 | lines: lines, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `lines` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/model.rs:715:17 [INFO] [stderr] | [INFO] [stderr] 715 | lines: lines, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `lines` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/reader.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | rx_cmd: rx_cmd, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `rx_cmd` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/reader.rs:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | tx_item: tx_item, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `tx_item` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/score.rs:92:25 [INFO] [stderr] | [INFO] [stderr] 92 | idx: idx, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `idx` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/score.rs:93:25 [INFO] [stderr] | [INFO] [stderr] 93 | score: score, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `score` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/reader.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | rx_cmd: rx_cmd, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `rx_cmd` [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/reader.rs:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | tx_item: tx_item, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `tx_item` [INFO] [stderr] | [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/score.rs:146:21 [INFO] [stderr] | [INFO] [stderr] 146 | adj_num: adj_num, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `adj_num` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/score.rs:152:21 [INFO] [stderr] | [INFO] [stderr] 152 | back_ref: back_ref, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `back_ref` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/score.rs:153:21 [INFO] [stderr] | [INFO] [stderr] 153 | adj_num: adj_num, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `adj_num` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/sender.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | rx_sender: rx_sender, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `rx_sender` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/sender.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | tx_item: tx_item, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `tx_item` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/score.rs:92:25 [INFO] [stderr] | [INFO] [stderr] 92 | idx: idx, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `idx` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/score.rs:93:25 [INFO] [stderr] | [INFO] [stderr] 93 | score: score, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `score` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/score.rs:146:21 [INFO] [stderr] | [INFO] [stderr] 146 | adj_num: adj_num, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `adj_num` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/score.rs:152:21 [INFO] [stderr] | [INFO] [stderr] 152 | back_ref: back_ref, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `back_ref` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/score.rs:153:21 [INFO] [stderr] | [INFO] [stderr] 153 | adj_num: adj_num, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `adj_num` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/sender.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | rx_sender: rx_sender, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `rx_sender` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/sender.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | tx_item: tx_item, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `tx_item` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/model.rs:25:23 [INFO] [stderr] | [INFO] [stderr] 25 | const DELIMITER_STR: &'static str = r"[\t\n ]+"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/model.rs:452:26 [INFO] [stderr] | [INFO] [stderr] 452 | (true, _) => ((cursor_y, self.query_end_x)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/query.rs:156:13 [INFO] [stderr] | [INFO] [stderr] 156 | return (qend_y, qend_x); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(qend_y, qend_x)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/reader.rs:21:23 [INFO] [stderr] | [INFO] [stderr] 21 | const DELIMITER_STR: &'static str = r"[\t\n ]+"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/reader.rs:301:17 [INFO] [stderr] | [INFO] [stderr] 301 | / if index.trailing_zeros() > 5 { [INFO] [stderr] 302 | | if stopped.load(Ordering::SeqCst) { [INFO] [stderr] 303 | | break; [INFO] [stderr] 304 | | } [INFO] [stderr] 305 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 301 | if index.trailing_zeros() > 5 && stopped.load(Ordering::SeqCst) { [INFO] [stderr] 302 | break; [INFO] [stderr] 303 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded `()` [INFO] [stderr] --> src/previewer.rs:43:20 [INFO] [stderr] | [INFO] [stderr] 43 | return (); [INFO] [stderr] | ^^ help: remove the `()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded `()` [INFO] [stderr] --> src/previewer.rs:49:24 [INFO] [stderr] | [INFO] [stderr] 49 | return (); [INFO] [stderr] | ^^ help: remove the `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded `()` [INFO] [stderr] --> src/previewer.rs:97:16 [INFO] [stderr] | [INFO] [stderr] 97 | return (); [INFO] [stderr] | ^^ help: remove the `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/model.rs:25:23 [INFO] [stderr] | [INFO] [stderr] 25 | const DELIMITER_STR: &'static str = r"[\t\n ]+"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/model.rs:452:26 [INFO] [stderr] | [INFO] [stderr] 452 | (true, _) => ((cursor_y, self.query_end_x)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/query.rs:156:13 [INFO] [stderr] | [INFO] [stderr] 156 | return (qend_y, qend_x); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(qend_y, qend_x)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/reader.rs:21:23 [INFO] [stderr] | [INFO] [stderr] 21 | const DELIMITER_STR: &'static str = r"[\t\n ]+"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/reader.rs:301:17 [INFO] [stderr] | [INFO] [stderr] 301 | / if index.trailing_zeros() > 5 { [INFO] [stderr] 302 | | if stopped.load(Ordering::SeqCst) { [INFO] [stderr] 303 | | break; [INFO] [stderr] 304 | | } [INFO] [stderr] 305 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 301 | if index.trailing_zeros() > 5 && stopped.load(Ordering::SeqCst) { [INFO] [stderr] 302 | break; [INFO] [stderr] 303 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded `()` [INFO] [stderr] --> src/previewer.rs:43:20 [INFO] [stderr] | [INFO] [stderr] 43 | return (); [INFO] [stderr] | ^^ help: remove the `()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded `()` [INFO] [stderr] --> src/previewer.rs:49:24 [INFO] [stderr] | [INFO] [stderr] 49 | return (); [INFO] [stderr] | ^^ help: remove the `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded `()` [INFO] [stderr] --> src/previewer.rs:97:16 [INFO] [stderr] | [INFO] [stderr] 97 | return (); [INFO] [stderr] | ^^ help: remove the `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ansi.rs:56:5 [INFO] [stderr] | [INFO] [stderr] 56 | / pub fn iter<'a>(&'a self) -> AnsiStringIterator<'a> { [INFO] [stderr] 57 | | AnsiStringIterator { [INFO] [stderr] 58 | | ansi_states: &self.ansi_states, [INFO] [stderr] 59 | | it_text: Box::new(self.stripped.chars().enumerate()), [INFO] [stderr] 60 | | pk_ansi_states: self.ansi_states.iter().enumerate().peekable(), [INFO] [stderr] 61 | | } [INFO] [stderr] 62 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/ansi.rs:65:9 [INFO] [stderr] | [INFO] [stderr] 65 | self.ansi_states.len() != 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.ansi_states.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/ansi.rs:105:48 [INFO] [stderr] | [INFO] [stderr] 105 | return Some((ch, &self.ansi_states[start..end + 1])); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use: `start..=end` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/ansi.rs:123:17 [INFO] [stderr] | [INFO] [stderr] 123 | self.last_attr.map(|attr| { [INFO] [stderr] | _________________^ [INFO] [stderr] | |_________________| [INFO] [stderr] | || [INFO] [stderr] 124 | || colors.push((0, attr)); [INFO] [stderr] 125 | || }); [INFO] [stderr] | ||__________________^- help: try this: `if let Some(attr) = self.last_attr { colors.push((0, attr)); }` [INFO] [stderr] | |___________________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/ansi.rs:139:13 [INFO] [stderr] | [INFO] [stderr] 139 | attr.map(|attr| { [INFO] [stderr] | _____________^ [INFO] [stderr] | |_____________| [INFO] [stderr] | || [INFO] [stderr] 140 | || colors.push((num_chars, attr)); [INFO] [stderr] 141 | || }); [INFO] [stderr] | ||______________^- help: try this: `if let Some(attr) = attr { colors.push((num_chars, attr)); }` [INFO] [stderr] | |_______________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/curses.rs:64:14 [INFO] [stderr] | [INFO] [stderr] 64 | .expect(format!("curses:register_ansi: failed to get ansi: {}", &ansi).as_str()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("curses:register_ansi: failed to get ansi: {}", &ansi))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/curses.rs:350:9 [INFO] [stderr] | [INFO] [stderr] 350 | resource_map.get(&key).map(|s| self.stdout_buffer.push_str(s)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(s) = resource_map.get(&key) { self.stdout_buffer.push_str(s) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/field.rs:90:51 [INFO] [stderr] | [INFO] [stderr] 90 | if length == 0 || left > right || right <= 0 || left > length { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::absurd_extreme_comparisons)] on by default [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using right == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/input.rs:246:26 [INFO] [stderr] | [INFO] [stderr] 246 | .expect(format!("input:get_escaped_key: failed to parse row: {}", row).as_str()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("input:get_escaped_key: failed to parse row: {}", row))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/input.rs:248:26 [INFO] [stderr] | [INFO] [stderr] 248 | .expect(format!("input:get_escaped_key: failed to parse col: {}", col).as_str()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("input:get_escaped_key: failed to parse col: {}", col))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/matcher.rs:161:21 [INFO] [stderr] | [INFO] [stderr] 161 | matcher_engine.as_ref().map(|mat| { [INFO] [stderr] | _____________________^ [INFO] [stderr] | |_____________________| [INFO] [stderr] | || [INFO] [stderr] 162 | || let matched_items: MatchedItemGroup = [INFO] [stderr] 163 | || items.into_iter().filter_map(|item| mat.match_item(item)).collect(); [INFO] [stderr] 164 | || let _ = self.tx_result.send((Event::EvModelNewItem, Box::new(matched_items))); [INFO] [stderr] 165 | || }); [INFO] [stderr] | ||______________________^- help: try this: `if let Some(mat) = matcher_engine.as_ref() { ... }` [INFO] [stderr] | |_______________________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/matcher.rs:271:9 [INFO] [stderr] | [INFO] [stderr] 271 | / if matched_result.is_none() { [INFO] [stderr] 272 | | return None; [INFO] [stderr] 273 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `matched_result?;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::question_mark)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/matcher.rs:406:9 [INFO] [stderr] | [INFO] [stderr] 406 | / if result_range.is_none() { [INFO] [stderr] 407 | | return None; [INFO] [stderr] 408 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `result_range?;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/matcher.rs:557:35 [INFO] [stderr] | [INFO] [stderr] 557 | ranges.extend((start..end).into_iter()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `(start..end)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/matcher.rs:581:13 [INFO] [stderr] | [INFO] [stderr] 581 | / if result.is_none() { [INFO] [stderr] 582 | | return None; [INFO] [stderr] 583 | | } else { [INFO] [stderr] 584 | | results.push(result.unwrap()); [INFO] [stderr] 585 | | } [INFO] [stderr] | |_____________^ help: replace_it_with: `result?;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/model.rs:420:22 [INFO] [stderr] | [INFO] [stderr] 420 | .expect(format!("model:draw_items: failed to get item at {}", i).as_str()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("model:draw_items: failed to get item at {}", i))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: Calling `subsec_micros()` is more concise than this calculation [INFO] [stderr] --> src/model.rs:474:58 [INFO] [stderr] | [INFO] [stderr] 474 | let mills = (time.as_secs() * 1000) as u32 + time.subsec_nanos() / 1000 / 1000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `time.subsec_micros()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::duration_subsec)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duration_subsec [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/model.rs:532:34 [INFO] [stderr] | [INFO] [stderr] 532 | let (has_headers, yh) = (self.headers.len() > 0, self.get_header_height( y, maxy)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.headers.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/model.rs:546:24 [INFO] [stderr] | [INFO] [stderr] 546 | let nyh = ((yh as i64)+(direction*(i as i64))) as u16; [INFO] [stderr] | ^^^^^^^^^^^ help: try: `i64::from(yh)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/model.rs:704:18 [INFO] [stderr] | [INFO] [stderr] 704 | .expect(format!("model:draw_items: failed to get item at {}", current_idx).as_str()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("model:draw_items: failed to get item at {}", current_idx))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/model.rs:805:14 [INFO] [stderr] | [INFO] [stderr] 805 | .expect(format!("model:act_toggle: failed to get item {}", cursor).as_str()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("model:act_toggle: failed to get item {}", cursor))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/model.rs:807:9 [INFO] [stderr] | [INFO] [stderr] 807 | / if !self.selected.contains_key(&index) { [INFO] [stderr] 808 | | self.selected.insert(index, Arc::clone(current_item)); [INFO] [stderr] 809 | | } else { [INFO] [stderr] 810 | | self.selected.remove(&index); [INFO] [stderr] 811 | | } [INFO] [stderr] | |_________^ help: consider using: `self.selected.entry(index)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/model.rs:817:13 [INFO] [stderr] | [INFO] [stderr] 817 | / if !self.selected.contains_key(&index) { [INFO] [stderr] 818 | | self.selected.insert(index, Arc::clone(current_item)); [INFO] [stderr] 819 | | } else { [INFO] [stderr] 820 | | self.selected.remove(&index); [INFO] [stderr] 821 | | } [INFO] [stderr] | |_____________^ help: consider using: `self.selected.entry(index)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/model.rs:842:18 [INFO] [stderr] | [INFO] [stderr] 842 | .expect(format!("model:act_output: failed to get item {}", cursor).as_str()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("model:act_output: failed to get item {}", cursor))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/query.rs:209:9 [INFO] [stderr] | [INFO] [stderr] 209 | before.pop().map(|ch| { [INFO] [stderr] | _________^ [INFO] [stderr] | |_________| [INFO] [stderr] | || [INFO] [stderr] 210 | || after.push(ch); [INFO] [stderr] 211 | || }); [INFO] [stderr] | ||__________^- help: try this: `if let Some(ch) = before.pop() { after.push(ch); }` [INFO] [stderr] | |___________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/query.rs:216:9 [INFO] [stderr] | [INFO] [stderr] 216 | after.pop().map(|ch| { [INFO] [stderr] | _________^ [INFO] [stderr] | |_________| [INFO] [stderr] | || [INFO] [stderr] 217 | || before.push(ch); [INFO] [stderr] 218 | || }); [INFO] [stderr] | ||__________^- help: try this: `if let Some(ch) = after.pop() { before.push(ch); }` [INFO] [stderr] | |___________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/query.rs:281:13 [INFO] [stderr] | [INFO] [stderr] 281 | before.pop().map(|ch| { [INFO] [stderr] | _____________^ [INFO] [stderr] | |_____________| [INFO] [stderr] | || [INFO] [stderr] 282 | || after.push(ch); [INFO] [stderr] 283 | || }); [INFO] [stderr] | ||______________^- help: try this: `if let Some(ch) = before.pop() { after.push(ch); }` [INFO] [stderr] | |_______________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/query.rs:288:13 [INFO] [stderr] | [INFO] [stderr] 288 | before.pop().map(|ch| { [INFO] [stderr] | _____________^ [INFO] [stderr] | |_____________| [INFO] [stderr] | || [INFO] [stderr] 289 | || after.push(ch); [INFO] [stderr] 290 | || }); [INFO] [stderr] | ||______________^- help: try this: `if let Some(ch) = before.pop() { after.push(ch); }` [INFO] [stderr] | |_______________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/query.rs:299:13 [INFO] [stderr] | [INFO] [stderr] 299 | after.pop().map(|ch| { [INFO] [stderr] | _____________^ [INFO] [stderr] | |_____________| [INFO] [stderr] | || [INFO] [stderr] 300 | || before.push(ch); [INFO] [stderr] 301 | || }); [INFO] [stderr] | ||______________^- help: try this: `if let Some(ch) = after.pop() { before.push(ch); }` [INFO] [stderr] | |_______________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/query.rs:305:13 [INFO] [stderr] | [INFO] [stderr] 305 | after.pop().map(|ch| { [INFO] [stderr] | _____________^ [INFO] [stderr] | |_____________| [INFO] [stderr] | || [INFO] [stderr] 306 | || before.push(ch); [INFO] [stderr] 307 | || }); [INFO] [stderr] | ||______________^- help: try this: `if let Some(ch) = after.pop() { before.push(ch); }` [INFO] [stderr] | |_______________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/query.rs:314:13 [INFO] [stderr] | [INFO] [stderr] 314 | before.pop().map(|ch| { [INFO] [stderr] | _____________^ [INFO] [stderr] | |_____________| [INFO] [stderr] | || [INFO] [stderr] 315 | || after.push(ch); [INFO] [stderr] 316 | || }); [INFO] [stderr] | ||______________^- help: try this: `if let Some(ch) = before.pop() { after.push(ch); }` [INFO] [stderr] | |_______________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/query.rs:323:13 [INFO] [stderr] | [INFO] [stderr] 323 | after.pop().map(|ch| { [INFO] [stderr] | _____________^ [INFO] [stderr] | |_____________| [INFO] [stderr] | || [INFO] [stderr] 324 | || before.push(ch); [INFO] [stderr] 325 | || }); [INFO] [stderr] | ||______________^- help: try this: `if let Some(ch) = after.pop() { before.push(ch); }` [INFO] [stderr] | |_______________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/reader.rs:185:37 [INFO] [stderr] | [INFO] [stderr] 185 | fn get_command_output(cmd: &str) -> Result<(Option, Box), Box> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/reader.rs:186:35 [INFO] [stderr] | [INFO] [stderr] 186 | let shell = env::var("SHELL").unwrap_or("sh".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| "sh".to_string())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/reader.rs:230:15 [INFO] [stderr] | [INFO] [stderr] 230 | while !command.is_none() && !stopped_clone.load(Ordering::Relaxed) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `command.is_some() && !stopped_clone.load(Ordering::Relaxed)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/reader.rs:235:9 [INFO] [stderr] | [INFO] [stderr] 235 | command.map(|mut x| { [INFO] [stderr] | _________^ [INFO] [stderr] | |_________| [INFO] [stderr] | || [INFO] [stderr] 236 | || let _ = x.kill(); [INFO] [stderr] 237 | || let _ = x.wait(); [INFO] [stderr] 238 | || }); [INFO] [stderr] | ||__________^- help: try this: `if let Some(mut x) = command { ... }` [INFO] [stderr] | |___________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/score.rs:181:13 [INFO] [stderr] | [INFO] [stderr] 181 | / if ret.is_none() { [INFO] [stderr] 182 | | return None; [INFO] [stderr] 183 | | } [INFO] [stderr] | |_____________^ help: replace_it_with: `ret?;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/score.rs:199:5 [INFO] [stderr] | [INFO] [stderr] 199 | / if start_pos.is_none() { [INFO] [stderr] 200 | | return None; [INFO] [stderr] 201 | | }; [INFO] [stderr] | |_____^ help: replace_it_with: `start_pos?;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/score.rs:213:5 [INFO] [stderr] | [INFO] [stderr] 213 | / if last_pos.is_none() { [INFO] [stderr] 214 | | return None; [INFO] [stderr] 215 | | }; [INFO] [stderr] | |_____^ help: replace_it_with: `last_pos?;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/previewer.rs:27:12 [INFO] [stderr] | [INFO] [stderr] 27 | if self.stopped.load(Ordering::Relaxed) == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!self.stopped.load(Ordering::Relaxed)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/previewer.rs:59:39 [INFO] [stderr] | [INFO] [stderr] 59 | let shell = env::var("SHELL").unwrap_or("sh".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| "sh".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/lib.rs:74:24 [INFO] [stderr] | [INFO] [stderr] 74 | if let Err(_) = tx_input_clone.send((EvActRedraw, Box::new(true))) { [INFO] [stderr] | _________________- ^^^^^^ [INFO] [stderr] 75 | | break; [INFO] [stderr] 76 | | } [INFO] [stderr] | |_________________- help: try this: `if tx_input_clone.send((EvActRedraw, Box::new(true))).is_err()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/lib.rs:308:35 [INFO] [stderr] | [INFO] [stderr] 308 | let (tx, rx): (Sender>>, Receiver>>) = channel(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `skim`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/ansi.rs:56:5 [INFO] [stderr] | [INFO] [stderr] 56 | / pub fn iter<'a>(&'a self) -> AnsiStringIterator<'a> { [INFO] [stderr] 57 | | AnsiStringIterator { [INFO] [stderr] 58 | | ansi_states: &self.ansi_states, [INFO] [stderr] 59 | | it_text: Box::new(self.stripped.chars().enumerate()), [INFO] [stderr] 60 | | pk_ansi_states: self.ansi_states.iter().enumerate().peekable(), [INFO] [stderr] 61 | | } [INFO] [stderr] 62 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/ansi.rs:65:9 [INFO] [stderr] | [INFO] [stderr] 65 | self.ansi_states.len() != 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.ansi_states.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/ansi.rs:105:48 [INFO] [stderr] | [INFO] [stderr] 105 | return Some((ch, &self.ansi_states[start..end + 1])); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: use: `start..=end` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/ansi.rs:123:17 [INFO] [stderr] | [INFO] [stderr] 123 | self.last_attr.map(|attr| { [INFO] [stderr] | _________________^ [INFO] [stderr] | |_________________| [INFO] [stderr] | || [INFO] [stderr] 124 | || colors.push((0, attr)); [INFO] [stderr] 125 | || }); [INFO] [stderr] | ||__________________^- help: try this: `if let Some(attr) = self.last_attr { colors.push((0, attr)); }` [INFO] [stderr] | |___________________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/ansi.rs:139:13 [INFO] [stderr] | [INFO] [stderr] 139 | attr.map(|attr| { [INFO] [stderr] | _____________^ [INFO] [stderr] | |_____________| [INFO] [stderr] | || [INFO] [stderr] 140 | || colors.push((num_chars, attr)); [INFO] [stderr] 141 | || }); [INFO] [stderr] | ||______________^- help: try this: `if let Some(attr) = attr { colors.push((num_chars, attr)); }` [INFO] [stderr] | |_______________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/curses.rs:64:14 [INFO] [stderr] | [INFO] [stderr] 64 | .expect(format!("curses:register_ansi: failed to get ansi: {}", &ansi).as_str()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("curses:register_ansi: failed to get ansi: {}", &ansi))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/curses.rs:350:9 [INFO] [stderr] | [INFO] [stderr] 350 | resource_map.get(&key).map(|s| self.stdout_buffer.push_str(s)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^- [INFO] [stderr] | | [INFO] [stderr] | help: try this: `if let Some(s) = resource_map.get(&key) { self.stdout_buffer.push_str(s) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/field.rs:90:51 [INFO] [stderr] | [INFO] [stderr] 90 | if length == 0 || left > right || right <= 0 || left > length { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::absurd_extreme_comparisons)] on by default [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using right == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 44 [INFO] [stderr] --> src/field.rs:195:5 [INFO] [stderr] | [INFO] [stderr] 195 | / fn test_parse_field_range() { [INFO] [stderr] 196 | | assert_eq!(Single(0).to_index_pair(10), None); [INFO] [stderr] 197 | | assert_eq!(Single(1).to_index_pair(10), Some((0, 1))); [INFO] [stderr] 198 | | assert_eq!(Single(10).to_index_pair(10), Some((9, 10))); [INFO] [stderr] ... | [INFO] [stderr] 241 | | assert_eq!(Both(-11, -11).to_index_pair(10), None); [INFO] [stderr] 242 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/field.rs:247:29 [INFO] [stderr] | [INFO] [stderr] 247 | let re = Regex::new(",").unwrap(); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivial_regex)] on by default [INFO] [stderr] = help: consider using `str::contains` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/field.rs:250:64 [INFO] [stderr] | [INFO] [stderr] 250 | super::parse_transform_fields(&re, &"A,B,C,D,E,F", &vec![Single(2), Single(4), Single(-1), Single(-7)]), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[Single(2), Single(4), Single(-1), Single(-7)]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_vec)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/field.rs:255:64 [INFO] [stderr] | [INFO] [stderr] 255 | super::parse_transform_fields(&re, &"A,B,C,D,E,F", &vec![LeftInf(3), LeftInf(-6), LeftInf(-7)]), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[LeftInf(3), LeftInf(-6), LeftInf(-7)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/field.rs:263:17 [INFO] [stderr] | [INFO] [stderr] 263 | &vec![RightInf(5), RightInf(-2), RightInf(-1), RightInf(8)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[RightInf(5), RightInf(-2), RightInf(-1), RightInf(8)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/field.rs:272:17 [INFO] [stderr] | [INFO] [stderr] 272 | &vec![Both(3, 3), Both(-9, 2), Both(6, 10), Both(-9, -5)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[Both(3, 3), Both(-9, 2), Both(6, 10), Both(-9, -5)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/field.rs:281:29 [INFO] [stderr] | [INFO] [stderr] 281 | let re = Regex::new(",").unwrap(); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::contains` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/field.rs:287:17 [INFO] [stderr] | [INFO] [stderr] 287 | &vec![Single(2), Single(4), Single(-1), Single(-7)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[Single(2), Single(4), Single(-1), Single(-7)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/field.rs:293:63 [INFO] [stderr] | [INFO] [stderr] 293 | super::parse_matching_fields(&re, &"中,华,人,民,E,F", &vec![LeftInf(3), LeftInf(-6), LeftInf(-7)]), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[LeftInf(3), LeftInf(-6), LeftInf(-7)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/field.rs:301:17 [INFO] [stderr] | [INFO] [stderr] 301 | &vec![RightInf(5), RightInf(-2), RightInf(-1), RightInf(7)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[RightInf(5), RightInf(-2), RightInf(-1), RightInf(7)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: useless use of `vec!` [INFO] [stderr] --> src/field.rs:310:17 [INFO] [stderr] | [INFO] [stderr] 310 | &vec![Both(3, 3), Both(-8, 2), Both(6, 10), Both(-8, -5)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use a slice directly: `&[Both(3, 3), Both(-8, 2), Both(6, 10), Both(-8, -5)]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 55 [INFO] [stderr] --> src/field.rs:318:5 [INFO] [stderr] | [INFO] [stderr] 318 | / fn test_get_string_by_field() { [INFO] [stderr] 319 | | // delimiter is "," [INFO] [stderr] 320 | | let re = Regex::new(",").unwrap(); [INFO] [stderr] 321 | | let text = "a,b,c,"; [INFO] [stderr] ... | [INFO] [stderr] 378 | | assert_eq!(get_string_by_field(&re, &text, &Both(4, 3)), None); [INFO] [stderr] 379 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/field.rs:320:29 [INFO] [stderr] | [INFO] [stderr] 320 | let re = Regex::new(",").unwrap(); [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::contains` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/input.rs:246:26 [INFO] [stderr] | [INFO] [stderr] 246 | .expect(format!("input:get_escaped_key: failed to parse row: {}", row).as_str()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("input:get_escaped_key: failed to parse row: {}", row))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/input.rs:248:26 [INFO] [stderr] | [INFO] [stderr] 248 | .expect(format!("input:get_escaped_key: failed to parse col: {}", col).as_str()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("input:get_escaped_key: failed to parse col: {}", col))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/matcher.rs:161:21 [INFO] [stderr] | [INFO] [stderr] 161 | matcher_engine.as_ref().map(|mat| { [INFO] [stderr] | _____________________^ [INFO] [stderr] | |_____________________| [INFO] [stderr] | || [INFO] [stderr] 162 | || let matched_items: MatchedItemGroup = [INFO] [stderr] 163 | || items.into_iter().filter_map(|item| mat.match_item(item)).collect(); [INFO] [stderr] 164 | || let _ = self.tx_result.send((Event::EvModelNewItem, Box::new(matched_items))); [INFO] [stderr] 165 | || }); [INFO] [stderr] | ||______________________^- help: try this: `if let Some(mat) = matcher_engine.as_ref() { ... }` [INFO] [stderr] | |_______________________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/matcher.rs:271:9 [INFO] [stderr] | [INFO] [stderr] 271 | / if matched_result.is_none() { [INFO] [stderr] 272 | | return None; [INFO] [stderr] 273 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `matched_result?;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::question_mark)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/matcher.rs:406:9 [INFO] [stderr] | [INFO] [stderr] 406 | / if result_range.is_none() { [INFO] [stderr] 407 | | return None; [INFO] [stderr] 408 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `result_range?;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/matcher.rs:557:35 [INFO] [stderr] | [INFO] [stderr] 557 | ranges.extend((start..end).into_iter()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `(start..end)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/matcher.rs:581:13 [INFO] [stderr] | [INFO] [stderr] 581 | / if result.is_none() { [INFO] [stderr] 582 | | return None; [INFO] [stderr] 583 | | } else { [INFO] [stderr] 584 | | results.push(result.unwrap()); [INFO] [stderr] 585 | | } [INFO] [stderr] | |_____________^ help: replace_it_with: `result?;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/model.rs:420:22 [INFO] [stderr] | [INFO] [stderr] 420 | .expect(format!("model:draw_items: failed to get item at {}", i).as_str()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("model:draw_items: failed to get item at {}", i))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: Calling `subsec_micros()` is more concise than this calculation [INFO] [stderr] --> src/model.rs:474:58 [INFO] [stderr] | [INFO] [stderr] 474 | let mills = (time.as_secs() * 1000) as u32 + time.subsec_nanos() / 1000 / 1000; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `time.subsec_micros()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::duration_subsec)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#duration_subsec [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/model.rs:532:34 [INFO] [stderr] | [INFO] [stderr] 532 | let (has_headers, yh) = (self.headers.len() > 0, self.get_header_height( y, maxy)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.headers.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i64 may become silently lossy if types change [INFO] [stderr] --> src/model.rs:546:24 [INFO] [stderr] | [INFO] [stderr] 546 | let nyh = ((yh as i64)+(direction*(i as i64))) as u16; [INFO] [stderr] | ^^^^^^^^^^^ help: try: `i64::from(yh)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/model.rs:704:18 [INFO] [stderr] | [INFO] [stderr] 704 | .expect(format!("model:draw_items: failed to get item at {}", current_idx).as_str()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("model:draw_items: failed to get item at {}", current_idx))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/model.rs:805:14 [INFO] [stderr] | [INFO] [stderr] 805 | .expect(format!("model:act_toggle: failed to get item {}", cursor).as_str()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("model:act_toggle: failed to get item {}", cursor))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/model.rs:807:9 [INFO] [stderr] | [INFO] [stderr] 807 | / if !self.selected.contains_key(&index) { [INFO] [stderr] 808 | | self.selected.insert(index, Arc::clone(current_item)); [INFO] [stderr] 809 | | } else { [INFO] [stderr] 810 | | self.selected.remove(&index); [INFO] [stderr] 811 | | } [INFO] [stderr] | |_________^ help: consider using: `self.selected.entry(index)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/model.rs:817:13 [INFO] [stderr] | [INFO] [stderr] 817 | / if !self.selected.contains_key(&index) { [INFO] [stderr] 818 | | self.selected.insert(index, Arc::clone(current_item)); [INFO] [stderr] 819 | | } else { [INFO] [stderr] 820 | | self.selected.remove(&index); [INFO] [stderr] 821 | | } [INFO] [stderr] | |_____________^ help: consider using: `self.selected.entry(index)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/model.rs:842:18 [INFO] [stderr] | [INFO] [stderr] 842 | .expect(format!("model:act_output: failed to get item {}", cursor).as_str()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("model:act_output: failed to get item {}", cursor))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/query.rs:209:9 [INFO] [stderr] | [INFO] [stderr] 209 | before.pop().map(|ch| { [INFO] [stderr] | _________^ [INFO] [stderr] | |_________| [INFO] [stderr] | || [INFO] [stderr] 210 | || after.push(ch); [INFO] [stderr] 211 | || }); [INFO] [stderr] | ||__________^- help: try this: `if let Some(ch) = before.pop() { after.push(ch); }` [INFO] [stderr] | |___________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/query.rs:216:9 [INFO] [stderr] | [INFO] [stderr] 216 | after.pop().map(|ch| { [INFO] [stderr] | _________^ [INFO] [stderr] | |_________| [INFO] [stderr] | || [INFO] [stderr] 217 | || before.push(ch); [INFO] [stderr] 218 | || }); [INFO] [stderr] | ||__________^- help: try this: `if let Some(ch) = after.pop() { before.push(ch); }` [INFO] [stderr] | |___________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/query.rs:281:13 [INFO] [stderr] | [INFO] [stderr] 281 | before.pop().map(|ch| { [INFO] [stderr] | _____________^ [INFO] [stderr] | |_____________| [INFO] [stderr] | || [INFO] [stderr] 282 | || after.push(ch); [INFO] [stderr] 283 | || }); [INFO] [stderr] | ||______________^- help: try this: `if let Some(ch) = before.pop() { after.push(ch); }` [INFO] [stderr] | |_______________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/query.rs:288:13 [INFO] [stderr] | [INFO] [stderr] 288 | before.pop().map(|ch| { [INFO] [stderr] | _____________^ [INFO] [stderr] | |_____________| [INFO] [stderr] | || [INFO] [stderr] 289 | || after.push(ch); [INFO] [stderr] 290 | || }); [INFO] [stderr] | ||______________^- help: try this: `if let Some(ch) = before.pop() { after.push(ch); }` [INFO] [stderr] | |_______________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/query.rs:299:13 [INFO] [stderr] | [INFO] [stderr] 299 | after.pop().map(|ch| { [INFO] [stderr] | _____________^ [INFO] [stderr] | |_____________| [INFO] [stderr] | || [INFO] [stderr] 300 | || before.push(ch); [INFO] [stderr] 301 | || }); [INFO] [stderr] | ||______________^- help: try this: `if let Some(ch) = after.pop() { before.push(ch); }` [INFO] [stderr] | |_______________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/query.rs:305:13 [INFO] [stderr] | [INFO] [stderr] 305 | after.pop().map(|ch| { [INFO] [stderr] | _____________^ [INFO] [stderr] | |_____________| [INFO] [stderr] | || [INFO] [stderr] 306 | || before.push(ch); [INFO] [stderr] 307 | || }); [INFO] [stderr] | ||______________^- help: try this: `if let Some(ch) = after.pop() { before.push(ch); }` [INFO] [stderr] | |_______________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/query.rs:314:13 [INFO] [stderr] | [INFO] [stderr] 314 | before.pop().map(|ch| { [INFO] [stderr] | _____________^ [INFO] [stderr] | |_____________| [INFO] [stderr] | || [INFO] [stderr] 315 | || after.push(ch); [INFO] [stderr] 316 | || }); [INFO] [stderr] | ||______________^- help: try this: `if let Some(ch) = before.pop() { after.push(ch); }` [INFO] [stderr] | |_______________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/query.rs:323:13 [INFO] [stderr] | [INFO] [stderr] 323 | after.pop().map(|ch| { [INFO] [stderr] | _____________^ [INFO] [stderr] | |_____________| [INFO] [stderr] | || [INFO] [stderr] 324 | || before.push(ch); [INFO] [stderr] 325 | || }); [INFO] [stderr] | ||______________^- help: try this: `if let Some(ch) = after.pop() { before.push(ch); }` [INFO] [stderr] | |_______________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/reader.rs:185:37 [INFO] [stderr] | [INFO] [stderr] 185 | fn get_command_output(cmd: &str) -> Result<(Option, Box), Box> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/reader.rs:186:35 [INFO] [stderr] | [INFO] [stderr] 186 | let shell = env::var("SHELL").unwrap_or("sh".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| "sh".to_string())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/reader.rs:230:15 [INFO] [stderr] | [INFO] [stderr] 230 | while !command.is_none() && !stopped_clone.load(Ordering::Relaxed) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `command.is_some() && !stopped_clone.load(Ordering::Relaxed)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/reader.rs:235:9 [INFO] [stderr] | [INFO] [stderr] 235 | command.map(|mut x| { [INFO] [stderr] | _________^ [INFO] [stderr] | |_________| [INFO] [stderr] | || [INFO] [stderr] 236 | || let _ = x.kill(); [INFO] [stderr] 237 | || let _ = x.wait(); [INFO] [stderr] 238 | || }); [INFO] [stderr] | ||__________^- help: try this: `if let Some(mut x) = command { ... }` [INFO] [stderr] | |___________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/score.rs:181:13 [INFO] [stderr] | [INFO] [stderr] 181 | / if ret.is_none() { [INFO] [stderr] 182 | | return None; [INFO] [stderr] 183 | | } [INFO] [stderr] | |_____________^ help: replace_it_with: `ret?;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/score.rs:199:5 [INFO] [stderr] | [INFO] [stderr] 199 | / if start_pos.is_none() { [INFO] [stderr] 200 | | return None; [INFO] [stderr] 201 | | }; [INFO] [stderr] | |_____^ help: replace_it_with: `start_pos?;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/score.rs:213:5 [INFO] [stderr] | [INFO] [stderr] 213 | / if last_pos.is_none() { [INFO] [stderr] 214 | | return None; [INFO] [stderr] 215 | | }; [INFO] [stderr] | |_____^ help: replace_it_with: `last_pos?;` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/previewer.rs:27:12 [INFO] [stderr] | [INFO] [stderr] 27 | if self.stopped.load(Ordering::Relaxed) == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!self.stopped.load(Ordering::Relaxed)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/previewer.rs:59:39 [INFO] [stderr] | [INFO] [stderr] 59 | let shell = env::var("SHELL").unwrap_or("sh".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| "sh".to_string())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/lib.rs:74:24 [INFO] [stderr] | [INFO] [stderr] 74 | if let Err(_) = tx_input_clone.send((EvActRedraw, Box::new(true))) { [INFO] [stderr] | _________________- ^^^^^^ [INFO] [stderr] 75 | | break; [INFO] [stderr] 76 | | } [INFO] [stderr] | |_________________- help: try this: `if tx_input_clone.send((EvActRedraw, Box::new(true))).is_err()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/lib.rs:308:35 [INFO] [stderr] | [INFO] [stderr] 308 | let (tx, rx): (Sender>>, Receiver>>) = channel(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `skim`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "bf402ca85fc99cda345bc473da76eb694e962e321a7fa63e5d4411a79021deec"` [INFO] running `"docker" "rm" "-f" "bf402ca85fc99cda345bc473da76eb694e962e321a7fa63e5d4411a79021deec"` [INFO] [stdout] bf402ca85fc99cda345bc473da76eb694e962e321a7fa63e5d4411a79021deec