[INFO] cloning repository https://github.com/AHMED-techNOP/0-shell [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/AHMED-techNOP/0-shell" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAHMED-techNOP%2F0-shell", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAHMED-techNOP%2F0-shell'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 232ed62429c87df836eff65a89a4a3c2820ca80e [INFO] linting AHMED-techNOP/0-shell against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAHMED-techNOP%2F0-shell" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/AHMED-techNOP/0-shell [INFO] finished tweaking git repo https://github.com/AHMED-techNOP/0-shell [INFO] tweaked toml for git repo https://github.com/AHMED-techNOP/0-shell written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/AHMED-techNOP/0-shell 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/AHMED-techNOP/0-shell 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 wasm-bindgen-macro-support v0.2.103 [INFO] [stderr] Downloaded wasm-bindgen-shared v0.2.103 [INFO] [stderr] Downloaded wasm-bindgen-macro v0.2.103 [INFO] [stderr] Downloaded wasm-bindgen-backend v0.2.103 [INFO] [stderr] Downloaded windows-result v0.4.0 [INFO] [stderr] Downloaded users v0.11.0 [INFO] [stderr] Downloaded windows-strings v0.5.0 [INFO] [stderr] Downloaded term_size v0.3.2 [INFO] [stderr] Downloaded find-msvc-tools v0.1.1 [INFO] [stderr] Downloaded windows-core v0.62.0 [INFO] [stderr] Downloaded wasm-bindgen v0.2.103 [INFO] [stderr] Downloaded js-sys v0.3.80 [INFO] [stderr] Downloaded cc v1.2.37 [INFO] [stderr] Downloaded libc v0.2.175 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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] cfa07845e7bcc3b038690e033949eb44c6d1202afc8ddce8e22ea8b33923728d [INFO] running `Command { std: "docker" "start" "-a" "cfa07845e7bcc3b038690e033949eb44c6d1202afc8ddce8e22ea8b33923728d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "cfa07845e7bcc3b038690e033949eb44c6d1202afc8ddce8e22ea8b33923728d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "cfa07845e7bcc3b038690e033949eb44c6d1202afc8ddce8e22ea8b33923728d", kill_on_drop: false }` [INFO] [stdout] cfa07845e7bcc3b038690e033949eb44c6d1202afc8ddce8e22ea8b33923728d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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] fe940938b327d547d88fa107a0089b287bf566aa092f41fbf47fdd34c170a6d1 [INFO] running `Command { std: "docker" "start" "-a" "fe940938b327d547d88fa107a0089b287bf566aa092f41fbf47fdd34c170a6d1", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.175 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Checking lazy_static v1.5.0 [INFO] [stderr] Checking log v0.4.28 [INFO] [stderr] Checking colored v2.2.0 [INFO] [stderr] Checking chrono v0.4.42 [INFO] [stderr] Checking users v0.11.0 [INFO] [stderr] Checking term_size v0.3.2 [INFO] [stderr] Checking shell v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/cd.rs:44:42 [INFO] [stdout] | [INFO] [stdout] 44 | if let Err(e) = env::set_current_dir(&path) { [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/cd.rs:44:42 [INFO] [stdout] | [INFO] [stdout] 44 | if let Err(e) = env::set_current_dir(&path) { [INFO] [stdout] | ^^^^^ help: change this to: `path` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/commands/pwd.rs:5:6 [INFO] [stdout] | [INFO] [stdout] 5 | return path.display().to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 5 - return path.display().to_string(); [INFO] [stdout] 5 + path.display().to_string() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/commands/ls.rs:35:30 [INFO] [stdout] | [INFO] [stdout] 35 | let flag_chars = &flag[1..]; // Remove the '-' prefix [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/commands/ls.rs:34:9 [INFO] [stdout] | [INFO] [stdout] 34 | if flag.starts_with("-") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] = note: `#[warn(clippy::manual_strip)]` on by default [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 34 ~ if let Some(flag_chars) = flag.strip_prefix("-") { [INFO] [stdout] 35 ~ // Remove the '-' prefix [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `nl` is used as a loop counter [INFO] [stdout] --> src/commands/ls.rs:54:5 [INFO] [stdout] | [INFO] [stdout] 54 | for pa in dirs.iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (nl, pa) in dirs.iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/commands/pwd.rs:5:6 [INFO] [stdout] | [INFO] [stdout] 5 | return path.display().to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 5 - return path.display().to_string(); [INFO] [stdout] 5 + path.display().to_string() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/commands/ls.rs:212:20 [INFO] [stdout] | [INFO] [stdout] 212 | if l && st != "@" || !l { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 212 - if l && st != "@" || !l { [INFO] [stdout] 212 + if !(l && st == "@") { [INFO] [stdout] | [INFO] [stdout] 212 - if l && st != "@" || !l { [INFO] [stdout] 212 + if !l || st != "@" { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> src/commands/ls.rs:35:30 [INFO] [stdout] | [INFO] [stdout] 35 | let flag_chars = &flag[1..]; // Remove the '-' prefix [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> src/commands/ls.rs:34:9 [INFO] [stdout] | [INFO] [stdout] 34 | if flag.starts_with("-") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] = note: `#[warn(clippy::manual_strip)]` on by default [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 34 ~ if let Some(flag_chars) = flag.strip_prefix("-") { [INFO] [stdout] 35 ~ // Remove the '-' prefix [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `nl` is used as a loop counter [INFO] [stdout] --> src/commands/ls.rs:54:5 [INFO] [stdout] | [INFO] [stdout] 54 | for pa in dirs.iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (nl, pa) in dirs.iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/commands/ls.rs:212:20 [INFO] [stdout] | [INFO] [stdout] 212 | if l && st != "@" || !l { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 212 - if l && st != "@" || !l { [INFO] [stdout] 212 + if !(l && st == "@") { [INFO] [stdout] | [INFO] [stdout] 212 - if l && st != "@" || !l { [INFO] [stdout] 212 + if !l || st != "@" { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_string` [INFO] [stdout] --> src/commands/ls.rs:150:29 [INFO] [stdout] | [INFO] [stdout] 150 | st.push_str(&parent.to_string_lossy().to_string()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `parent.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: unnecessary `if let` since only the `Ok` variant of the iterator element is used [INFO] [stdout] --> src/commands/ls.rs:191:5 [INFO] [stdout] | [INFO] [stdout] 191 | / for entry in dir { [INFO] [stdout] 192 | | if let Ok(en) = entry { [INFO] [stdout] 193 | | let mut name = match en.file_name().into_string() { [INFO] [stdout] 194 | | Ok(n) => n, [INFO] [stdout] ... | [INFO] [stdout] 230 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] help: try `.flatten()` and remove the `if let` statement in the for loop [INFO] [stdout] --> src/commands/ls.rs:192:9 [INFO] [stdout] | [INFO] [stdout] 192 | / if let Ok(en) = entry { [INFO] [stdout] 193 | | let mut name = match en.file_name().into_string() { [INFO] [stdout] 194 | | Ok(n) => n, [INFO] [stdout] 195 | | Err(_) => "".to_string(), [INFO] [stdout] ... | [INFO] [stdout] 229 | | } [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] 191 ~ for en in dir.flatten() { [INFO] [stdout] 192 + let mut name = match en.file_name().into_string() { [INFO] [stdout] 193 + Ok(n) => n, [INFO] [stdout] 194 + Err(_) => "".to_string(), [INFO] [stdout] 195 + }; [INFO] [stdout] 196 + [INFO] [stdout] 197 + let meta_data = en.metadata().unwrap(); [INFO] [stdout] 198 + // let debug_output: String = format!("{:?}", meta_data.permissions()); [INFO] [stdout] 199 + [INFO] [stdout] 200 + if !a && name.starts_with(".") { [INFO] [stdout] 201 + continue; [INFO] [stdout] 202 + } [INFO] [stdout] 203 + [INFO] [stdout] 204 + total += meta_data.st_blocks() / 2; [INFO] [stdout] 205 + [INFO] [stdout] 206 + let perm_str = perms(meta_data.clone(), &en.path()); [INFO] [stdout] 207 + [INFO] [stdout] 208 + let st = flag_f(perm_str.clone()); [INFO] [stdout] 209 + [INFO] [stdout] 210 + if f { [INFO] [stdout] 211 + if l && st != "@" || !l { [INFO] [stdout] 212 + name.push_str(&st); [INFO] [stdout] 213 + } [INFO] [stdout] 214 + } [INFO] [stdout] 215 + [INFO] [stdout] 216 + if perm_str.contains("l") && l { [INFO] [stdout] 217 + if let Ok(target) = fs::read_link(&en.path()) { [INFO] [stdout] 218 + name.push_str(&format!(" -> {}", target.display())); [INFO] [stdout] 219 + } [INFO] [stdout] 220 + } [INFO] [stdout] 221 + [INFO] [stdout] 222 + // add l atawich [INFO] [stdout] 223 + if l { [INFO] [stdout] 224 + add_to_flag_l(&name, meta_data, &mut flag_l, st.to_string(), perm_str); [INFO] [stdout] 225 + } else { [INFO] [stdout] 226 + no_flag_or_a_f.push((name, st.to_string())); [INFO] [stdout] 227 + } [INFO] [stdout] 228 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/commands/ls.rs:211:13 [INFO] [stdout] | [INFO] [stdout] 211 | / if f { [INFO] [stdout] 212 | | if l && st != "@" || !l { [INFO] [stdout] 213 | | name.push_str(&st); [INFO] [stdout] 214 | | } [INFO] [stdout] 215 | | } [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] 211 ~ if f [INFO] [stdout] 212 ~ && (l && st != "@" || !l) { [INFO] [stdout] 213 | name.push_str(&st); [INFO] [stdout] 214 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/commands/ls.rs:213:35 [INFO] [stdout] | [INFO] [stdout] 213 | name.push_str(&st); [INFO] [stdout] | ^^^ help: change this to: `st` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/ls.rs:218:51 [INFO] [stdout] | [INFO] [stdout] 218 | if let Ok(target) = fs::read_link(&en.path()) { [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `en.path()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_string` [INFO] [stdout] --> src/commands/ls.rs:150:29 [INFO] [stdout] | [INFO] [stdout] 150 | st.push_str(&parent.to_string_lossy().to_string()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `parent.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: unnecessary `if let` since only the `Ok` variant of the iterator element is used [INFO] [stdout] --> src/commands/ls.rs:191:5 [INFO] [stdout] | [INFO] [stdout] 191 | / for entry in dir { [INFO] [stdout] 192 | | if let Ok(en) = entry { [INFO] [stdout] 193 | | let mut name = match en.file_name().into_string() { [INFO] [stdout] 194 | | Ok(n) => n, [INFO] [stdout] ... | [INFO] [stdout] 230 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] help: try `.flatten()` and remove the `if let` statement in the for loop [INFO] [stdout] --> src/commands/ls.rs:192:9 [INFO] [stdout] | [INFO] [stdout] 192 | / if let Ok(en) = entry { [INFO] [stdout] 193 | | let mut name = match en.file_name().into_string() { [INFO] [stdout] 194 | | Ok(n) => n, [INFO] [stdout] 195 | | Err(_) => "".to_string(), [INFO] [stdout] ... | [INFO] [stdout] 229 | | } [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] 191 ~ for en in dir.flatten() { [INFO] [stdout] 192 + let mut name = match en.file_name().into_string() { [INFO] [stdout] 193 + Ok(n) => n, [INFO] [stdout] 194 + Err(_) => "".to_string(), [INFO] [stdout] 195 + }; [INFO] [stdout] 196 + [INFO] [stdout] 197 + let meta_data = en.metadata().unwrap(); [INFO] [stdout] 198 + // let debug_output: String = format!("{:?}", meta_data.permissions()); [INFO] [stdout] 199 + [INFO] [stdout] 200 + if !a && name.starts_with(".") { [INFO] [stdout] 201 + continue; [INFO] [stdout] 202 + } [INFO] [stdout] 203 + [INFO] [stdout] 204 + total += meta_data.st_blocks() / 2; [INFO] [stdout] 205 + [INFO] [stdout] 206 + let perm_str = perms(meta_data.clone(), &en.path()); [INFO] [stdout] 207 + [INFO] [stdout] 208 + let st = flag_f(perm_str.clone()); [INFO] [stdout] 209 + [INFO] [stdout] 210 + if f { [INFO] [stdout] 211 + if l && st != "@" || !l { [INFO] [stdout] 212 + name.push_str(&st); [INFO] [stdout] 213 + } [INFO] [stdout] 214 + } [INFO] [stdout] 215 + [INFO] [stdout] 216 + if perm_str.contains("l") && l { [INFO] [stdout] 217 + if let Ok(target) = fs::read_link(&en.path()) { [INFO] [stdout] 218 + name.push_str(&format!(" -> {}", target.display())); [INFO] [stdout] 219 + } [INFO] [stdout] 220 + } [INFO] [stdout] 221 + [INFO] [stdout] 222 + // add l atawich [INFO] [stdout] 223 + if l { [INFO] [stdout] 224 + add_to_flag_l(&name, meta_data, &mut flag_l, st.to_string(), perm_str); [INFO] [stdout] 225 + } else { [INFO] [stdout] 226 + no_flag_or_a_f.push((name, st.to_string())); [INFO] [stdout] 227 + } [INFO] [stdout] 228 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/commands/ls.rs:211:13 [INFO] [stdout] | [INFO] [stdout] 211 | / if f { [INFO] [stdout] 212 | | if l && st != "@" || !l { [INFO] [stdout] 213 | | name.push_str(&st); [INFO] [stdout] 214 | | } [INFO] [stdout] 215 | | } [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] 211 ~ if f [INFO] [stdout] 212 ~ && (l && st != "@" || !l) { [INFO] [stdout] 213 | name.push_str(&st); [INFO] [stdout] 214 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/commands/ls.rs:213:35 [INFO] [stdout] | [INFO] [stdout] 213 | name.push_str(&st); [INFO] [stdout] | ^^^ help: change this to: `st` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the borrowed expression implements the required traits [INFO] [stdout] --> src/commands/ls.rs:218:51 [INFO] [stdout] | [INFO] [stdout] 218 | if let Ok(target) = fs::read_link(&en.path()) { [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `en.path()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual checked division [INFO] [stdout] --> src/commands/ls.rs:435:26 [INFO] [stdout] | [INFO] [stdout] 435 | let num_columns = if column_width > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ check performed here [INFO] [stdout] 436 | (terminal_width / column_width).max(1) [INFO] [stdout] | ------------------------------- division performed here [INFO] [stdout] | [INFO] [stdout] = help: consider using `checked_div` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_checked_ops [INFO] [stdout] = note: `#[warn(clippy::manual_checked_ops)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manually reimplementing `div_ceil` [INFO] [stdout] --> src/commands/ls.rs:442:20 [INFO] [stdout] | [INFO] [stdout] 442 | let num_rows = (names.len() + num_columns - 1) / num_columns; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `names.len().div_ceil(num_columns)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil [INFO] [stdout] = note: `#[warn(clippy::manual_div_ceil)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/commands/ls.rs:474:17 [INFO] [stdout] | [INFO] [stdout] 474 | while let Some(esc_ch) = chars.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for esc_ch in chars.by_ref()` [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: manual checked division [INFO] [stdout] --> src/commands/ls.rs:435:26 [INFO] [stdout] | [INFO] [stdout] 435 | let num_columns = if column_width > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ check performed here [INFO] [stdout] 436 | (terminal_width / column_width).max(1) [INFO] [stdout] | ------------------------------- division performed here [INFO] [stdout] | [INFO] [stdout] = help: consider using `checked_div` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_checked_ops [INFO] [stdout] = note: `#[warn(clippy::manual_checked_ops)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manually reimplementing `div_ceil` [INFO] [stdout] --> src/commands/ls.rs:442:20 [INFO] [stdout] | [INFO] [stdout] 442 | let num_rows = (names.len() + num_columns - 1) / num_columns; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `names.len().div_ceil(num_columns)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil [INFO] [stdout] = note: `#[warn(clippy::manual_div_ceil)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/commands/ls.rs:474:17 [INFO] [stdout] | [INFO] [stdout] 474 | while let Some(esc_ch) = chars.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for esc_ch in chars.by_ref()` [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: this `if` has identical blocks [INFO] [stdout] --> src/main.rs:38:90 [INFO] [stdout] | [INFO] [stdout] 38 | if (q1 % 2 == 0 && input.contains("'")) || (q2 % 2 == 0 && input.contains('"')) { [INFO] [stdout] | __________________________________________________________________________________________^ [INFO] [stdout] 39 | | [INFO] [stdout] 40 | | break; [INFO] [stdout] 41 | | } else if !input.contains("'") || !input.contains('"') { [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/main.rs:41:64 [INFO] [stdout] | [INFO] [stdout] 41 | } else if !input.contains("'") || !input.contains('"') { [INFO] [stdout] | ________________________________________________________________^ [INFO] [stdout] 42 | | break; [INFO] [stdout] 43 | | } else { [INFO] [stdout] | |_________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] = note: `#[warn(clippy::if_same_then_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_string` [INFO] [stdout] --> src/main.rs:117:23 [INFO] [stdout] | [INFO] [stdout] 117 | let splited = split(input.to_string()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `input.split(input.to_string())` [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: this `if` has identical blocks [INFO] [stdout] --> src/main.rs:38:90 [INFO] [stdout] | [INFO] [stdout] 38 | if (q1 % 2 == 0 && input.contains("'")) || (q2 % 2 == 0 && input.contains('"')) { [INFO] [stdout] | __________________________________________________________________________________________^ [INFO] [stdout] 39 | | [INFO] [stdout] 40 | | break; [INFO] [stdout] 41 | | } else if !input.contains("'") || !input.contains('"') { [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/main.rs:41:64 [INFO] [stdout] | [INFO] [stdout] 41 | } else if !input.contains("'") || !input.contains('"') { [INFO] [stdout] | ________________________________________________________________^ [INFO] [stdout] 42 | | break; [INFO] [stdout] 43 | | } else { [INFO] [stdout] | |_________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] = note: `#[warn(clippy::if_same_then_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `to_string` [INFO] [stdout] --> src/main.rs:117:23 [INFO] [stdout] | [INFO] [stdout] 117 | let splited = split(input.to_string()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `input.split(input.to_string())` [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] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.52s [INFO] running `Command { std: "docker" "inspect" "fe940938b327d547d88fa107a0089b287bf566aa092f41fbf47fdd34c170a6d1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "fe940938b327d547d88fa107a0089b287bf566aa092f41fbf47fdd34c170a6d1", kill_on_drop: false }` [INFO] [stdout] fe940938b327d547d88fa107a0089b287bf566aa092f41fbf47fdd34c170a6d1