[INFO] cloning repository https://github.com/jmnuf/xeorvi [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jmnuf/xeorvi" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjmnuf%2Fxeorvi", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjmnuf%2Fxeorvi'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 52aeeb78322b9907fc36d6e00da4792d13724d05 [INFO] linting jmnuf/xeorvi against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjmnuf%2Fxeorvi" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/jmnuf/xeorvi [INFO] finished tweaking git repo https://github.com/jmnuf/xeorvi [INFO] tweaked toml for git repo https://github.com/jmnuf/xeorvi written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/jmnuf/xeorvi on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/jmnuf/xeorvi already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded is_executable v1.0.4 [INFO] [stderr] Downloaded libc v0.2.164 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] 01a32f7fe92ab368ceccd406bf6f6af877ecd712b9945c05fd38513ad62414db [INFO] running `Command { std: "docker" "start" "-a" "01a32f7fe92ab368ceccd406bf6f6af877ecd712b9945c05fd38513ad62414db", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "01a32f7fe92ab368ceccd406bf6f6af877ecd712b9945c05fd38513ad62414db", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "01a32f7fe92ab368ceccd406bf6f6af877ecd712b9945c05fd38513ad62414db", kill_on_drop: false }` [INFO] [stdout] 01a32f7fe92ab368ceccd406bf6f6af877ecd712b9945c05fd38513ad62414db [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] a76125b2989d3074ed22351b4be03361acff820c9fea1a57f4fefbf6040f0c00 [INFO] running `Command { std: "docker" "start" "-a" "a76125b2989d3074ed22351b4be03361acff820c9fea1a57f4fefbf6040f0c00", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.164 [INFO] [stderr] Compiling signal-hook v0.3.17 [INFO] [stderr] Checking smallvec v1.13.2 [INFO] [stderr] Checking log v0.4.22 [INFO] [stderr] Compiling rustix v0.38.41 [INFO] [stderr] Checking whoami v1.5.2 [INFO] [stderr] Checking is_executable v1.0.4 [INFO] [stderr] Checking signal-hook-registry v1.4.2 [INFO] [stderr] Checking parking_lot_core v0.9.10 [INFO] [stderr] Checking mio v1.0.2 [INFO] [stderr] Checking parking_lot v0.12.3 [INFO] [stderr] Checking signal-hook-mio v0.2.4 [INFO] [stderr] Checking crossterm v0.28.1 [INFO] [stderr] Checking xeorvi v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/main.rs:868:1 [INFO] [stdout] | [INFO] [stdout] 868 | / /** [INFO] [stdout] 869 | | * =================================== [INFO] [stdout] 870 | | * | [INFO] [stdout] 871 | | * | Viewer discretion is adviced [INFO] [stdout] 872 | | * ----------------------------------- [INFO] [stdout] 873 | | */ [INFO] [stdout] 874 | | [INFO] [stdout] | |_^ [INFO] [stdout] 875 | trait TermClearer<'a> { [INFO] [stdout] | ----------------- the comment documents this trait [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/main.rs:868:1 [INFO] [stdout] | [INFO] [stdout] 868 | / /** [INFO] [stdout] 869 | | * =================================== [INFO] [stdout] 870 | | * | [INFO] [stdout] 871 | | * | Viewer discretion is adviced [INFO] [stdout] 872 | | * ----------------------------------- [INFO] [stdout] 873 | | */ [INFO] [stdout] 874 | | [INFO] [stdout] | |_^ [INFO] [stdout] 875 | trait TermClearer<'a> { [INFO] [stdout] | ----------------- the comment documents this trait [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match can be simplified with `.unwrap_or_default()` [INFO] [stdout] --> src/main.rs:60:22 [INFO] [stdout] | [INFO] [stdout] 60 | let env_exes = match query_env_exes() { [INFO] [stdout] | ______________________^ [INFO] [stdout] 61 | | Ok(list) => list, [INFO] [stdout] 62 | | Err(_) => Vec::new(), [INFO] [stdout] 63 | | }; [INFO] [stdout] | |_____^ help: replace it with: `query_env_exes().unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::manual_unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `uargs.get(0)` [INFO] [stdout] --> src/main.rs:151:33 [INFO] [stdout] | [INFO] [stdout] 151 | if let Some(path) = uargs.get(0) { [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `uargs.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_string` [INFO] [stdout] --> src/main.rs:152:45 [INFO] [stdout] | [INFO] [stdout] 152 | match parse_path(&dir_path, &path.to_string_lossy().to_string()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `path.to_string_lossy().as_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] = note: `#[warn(clippy::unnecessary_to_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/main.rs:184:9 [INFO] [stdout] | [INFO] [stdout] 184 | / if cfg!(debug_assertions) { [INFO] [stdout] 185 | | if uprog_name.to_lowercase() == "print-env" { [INFO] [stdout] 186 | | stdout.ubwrite("Commands inherited env vars:\n")?; [INFO] [stdout] 187 | | let env_vars:Vec<_> = req.start.get_envs().collect(); [INFO] [stdout] ... | [INFO] [stdout] 206 | | } [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] 184 ~ if cfg!(debug_assertions) [INFO] [stdout] 185 ~ && uprog_name.to_lowercase() == "print-env" { [INFO] [stdout] 186 | stdout.ubwrite("Commands inherited env vars:\n")?; [INFO] [stdout] ... [INFO] [stdout] 204 | continue; [INFO] [stdout] 205 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/main.rs:208:9 [INFO] [stdout] | [INFO] [stdout] 208 | / if cfg!(debug_assertions) { [INFO] [stdout] 209 | | if uprog_name.to_lowercase() == "print-exes" { [INFO] [stdout] 210 | | stdout.ubwrite(format!("Known executable files({}):\n", env_exes.len()))?; [INFO] [stdout] 211 | | for (path, name) in env_exes.iter() { [INFO] [stdout] ... | [INFO] [stdout] 217 | | } [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] 208 ~ if cfg!(debug_assertions) [INFO] [stdout] 209 ~ && uprog_name.to_lowercase() == "print-exes" { [INFO] [stdout] 210 | stdout.ubwrite(format!("Known executable files({}):\n", env_exes.len()))?; [INFO] [stdout] ... [INFO] [stdout] 215 | continue; [INFO] [stdout] 216 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/main.rs:218:9 [INFO] [stdout] | [INFO] [stdout] 218 | / if cfg!(debug_assertions) { [INFO] [stdout] 219 | | if uprog_name.to_lowercase() == "print-pp" { [INFO] [stdout] 220 | | for (k, v) in std::env::vars_os() { [INFO] [stdout] 221 | | if k.to_string_lossy().to_string().to_lowercase() != "path" { [INFO] [stdout] ... | [INFO] [stdout] 266 | | } [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] 218 ~ if cfg!(debug_assertions) [INFO] [stdout] 219 ~ && uprog_name.to_lowercase() == "print-pp" { [INFO] [stdout] 220 | for (k, v) in std::env::vars_os() { [INFO] [stdout] ... [INFO] [stdout] 264 | continue; [INFO] [stdout] 265 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_string` [INFO] [stdout] --> src/main.rs:224:37 [INFO] [stdout] | [INFO] [stdout] 224 | for path_str in v.to_string_lossy().to_string().split(if cfg!(windows) { ';' } else { ':' }) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `v.to_string_lossy().split(if cfg!(windows) { ';' } else { ':' })` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/main.rs:300:52 [INFO] [stdout] | [INFO] [stdout] 300 | ... None => stdout.uswrite(format!("t :: program closed by signal\n"))?, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"t :: program closed by signal\n".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:493:5 [INFO] [stdout] | [INFO] [stdout] 493 | return Ok((buf, false)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 493 - return Ok((buf, false)); [INFO] [stdout] 493 + Ok((buf, false)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/main.rs:326:15 [INFO] [stdout] | [INFO] [stdout] 326 | env_exes: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 326 - env_exes: &Vec, [INFO] [stdout] 326 + env_exes: &[String], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/main.rs:327:15 [INFO] [stdout] | [INFO] [stdout] 327 | env_cmds: &Vec [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 327 - env_cmds: &Vec [INFO] [stdout] 327 + env_cmds: &[String] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> src/main.rs:352:12 [INFO] [stdout] | [INFO] [stdout] 352 | if usr_txt.len() < 1 || suggestions.is_empty() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `usr_txt.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: useless use of `format!` [INFO] [stdout] --> src/main.rs:371:36 [INFO] [stdout] | [INFO] [stdout] 371 | stdout.uswrite(format!("{}", first).yellow())?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `first.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/main.rs:376:17 [INFO] [stdout] | [INFO] [stdout] 376 | while let Some(item) = it.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for item in it` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] = note: `#[warn(clippy::while_let_on_iterator)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/main.rs:479:26 [INFO] [stdout] | [INFO] [stdout] 479 | let sgs:Vec<_> = sgs.iter().filter(|name| name.starts_with(&buf)).map(|x| x.clone()).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `sgs.iter().filter(|name| name.starts_with(&buf)).cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/main.rs:487:27 [INFO] [stdout] | [INFO] [stdout] 487 | last_suggestion = sgs.get(sgs_idx as usize).map(|x| x.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `sgs.get(sgs_idx as usize).cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:569:5 [INFO] [stdout] | [INFO] [stdout] 569 | / return match command { [INFO] [stdout] 570 | | Some(x) => Ok(x), [INFO] [stdout] 571 | | None => Err(format!("Unknown syntax or command: {}", input)), [INFO] [stdout] 572 | | }; [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 569 ~ match command { [INFO] [stdout] 570 + Some(x) => Ok(x), [INFO] [stdout] 571 + None => Err(format!("Unknown syntax or command: {}", input)), [INFO] [stdout] 572 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:670:5 [INFO] [stdout] | [INFO] [stdout] 670 | return Ok(new_path); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 670 - return Ok(new_path); [INFO] [stdout] 670 + Ok(new_path) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&PathBuf` instead of `&Path` involves a new object where a slice will do [INFO] [stdout] --> src/main.rs:576:20 [INFO] [stdout] | [INFO] [stdout] 576 | fn parse_path(cwd: &path::PathBuf, path: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 576 ~ fn parse_path(cwd: &Path, path: &str) -> Result { [INFO] [stdout] 577 ~ let mut new_path = cwd.to_path_buf(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/main.rs:579:5 [INFO] [stdout] | [INFO] [stdout] 579 | / if cfg!(windows) { [INFO] [stdout] 580 | | if path.to_lowercase().starts_with("c:/") { [INFO] [stdout] 581 | | path.drain(..path.find("/").unwrap()); [INFO] [stdout] 582 | | } [INFO] [stdout] 583 | | } [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] 579 ~ if cfg!(windows) [INFO] [stdout] 580 ~ && path.to_lowercase().starts_with("c:/") { [INFO] [stdout] 581 | path.drain(..path.find("/").unwrap()); [INFO] [stdout] 582 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match can be simplified with `.unwrap_or_default()` [INFO] [stdout] --> src/main.rs:60:22 [INFO] [stdout] | [INFO] [stdout] 60 | let env_exes = match query_env_exes() { [INFO] [stdout] | ______________________^ [INFO] [stdout] 61 | | Ok(list) => list, [INFO] [stdout] 62 | | Err(_) => Vec::new(), [INFO] [stdout] 63 | | }; [INFO] [stdout] | |_____^ help: replace it with: `query_env_exes().unwrap_or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::manual_unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:687:5 [INFO] [stdout] | [INFO] [stdout] 687 | return Ok((final_path, links_checked)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 687 - return Ok((final_path, links_checked)); [INFO] [stdout] 687 + Ok((final_path, links_checked)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: accessing first element with `uargs.get(0)` [INFO] [stdout] --> src/main.rs:151:33 [INFO] [stdout] | [INFO] [stdout] 151 | if let Some(path) = uargs.get(0) { [INFO] [stdout] | ^^^^^^^^^^^^ help: try: `uargs.first()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_first [INFO] [stdout] = note: `#[warn(clippy::get_first)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_string` [INFO] [stdout] --> src/main.rs:152:45 [INFO] [stdout] | [INFO] [stdout] 152 | match parse_path(&dir_path, &path.to_string_lossy().to_string()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `path.to_string_lossy().as_ref()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] = note: `#[warn(clippy::unnecessary_to_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:739:28 [INFO] [stdout] | [INFO] [stdout] 739 | if !entry_res.is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `entry_res.is_err()` [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: unneeded `return` statement [INFO] [stdout] --> src/main.rs:809:5 [INFO] [stdout] | [INFO] [stdout] 809 | return Ok(exes); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 809 - return Ok(exes); [INFO] [stdout] 809 + Ok(exes) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `if let` since only the `Ok` variant of the iterator element is used [INFO] [stdout] --> src/main.rs:719:21 [INFO] [stdout] | [INFO] [stdout] 719 | / for entry_res in entries { [INFO] [stdout] 720 | | if let Ok(entry) = entry_res { [INFO] [stdout] 721 | | let entry_path = entry.path(); [INFO] [stdout] 722 | | if !entry_path.is_file() { [INFO] [stdout] ... | [INFO] [stdout] 727 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] help: try `.flatten()` and remove the `if let` statement in the for loop [INFO] [stdout] --> src/main.rs:720:25 [INFO] [stdout] | [INFO] [stdout] 720 | / if let Ok(entry) = entry_res { [INFO] [stdout] 721 | | let entry_path = entry.path(); [INFO] [stdout] 722 | | if !entry_path.is_file() { [INFO] [stdout] 723 | | continue; [INFO] [stdout] 724 | | } [INFO] [stdout] 725 | | paths.push(entry_path); [INFO] [stdout] 726 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_flatten [INFO] [stdout] = note: `#[warn(clippy::manual_flatten)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 719 ~ for entry in entries.flatten() { [INFO] [stdout] 720 + let entry_path = entry.path(); [INFO] [stdout] 721 + if !entry_path.is_file() { [INFO] [stdout] 722 + continue; [INFO] [stdout] 723 + } [INFO] [stdout] 724 + paths.push(entry_path); [INFO] [stdout] 725 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/main.rs:184:9 [INFO] [stdout] | [INFO] [stdout] 184 | / if cfg!(debug_assertions) { [INFO] [stdout] 185 | | if uprog_name.to_lowercase() == "print-env" { [INFO] [stdout] 186 | | stdout.ubwrite("Commands inherited env vars:\n")?; [INFO] [stdout] 187 | | let env_vars:Vec<_> = req.start.get_envs().collect(); [INFO] [stdout] ... | [INFO] [stdout] 206 | | } [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] 184 ~ if cfg!(debug_assertions) [INFO] [stdout] 185 ~ && uprog_name.to_lowercase() == "print-env" { [INFO] [stdout] 186 | stdout.ubwrite("Commands inherited env vars:\n")?; [INFO] [stdout] ... [INFO] [stdout] 204 | continue; [INFO] [stdout] 205 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:818:5 [INFO] [stdout] | [INFO] [stdout] 818 | return cmds; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 818 - return cmds; [INFO] [stdout] 818 + cmds [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:830:5 [INFO] [stdout] | [INFO] [stdout] 830 | / return process::Command::new("git") [INFO] [stdout] 831 | | .arg("branch") [INFO] [stdout] 832 | | .arg("--show-current") [INFO] [stdout] 833 | | .output() [INFO] [stdout] ... | [INFO] [stdout] 840 | | }); [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 830 ~ process::Command::new("git") [INFO] [stdout] 831 + .arg("branch") [INFO] [stdout] 832 + .arg("--show-current") [INFO] [stdout] 833 + .output() [INFO] [stdout] 834 + .map(|o| { [INFO] [stdout] 835 + if o.status.success() { [INFO] [stdout] 836 + Some(String::from_utf8_lossy(&o.stdout).trim().to_string()) [INFO] [stdout] 837 + } else { [INFO] [stdout] 838 + None [INFO] [stdout] 839 + } [INFO] [stdout] 840 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/main.rs:208:9 [INFO] [stdout] | [INFO] [stdout] 208 | / if cfg!(debug_assertions) { [INFO] [stdout] 209 | | if uprog_name.to_lowercase() == "print-exes" { [INFO] [stdout] 210 | | stdout.ubwrite(format!("Known executable files({}):\n", env_exes.len()))?; [INFO] [stdout] 211 | | for (path, name) in env_exes.iter() { [INFO] [stdout] ... | [INFO] [stdout] 217 | | } [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] 208 ~ if cfg!(debug_assertions) [INFO] [stdout] 209 ~ && uprog_name.to_lowercase() == "print-exes" { [INFO] [stdout] 210 | stdout.ubwrite(format!("Known executable files({}):\n", env_exes.len()))?; [INFO] [stdout] ... [INFO] [stdout] 215 | continue; [INFO] [stdout] 216 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/main.rs:827:5 [INFO] [stdout] | [INFO] [stdout] 827 | / let mut args = Vec::new(); [INFO] [stdout] 828 | | args.push("branch".to_string()); [INFO] [stdout] 829 | | args.push("--show-current".to_string()); [INFO] [stdout] | |____________________________________________^ help: consider using the `vec![]` macro: `let args = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] = note: `#[warn(clippy::vec_init_then_push)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:846:5 [INFO] [stdout] | [INFO] [stdout] 846 | return whoami::username(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 846 - return whoami::username(); [INFO] [stdout] 846 + whoami::username() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:856:5 [INFO] [stdout] | [INFO] [stdout] 856 | return Ok((dir, file_name)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 856 - return Ok((dir, file_name)); [INFO] [stdout] 856 + Ok((dir, file_name)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/main.rs:854:28 [INFO] [stdout] | [INFO] [stdout] 854 | ...rr(format!("Unabled to get the current directory's name. This might be because path ends with `..`, but truly IDK why gomena-sorry :(")), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Unabled to get the current directory's name. This might be because path ends with `..`, but truly IDK why gomena-sorry :(".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/main.rs:218:9 [INFO] [stdout] | [INFO] [stdout] 218 | / if cfg!(debug_assertions) { [INFO] [stdout] 219 | | if uprog_name.to_lowercase() == "print-pp" { [INFO] [stdout] 220 | | for (k, v) in std::env::vars_os() { [INFO] [stdout] 221 | | if k.to_string_lossy().to_string().to_lowercase() != "path" { [INFO] [stdout] ... | [INFO] [stdout] 266 | | } [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] 218 ~ if cfg!(debug_assertions) [INFO] [stdout] 219 ~ && uprog_name.to_lowercase() == "print-pp" { [INFO] [stdout] 220 | for (k, v) in std::env::vars_os() { [INFO] [stdout] ... [INFO] [stdout] 264 | continue; [INFO] [stdout] 265 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_string` [INFO] [stdout] --> src/main.rs:224:37 [INFO] [stdout] | [INFO] [stdout] 224 | for path_str in v.to_string_lossy().to_string().split(if cfg!(windows) { ';' } else { ':' }) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `v.to_string_lossy().split(if cfg!(windows) { ';' } else { ':' })` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_to_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/main.rs:300:52 [INFO] [stdout] | [INFO] [stdout] 300 | ... None => stdout.uswrite(format!("t :: program closed by signal\n"))?, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"t :: program closed by signal\n".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:493:5 [INFO] [stdout] | [INFO] [stdout] 493 | return Ok((buf, false)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 493 - return Ok((buf, false)); [INFO] [stdout] 493 + Ok((buf, false)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/main.rs:326:15 [INFO] [stdout] | [INFO] [stdout] 326 | env_exes: &Vec, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 326 - env_exes: &Vec, [INFO] [stdout] 326 + env_exes: &[String], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/main.rs:327:15 [INFO] [stdout] | [INFO] [stdout] 327 | env_cmds: &Vec [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 327 - env_cmds: &Vec [INFO] [stdout] 327 + env_cmds: &[String] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to one [INFO] [stdout] --> src/main.rs:352:12 [INFO] [stdout] | [INFO] [stdout] 352 | if usr_txt.len() < 1 || suggestions.is_empty() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `usr_txt.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: useless use of `format!` [INFO] [stdout] --> src/main.rs:371:36 [INFO] [stdout] | [INFO] [stdout] 371 | stdout.uswrite(format!("{}", first).yellow())?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `first.to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/main.rs:376:17 [INFO] [stdout] | [INFO] [stdout] 376 | while let Some(item) = it.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for item in it` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] = note: `#[warn(clippy::while_let_on_iterator)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/main.rs:479:26 [INFO] [stdout] | [INFO] [stdout] 479 | let sgs:Vec<_> = sgs.iter().filter(|name| name.starts_with(&buf)).map(|x| x.clone()).collect(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `sgs.iter().filter(|name| name.starts_with(&buf)).cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/main.rs:487:27 [INFO] [stdout] | [INFO] [stdout] 487 | last_suggestion = sgs.get(sgs_idx as usize).map(|x| x.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `sgs.get(sgs_idx as usize).cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:569:5 [INFO] [stdout] | [INFO] [stdout] 569 | / return match command { [INFO] [stdout] 570 | | Some(x) => Ok(x), [INFO] [stdout] 571 | | None => Err(format!("Unknown syntax or command: {}", input)), [INFO] [stdout] 572 | | }; [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 569 ~ match command { [INFO] [stdout] 570 + Some(x) => Ok(x), [INFO] [stdout] 571 + None => Err(format!("Unknown syntax or command: {}", input)), [INFO] [stdout] 572 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:670:5 [INFO] [stdout] | [INFO] [stdout] 670 | return Ok(new_path); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 670 - return Ok(new_path); [INFO] [stdout] 670 + Ok(new_path) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&PathBuf` instead of `&Path` involves a new object where a slice will do [INFO] [stdout] --> src/main.rs:576:20 [INFO] [stdout] | [INFO] [stdout] 576 | fn parse_path(cwd: &path::PathBuf, path: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 576 ~ fn parse_path(cwd: &Path, path: &str) -> Result { [INFO] [stdout] 577 ~ let mut new_path = cwd.to_path_buf(); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/main.rs:579:5 [INFO] [stdout] | [INFO] [stdout] 579 | / if cfg!(windows) { [INFO] [stdout] 580 | | if path.to_lowercase().starts_with("c:/") { [INFO] [stdout] 581 | | path.drain(..path.find("/").unwrap()); [INFO] [stdout] 582 | | } [INFO] [stdout] 583 | | } [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] 579 ~ if cfg!(windows) [INFO] [stdout] 580 ~ && path.to_lowercase().starts_with("c:/") { [INFO] [stdout] 581 | path.drain(..path.find("/").unwrap()); [INFO] [stdout] 582 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:687:5 [INFO] [stdout] | [INFO] [stdout] 687 | return Ok((final_path, links_checked)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 687 - return Ok((final_path, links_checked)); [INFO] [stdout] 687 + Ok((final_path, links_checked)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:739:28 [INFO] [stdout] | [INFO] [stdout] 739 | if !entry_res.is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `entry_res.is_err()` [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: unneeded `return` statement [INFO] [stdout] --> src/main.rs:809:5 [INFO] [stdout] | [INFO] [stdout] 809 | return Ok(exes); [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 809 - return Ok(exes); [INFO] [stdout] 809 + Ok(exes) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary `if let` since only the `Ok` variant of the iterator element is used [INFO] [stdout] --> src/main.rs:719:21 [INFO] [stdout] | [INFO] [stdout] 719 | / for entry_res in entries { [INFO] [stdout] 720 | | if let Ok(entry) = entry_res { [INFO] [stdout] 721 | | let entry_path = entry.path(); [INFO] [stdout] 722 | | if !entry_path.is_file() { [INFO] [stdout] ... | [INFO] [stdout] 727 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] help: try `.flatten()` and remove the `if let` statement in the for loop [INFO] [stdout] --> src/main.rs:720:25 [INFO] [stdout] | [INFO] [stdout] 720 | / if let Ok(entry) = entry_res { [INFO] [stdout] 721 | | let entry_path = entry.path(); [INFO] [stdout] 722 | | if !entry_path.is_file() { [INFO] [stdout] 723 | | continue; [INFO] [stdout] 724 | | } [INFO] [stdout] 725 | | paths.push(entry_path); [INFO] [stdout] 726 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_flatten [INFO] [stdout] = note: `#[warn(clippy::manual_flatten)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 719 ~ for entry in entries.flatten() { [INFO] [stdout] 720 + let entry_path = entry.path(); [INFO] [stdout] 721 + if !entry_path.is_file() { [INFO] [stdout] 722 + continue; [INFO] [stdout] 723 + } [INFO] [stdout] 724 + paths.push(entry_path); [INFO] [stdout] 725 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:818:5 [INFO] [stdout] | [INFO] [stdout] 818 | return cmds; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 818 - return cmds; [INFO] [stdout] 818 + cmds [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:830:5 [INFO] [stdout] | [INFO] [stdout] 830 | / return process::Command::new("git") [INFO] [stdout] 831 | | .arg("branch") [INFO] [stdout] 832 | | .arg("--show-current") [INFO] [stdout] 833 | | .output() [INFO] [stdout] ... | [INFO] [stdout] 840 | | }); [INFO] [stdout] | |__________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 830 ~ process::Command::new("git") [INFO] [stdout] 831 + .arg("branch") [INFO] [stdout] 832 + .arg("--show-current") [INFO] [stdout] 833 + .output() [INFO] [stdout] 834 + .map(|o| { [INFO] [stdout] 835 + if o.status.success() { [INFO] [stdout] 836 + Some(String::from_utf8_lossy(&o.stdout).trim().to_string()) [INFO] [stdout] 837 + } else { [INFO] [stdout] 838 + None [INFO] [stdout] 839 + } [INFO] [stdout] 840 ~ }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calls to `push` immediately after creation [INFO] [stdout] --> src/main.rs:827:5 [INFO] [stdout] | [INFO] [stdout] 827 | / let mut args = Vec::new(); [INFO] [stdout] 828 | | args.push("branch".to_string()); [INFO] [stdout] 829 | | args.push("--show-current".to_string()); [INFO] [stdout] | |____________________________________________^ help: consider using the `vec![]` macro: `let args = vec![..];` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_init_then_push [INFO] [stdout] = note: `#[warn(clippy::vec_init_then_push)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:846:5 [INFO] [stdout] | [INFO] [stdout] 846 | return whoami::username(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 846 - return whoami::username(); [INFO] [stdout] 846 + whoami::username() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:856:5 [INFO] [stdout] | [INFO] [stdout] 856 | return Ok((dir, file_name)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 856 - return Ok((dir, file_name)); [INFO] [stdout] 856 + Ok((dir, file_name)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/main.rs:854:28 [INFO] [stdout] | [INFO] [stdout] 854 | ...rr(format!("Unabled to get the current directory's name. This might be because path ends with `..`, but truly IDK why gomena-sorry :(")), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Unabled to get the current directory's name. This might be because path ends with `..`, but truly IDK why gomena-sorry :(".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.43s [INFO] running `Command { std: "docker" "inspect" "a76125b2989d3074ed22351b4be03361acff820c9fea1a57f4fefbf6040f0c00", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "a76125b2989d3074ed22351b4be03361acff820c9fea1a57f4fefbf6040f0c00", kill_on_drop: false }` [INFO] [stdout] a76125b2989d3074ed22351b4be03361acff820c9fea1a57f4fefbf6040f0c00