[INFO] cloning repository https://github.com/carcillarjjme/highest_above_nearest_drainage [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/carcillarjjme/highest_above_nearest_drainage" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcarcillarjjme%2Fhighest_above_nearest_drainage", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcarcillarjjme%2Fhighest_above_nearest_drainage'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 6eba120d78a728df0be95b8ac0b50c02a8d09396 [INFO] linting carcillarjjme/highest_above_nearest_drainage against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fcarcillarjjme%2Fhighest_above_nearest_drainage" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/carcillarjjme/highest_above_nearest_drainage [INFO] finished tweaking git repo https://github.com/carcillarjjme/highest_above_nearest_drainage [INFO] tweaked toml for git repo https://github.com/carcillarjjme/highest_above_nearest_drainage written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/carcillarjjme/highest_above_nearest_drainage 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/carcillarjjme/highest_above_nearest_drainage 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 thiserror-impl v1.0.47 [INFO] [stderr] Downloaded ndarray-npy v0.8.1 [INFO] [stderr] Downloaded indoc v2.0.3 [INFO] [stderr] Downloaded argh_shared v0.1.12 [INFO] [stderr] Downloaded serde v1.0.186 [INFO] [stderr] Downloaded pest_derive v2.7.2 [INFO] [stderr] Downloaded argh_derive v0.1.12 [INFO] [stderr] Downloaded argh v0.1.12 [INFO] [stderr] Downloaded num-complex v0.4.4 [INFO] [stderr] Downloaded indexmap v2.0.0 [INFO] [stderr] Downloaded matrixmultiply v0.3.7 [INFO] [stderr] Downloaded hashbrown v0.14.0 [INFO] [stderr] Downloaded indicatif v0.17.6 [INFO] [stderr] Downloaded serde_json v1.0.105 [INFO] [stderr] Downloaded num-bigint v0.4.4 [INFO] [stderr] Downloaded portable-atomic v1.4.3 [INFO] [stderr] Downloaded pest v2.7.2 [INFO] [stderr] Downloaded pest_meta v2.7.2 [INFO] [stderr] Downloaded py_literal v0.4.0 [INFO] [stderr] Downloaded ndarray v0.15.6 [INFO] [stderr] Downloaded syn v2.0.32 [INFO] [stderr] Downloaded flate2 v1.0.27 [INFO] [stderr] Downloaded serde_derive v1.0.186 [INFO] [stderr] Downloaded console v0.15.7 [INFO] [stderr] Downloaded pest_generator v2.7.2 [INFO] [stderr] Downloaded zip v0.5.13 [INFO] [stderr] Downloaded sha2 v0.10.7 [INFO] [stderr] Downloaded cpufeatures v0.2.9 [INFO] [stderr] Downloaded thiserror v1.0.47 [INFO] [stderr] Downloaded libc v0.2.159 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] 32fd6407c4bfc90c6bd1199fe128aaa351f884f0ce3ffa75265e6800090973fc [INFO] running `Command { std: "docker" "start" "-a" "32fd6407c4bfc90c6bd1199fe128aaa351f884f0ce3ffa75265e6800090973fc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "32fd6407c4bfc90c6bd1199fe128aaa351f884f0ce3ffa75265e6800090973fc", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "32fd6407c4bfc90c6bd1199fe128aaa351f884f0ce3ffa75265e6800090973fc", kill_on_drop: false }` [INFO] [stdout] 32fd6407c4bfc90c6bd1199fe128aaa351f884f0ce3ffa75265e6800090973fc [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] c50f38bf6a2d672bce32e4b89bb598c6fc0234c9656e9683db4556cd0a2497c4 [INFO] running `Command { std: "docker" "start" "-a" "c50f38bf6a2d672bce32e4b89bb598c6fc0234c9656e9683db4556cd0a2497c4", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.66 [INFO] [stderr] Compiling unicode-ident v1.0.11 [INFO] [stderr] Compiling thiserror v1.0.47 [INFO] [stderr] Compiling serde v1.0.186 [INFO] [stderr] Compiling ucd-trie v0.1.6 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling num-integer v0.1.45 [INFO] [stderr] Compiling once_cell v1.18.0 [INFO] [stderr] Compiling num-bigint v0.4.4 [INFO] [stderr] Compiling matrixmultiply v0.3.7 [INFO] [stderr] Compiling libc v0.2.159 [INFO] [stderr] Checking rawpointer v0.2.1 [INFO] [stderr] Checking miniz_oxide v0.7.1 [INFO] [stderr] Compiling portable-atomic v1.4.3 [INFO] [stderr] Checking unicode-width v0.1.10 [INFO] [stderr] Compiling serde_json v1.0.105 [INFO] [stderr] Checking equivalent v1.0.1 [INFO] [stderr] Checking hashbrown v0.14.0 [INFO] [stderr] Checking number_prefix v0.4.0 [INFO] [stderr] Compiling indoc v2.0.3 [INFO] [stderr] Checking flate2 v1.0.27 [INFO] [stderr] Compiling quote v1.0.33 [INFO] [stderr] Checking num-complex v0.4.4 [INFO] [stderr] Compiling syn v2.0.32 [INFO] [stderr] Checking console v0.15.7 [INFO] [stderr] Checking ndarray v0.15.6 [INFO] [stderr] Checking indicatif v0.17.6 [INFO] [stderr] Compiling thiserror-impl v1.0.47 [INFO] [stderr] Compiling serde_derive v1.0.186 [INFO] [stderr] Checking pest v2.7.2 [INFO] [stderr] Checking zip v0.5.13 [INFO] [stderr] Compiling pest_meta v2.7.2 [INFO] [stderr] Compiling pest_generator v2.7.2 [INFO] [stderr] Compiling pest_derive v2.7.2 [INFO] [stderr] Checking py_literal v0.4.0 [INFO] [stderr] Checking ndarray-npy v0.8.1 [INFO] [stderr] Checking argh_shared v0.1.12 [INFO] [stderr] Checking indexmap v2.0.0 [INFO] [stderr] Compiling argh_derive v0.1.12 [INFO] [stderr] Checking argh v0.1.12 [INFO] [stderr] Checking hand_calculate v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:109:5 [INFO] [stdout] | [INFO] [stdout] 109 | return row * cols + col; [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] 109 - return row * cols + col; [INFO] [stdout] 109 + row * cols + col [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:118:5 [INFO] [stdout] | [INFO] [stdout] 118 | return (row, col); [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] 118 - return (row, col); [INFO] [stdout] 118 + (row, col) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:134:5 [INFO] [stdout] | [INFO] [stdout] 134 | return (dr.abs() + dc.abs()) as u32; [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] 134 - return (dr.abs() + dc.abs()) as u32; [INFO] [stdout] 134 + (dr.abs() + dc.abs()) as u32 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/main.rs:157:1 [INFO] [stdout] | [INFO] [stdout] 157 | / fn search_drainage( [INFO] [stdout] 158 | | start_index: u32, [INFO] [stdout] 159 | | data: &Arc>, [INFO] [stdout] 160 | | closest_drainage: &Arc>>, [INFO] [stdout] ... | [INFO] [stdout] 165 | | progress_bar: Arc>, [INFO] [stdout] 166 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/main.rs:185:15 [INFO] [stdout] | [INFO] [stdout] 185 | while stack.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!stack.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: this function has too many arguments (10/7) [INFO] [stdout] --> src/main.rs:244:1 [INFO] [stdout] | [INFO] [stdout] 244 | / fn dfs_recursive( [INFO] [stdout] 245 | | node_id: u32, [INFO] [stdout] 246 | | end: u32, [INFO] [stdout] 247 | | rows: u32, [INFO] [stdout] ... | [INFO] [stdout] 254 | | data: &Arc>, [INFO] [stdout] 255 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u32` which implements the `Copy` trait [INFO] [stdout] --> src/main.rs:256:18 [INFO] [stdout] | [INFO] [stdout] 256 | visited.push(node_id.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `node_id` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/main.rs:272:13 [INFO] [stdout] | [INFO] [stdout] 272 | / if (neighbor_id < &data_len) [INFO] [stdout] 273 | | && !visited.contains(neighbor_id) [INFO] [stdout] 274 | | && (path.len() < max_path_length) [INFO] [stdout] ... | [INFO] [stdout] 290 | | } [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] 274 ~ && (path.len() < max_path_length) [INFO] [stdout] 275 ~ && !path.contains(neighbor_id) { [INFO] [stdout] 276 | dfs_recursive( [INFO] [stdout] ... [INFO] [stdout] 287 | ); [INFO] [stdout] 288 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/main.rs:249:5 [INFO] [stdout] | [INFO] [stdout] 249 | threshold: f64, [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_threshold` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/main.rs:282:25 [INFO] [stdout] | [INFO] [stdout] 282 | threshold, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] = note: `#[warn(clippy::only_used_in_recursion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/main.rs:313:1 [INFO] [stdout] | [INFO] [stdout] 313 | / fn find_all_paths( [INFO] [stdout] 314 | | start: u32, [INFO] [stdout] 315 | | end: u32, [INFO] [stdout] 316 | | rows: u32, [INFO] [stdout] ... | [INFO] [stdout] 322 | | progress_bar: Arc>, [INFO] [stdout] 323 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/main.rs:352:5 [INFO] [stdout] | [INFO] [stdout] 352 | /// the shorter the path the better the candidate and the higher average accumulation the better [INFO] [stdout] | ^^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] = note: `#[warn(clippy::doc_overindented_list_items)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:416:9 [INFO] [stdout] | [INFO] [stdout] 416 | return (*filtered_paths[0].last().unwrap(),filtered_paths[0].clone(),mean_accum); [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] 416 - return (*filtered_paths[0].last().unwrap(),filtered_paths[0].clone(),mean_accum); [INFO] [stdout] 416 + (*filtered_paths[0].last().unwrap(),filtered_paths[0].clone(),mean_accum) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:437:9 [INFO] [stdout] | [INFO] [stdout] 437 | return (*filtered_paths[0].last().unwrap(),filtered_paths[0].clone(),mean_accum); [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] 437 - return (*filtered_paths[0].last().unwrap(),filtered_paths[0].clone(),mean_accum); [INFO] [stdout] 437 + (*filtered_paths[0].last().unwrap(),filtered_paths[0].clone(),mean_accum) [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:353:24 [INFO] [stdout] | [INFO] [stdout] 353 | fn select_paths(paths: &Vec>, data: &Vec>, alpha: f64) -> (u32,Vec,f64) { [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] 353 ~ fn select_paths(paths: &[Vec], data: &Vec>, alpha: f64) -> (u32,Vec,f64) { [INFO] [stdout] 354 | if paths.len() == 0 { [INFO] [stdout] ... [INFO] [stdout] 357 | [INFO] [stdout] 358 ~ let paths = paths.to_owned(); [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:353:46 [INFO] [stdout] | [INFO] [stdout] 353 | fn select_paths(paths: &Vec>, data: &Vec>, alpha: f64) -> (u32,Vec,f64) { [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] 353 - fn select_paths(paths: &Vec>, data: &Vec>, alpha: f64) -> (u32,Vec,f64) { [INFO] [stdout] 353 + fn select_paths(paths: &Vec>, data: &[RefCell], alpha: f64) -> (u32,Vec,f64) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/main.rs:354:8 [INFO] [stdout] | [INFO] [stdout] 354 | if paths.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `paths.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] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:424:27 [INFO] [stdout] | [INFO] [stdout] 424 | drainage2.cmp(&drainage1) [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `drainage1` [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: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:666:8 [INFO] [stdout] | [INFO] [stdout] 666 | if !fs::metadata(output_folder).is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `fs::metadata(output_folder).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: redundant closure [INFO] [stdout] --> src/main.rs:465:14 [INFO] [stdout] | [INFO] [stdout] 465 | .map(|item| RefCell::new(item)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `RefCell::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded cloning of iterator items [INFO] [stdout] --> src/main.rs:551:32 [INFO] [stdout] | [INFO] [stdout] 551 | let task_count: Vec = closest_drainage [INFO] [stdout] | ________________________________^ [INFO] [stdout] 552 | | .iter() [INFO] [stdout] 553 | | .cloned() [INFO] [stdout] 554 | | .map(|drain| drain.closest.len() as u64) [INFO] [stdout] | |________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_iter_cloned [INFO] [stdout] = note: `#[warn(clippy::redundant_iter_cloned)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 552 ~ .iter() [INFO] [stdout] 553 + .map(|drain| drain.closest.len() as u64) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/main.rs:577:16 [INFO] [stdout] | [INFO] [stdout] 577 | if end_nodes.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!end_nodes.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] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/main.rs:631:12 [INFO] [stdout] | [INFO] [stdout] 631 | if paths.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `paths.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] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:109:5 [INFO] [stdout] | [INFO] [stdout] 109 | return row * cols + col; [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] 109 - return row * cols + col; [INFO] [stdout] 109 + row * cols + col [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:118:5 [INFO] [stdout] | [INFO] [stdout] 118 | return (row, col); [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] 118 - return (row, col); [INFO] [stdout] 118 + (row, col) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:134:5 [INFO] [stdout] | [INFO] [stdout] 134 | return (dr.abs() + dc.abs()) as u32; [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] 134 - return (dr.abs() + dc.abs()) as u32; [INFO] [stdout] 134 + (dr.abs() + dc.abs()) as u32 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (8/7) [INFO] [stdout] --> src/main.rs:157:1 [INFO] [stdout] | [INFO] [stdout] 157 | / fn search_drainage( [INFO] [stdout] 158 | | start_index: u32, [INFO] [stdout] 159 | | data: &Arc>, [INFO] [stdout] 160 | | closest_drainage: &Arc>>, [INFO] [stdout] ... | [INFO] [stdout] 165 | | progress_bar: Arc>, [INFO] [stdout] 166 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] = note: `#[warn(clippy::too_many_arguments)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/main.rs:185:15 [INFO] [stdout] | [INFO] [stdout] 185 | while stack.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!stack.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: this function has too many arguments (10/7) [INFO] [stdout] --> src/main.rs:244:1 [INFO] [stdout] | [INFO] [stdout] 244 | / fn dfs_recursive( [INFO] [stdout] 245 | | node_id: u32, [INFO] [stdout] 246 | | end: u32, [INFO] [stdout] 247 | | rows: u32, [INFO] [stdout] ... | [INFO] [stdout] 254 | | data: &Arc>, [INFO] [stdout] 255 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u32` which implements the `Copy` trait [INFO] [stdout] --> src/main.rs:256:18 [INFO] [stdout] | [INFO] [stdout] 256 | visited.push(node_id.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: try removing the `clone` call: `node_id` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/main.rs:272:13 [INFO] [stdout] | [INFO] [stdout] 272 | / if (neighbor_id < &data_len) [INFO] [stdout] 273 | | && !visited.contains(neighbor_id) [INFO] [stdout] 274 | | && (path.len() < max_path_length) [INFO] [stdout] ... | [INFO] [stdout] 290 | | } [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] 274 ~ && (path.len() < max_path_length) [INFO] [stdout] 275 ~ && !path.contains(neighbor_id) { [INFO] [stdout] 276 | dfs_recursive( [INFO] [stdout] ... [INFO] [stdout] 287 | ); [INFO] [stdout] 288 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/main.rs:249:5 [INFO] [stdout] | [INFO] [stdout] 249 | threshold: f64, [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_threshold` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/main.rs:282:25 [INFO] [stdout] | [INFO] [stdout] 282 | threshold, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] = note: `#[warn(clippy::only_used_in_recursion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this function has too many arguments (9/7) [INFO] [stdout] --> src/main.rs:313:1 [INFO] [stdout] | [INFO] [stdout] 313 | / fn find_all_paths( [INFO] [stdout] 314 | | start: u32, [INFO] [stdout] 315 | | end: u32, [INFO] [stdout] 316 | | rows: u32, [INFO] [stdout] ... | [INFO] [stdout] 322 | | progress_bar: Arc>, [INFO] [stdout] 323 | | ) { [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: doc list item overindented [INFO] [stdout] --> src/main.rs:352:5 [INFO] [stdout] | [INFO] [stdout] 352 | /// the shorter the path the better the candidate and the higher average accumulation the better [INFO] [stdout] | ^^^^^^^^^^^^ help: try using ` ` (2 spaces) [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#doc_overindented_list_items [INFO] [stdout] = note: `#[warn(clippy::doc_overindented_list_items)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:416:9 [INFO] [stdout] | [INFO] [stdout] 416 | return (*filtered_paths[0].last().unwrap(),filtered_paths[0].clone(),mean_accum); [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] 416 - return (*filtered_paths[0].last().unwrap(),filtered_paths[0].clone(),mean_accum); [INFO] [stdout] 416 + (*filtered_paths[0].last().unwrap(),filtered_paths[0].clone(),mean_accum) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:437:9 [INFO] [stdout] | [INFO] [stdout] 437 | return (*filtered_paths[0].last().unwrap(),filtered_paths[0].clone(),mean_accum); [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] 437 - return (*filtered_paths[0].last().unwrap(),filtered_paths[0].clone(),mean_accum); [INFO] [stdout] 437 + (*filtered_paths[0].last().unwrap(),filtered_paths[0].clone(),mean_accum) [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:353:24 [INFO] [stdout] | [INFO] [stdout] 353 | fn select_paths(paths: &Vec>, data: &Vec>, alpha: f64) -> (u32,Vec,f64) { [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] 353 ~ fn select_paths(paths: &[Vec], data: &Vec>, alpha: f64) -> (u32,Vec,f64) { [INFO] [stdout] 354 | if paths.len() == 0 { [INFO] [stdout] ... [INFO] [stdout] 357 | [INFO] [stdout] 358 ~ let paths = paths.to_owned(); [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:353:46 [INFO] [stdout] | [INFO] [stdout] 353 | fn select_paths(paths: &Vec>, data: &Vec>, alpha: f64) -> (u32,Vec,f64) { [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] 353 - fn select_paths(paths: &Vec>, data: &Vec>, alpha: f64) -> (u32,Vec,f64) { [INFO] [stdout] 353 + fn select_paths(paths: &Vec>, data: &[RefCell], alpha: f64) -> (u32,Vec,f64) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/main.rs:354:8 [INFO] [stdout] | [INFO] [stdout] 354 | if paths.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `paths.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] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:424:27 [INFO] [stdout] | [INFO] [stdout] 424 | drainage2.cmp(&drainage1) [INFO] [stdout] | ^^^^^^^^^^ help: change this to: `drainage1` [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: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:666:8 [INFO] [stdout] | [INFO] [stdout] 666 | if !fs::metadata(output_folder).is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `fs::metadata(output_folder).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: redundant closure [INFO] [stdout] --> src/main.rs:465:14 [INFO] [stdout] | [INFO] [stdout] 465 | .map(|item| RefCell::new(item)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `RefCell::new` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded cloning of iterator items [INFO] [stdout] --> src/main.rs:551:32 [INFO] [stdout] | [INFO] [stdout] 551 | let task_count: Vec = closest_drainage [INFO] [stdout] | ________________________________^ [INFO] [stdout] 552 | | .iter() [INFO] [stdout] 553 | | .cloned() [INFO] [stdout] 554 | | .map(|drain| drain.closest.len() as u64) [INFO] [stdout] | |________________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_iter_cloned [INFO] [stdout] = note: `#[warn(clippy::redundant_iter_cloned)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 552 ~ .iter() [INFO] [stdout] 553 + .map(|drain| drain.closest.len() as u64) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/main.rs:577:16 [INFO] [stdout] | [INFO] [stdout] 577 | if end_nodes.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!end_nodes.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] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/main.rs:631:12 [INFO] [stdout] | [INFO] [stdout] 631 | if paths.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `paths.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] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 17.55s [INFO] running `Command { std: "docker" "inspect" "c50f38bf6a2d672bce32e4b89bb598c6fc0234c9656e9683db4556cd0a2497c4", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "c50f38bf6a2d672bce32e4b89bb598c6fc0234c9656e9683db4556cd0a2497c4", kill_on_drop: false }` [INFO] [stdout] c50f38bf6a2d672bce32e4b89bb598c6fc0234c9656e9683db4556cd0a2497c4