[INFO] fetching crate structures 1.1.0... [INFO] linting structures-1.1.0 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate structures 1.1.0 into /workspace/builds/worker-7-tc1/source [INFO] started tweaking crates.io crate structures 1.1.0 [INFO] finished tweaking crates.io crate structures 1.1.0 [INFO] tweaked toml for crates.io crate structures 1.1.0 written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate structures 1.1.0 on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Updating crates.io index [INFO] [stderr] Locking 42 packages to latest compatible versions [INFO] [stderr] Adding rand v0.8.5 (available: v0.10.0) [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded len-trait v0.6.1 [INFO] [stderr] Downloaded str-macro v1.0.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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] 1908487cdaa67ce8609ccca0cd62a322ffdd2e835ef9c12aa9a50645ad8b9a44 [INFO] running `Command { std: "docker" "start" "-a" "1908487cdaa67ce8609ccca0cd62a322ffdd2e835ef9c12aa9a50645ad8b9a44", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "1908487cdaa67ce8609ccca0cd62a322ffdd2e835ef9c12aa9a50645ad8b9a44", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "1908487cdaa67ce8609ccca0cd62a322ffdd2e835ef9c12aa9a50645ad8b9a44", kill_on_drop: false }` [INFO] [stdout] 1908487cdaa67ce8609ccca0cd62a322ffdd2e835ef9c12aa9a50645ad8b9a44 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-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] 7f3fcc46afa91e068c8e72c2d745645bf397735a1992bfa78e367ebd3b9e6be2 [INFO] running `Command { std: "docker" "start" "-a" "7f3fcc46afa91e068c8e72c2d745645bf397735a1992bfa78e367ebd3b9e6be2", kill_on_drop: false }` [INFO] [stderr] Checking cfg-if v0.1.10 [INFO] [stderr] Checking str-macro v1.0.1 [INFO] [stderr] Checking len-trait v0.6.1 [INFO] [stderr] Checking structures v1.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/collection.rs:23:33 [INFO] [stdout] | [INFO] [stdout] 23 | fn contains_all(&self, vec: &Vec) -> bool; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Self::Element]` [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] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/array/list/vector.rs:231:28 [INFO] [stdout] | [INFO] [stdout] 231 | vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] = note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 231 - vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] 231 + vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or(Ordering::Less)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/array/list/vector.rs:241:28 [INFO] [stdout] | [INFO] [stdout] 241 | vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 241 - vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] 241 + vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or(Ordering::Less)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/array/list/vector.rs:269:18 [INFO] [stdout] | [INFO] [stdout] 269 | for i in 0..vec.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 269 - for i in 0..vec.len() { [INFO] [stdout] 269 + for in &vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Iterator::find` [INFO] [stdout] --> src/array/list/vector.rs:319:9 [INFO] [stdout] | [INFO] [stdout] 319 | / for i in 0..self.arr.len() { [INFO] [stdout] 320 | | if self.arr[i] == *item { [INFO] [stdout] 321 | | return Some(i); [INFO] [stdout] ... | [INFO] [stdout] 325 | | None [INFO] [stdout] | |____________^ help: replace with an iterator: `(0..self.arr.len()).find(|&i| self.arr[i] == *item)` [INFO] [stdout] | [INFO] [stdout] = note: you may need to dereference some variables [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_find [INFO] [stdout] = note: `#[warn(clippy::manual_find)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Iterator::find` [INFO] [stdout] --> src/array/list/vector.rs:332:9 [INFO] [stdout] | [INFO] [stdout] 332 | / for i in (0..self.arr.len()).rev() { [INFO] [stdout] 333 | | if self.arr[i] == *item { [INFO] [stdout] 334 | | return Some(i); [INFO] [stdout] ... | [INFO] [stdout] 339 | | None [INFO] [stdout] | |____________^ help: replace with an iterator: `(0..self.arr.len()).rev().find(|&i| self.arr[i] == *item)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_find [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/array/list/vector.rs:359:17 [INFO] [stdout] | [INFO] [stdout] 359 | return Some(ret); [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] 359 - return Some(ret); [INFO] [stdout] 359 + Some(ret) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/array/list/vector.rs:362:21 [INFO] [stdout] | [INFO] [stdout] 362 | None => return None, [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] 362 - None => return None, [INFO] [stdout] 362 + None => None, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `n` is used as a loop counter [INFO] [stdout] --> src/array/list/vector.rs:432:9 [INFO] [stdout] | [INFO] [stdout] 432 | for i in vec.into_iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (n, i) in vec.into_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: the variable `n` is used as a loop counter [INFO] [stdout] --> src/array/list/vector.rs:452:9 [INFO] [stdout] | [INFO] [stdout] 452 | for i in vec.into_iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (n, i) in vec.into_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] [INFO] [stdout] [INFO] [stdout] warning: this operation has no effect [INFO] [stdout] --> src/array/list/vector.rs:453:29 [INFO] [stdout] | [INFO] [stdout] 453 | self.arr.insert(0 + n, i); [INFO] [stdout] | ^^^^^ help: consider reducing it to: `n` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stdout] = note: `#[warn(clippy::identity_op)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/array/list/vector.rs:468:17 [INFO] [stdout] | [INFO] [stdout] 468 | return true; [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] 468 - return true; [INFO] [stdout] 468 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/array/list/vector.rs:470:21 [INFO] [stdout] | [INFO] [stdout] 470 | None => return 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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 470 - None => return false, [INFO] [stdout] 470 + None => false, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/array/list/vector.rs:511:17 [INFO] [stdout] | [INFO] [stdout] 511 | return true; [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] 511 - return true; [INFO] [stdout] 511 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/array/list/vector.rs:513:21 [INFO] [stdout] | [INFO] [stdout] 513 | None => return 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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 513 - None => return false, [INFO] [stdout] 513 + None => false, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/array/list/vector.rs:523:21 [INFO] [stdout] | [INFO] [stdout] 523 | / if !vec.contains(item) { [INFO] [stdout] 524 | | self.arr.remove(i); [INFO] [stdout] 525 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 522 ~ Some(item) [INFO] [stdout] 523 ~ if !vec.contains(item) => { [INFO] [stdout] 524 | self.arr.remove(i); [INFO] [stdout] 525 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/array/list/vector.rs:521:13 [INFO] [stdout] | [INFO] [stdout] 521 | / match self.arr.get(i) { [INFO] [stdout] 522 | | Some(item) => { [INFO] [stdout] 523 | | if !vec.contains(item) { [INFO] [stdout] 524 | | self.arr.remove(i); [INFO] [stdout] ... | [INFO] [stdout] 527 | | None => (), [INFO] [stdout] 528 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 521 ~ if let Some(item) = self.arr.get(i) { [INFO] [stdout] 522 + if !vec.contains(item) { [INFO] [stdout] 523 + self.arr.remove(i); [INFO] [stdout] 524 + } [INFO] [stdout] 525 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Vector` [INFO] [stdout] --> src/array/list/vector.rs:591:5 [INFO] [stdout] | [INFO] [stdout] 591 | / pub fn new() -> Self { [INFO] [stdout] 592 | | Vector { arr: Vec::new() } [INFO] [stdout] 593 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 571 + impl Default for Vector [INFO] [stdout] 572 + where [INFO] [stdout] 573 + T: PartialEq + Clone + Debug, [INFO] [stdout] 574 + { [INFO] [stdout] 575 + fn default() -> Self { [INFO] [stdout] 576 + Self::new() [INFO] [stdout] 577 + } [INFO] [stdout] 578 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `vec` [INFO] [stdout] --> src/array/list/vector.rs:585:18 [INFO] [stdout] | [INFO] [stdout] 585 | for i in 0..self.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 585 - for i in 0..self.len() { [INFO] [stdout] 585 + for (i, ) in vec.iter().enumerate().take(self.len()) { [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/array/list/vector.rs:597:24 [INFO] [stdout] | [INFO] [stdout] 597 | pub fn from_vec(v: &Vec) -> Self { [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] 597 ~ pub fn from_vec(v: &[T]) -> Self { [INFO] [stdout] 598 ~ Vector { arr: v.to_owned() } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/array/list.rs:250:28 [INFO] [stdout] | [INFO] [stdout] 250 | vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 250 - vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] 250 + vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or(Ordering::Less)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/array/list.rs:260:28 [INFO] [stdout] | [INFO] [stdout] 260 | vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 260 - vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] 260 + vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or(Ordering::Less)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/array/list.rs:284:18 [INFO] [stdout] | [INFO] [stdout] 284 | for i in 0..vec.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 284 - for i in 0..vec.len() { [INFO] [stdout] 284 + for in &vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Iterator::find` [INFO] [stdout] --> src/array/list.rs:330:9 [INFO] [stdout] | [INFO] [stdout] 330 | / for i in 0..self.arr.len() { [INFO] [stdout] 331 | | if self.arr[i] == *item { [INFO] [stdout] 332 | | return Some(i); [INFO] [stdout] ... | [INFO] [stdout] 337 | | None [INFO] [stdout] | |____________^ help: replace with an iterator: `(0..self.arr.len()).find(|&i| self.arr[i] == *item)` [INFO] [stdout] | [INFO] [stdout] = note: you may need to dereference some variables [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_find [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Iterator::find` [INFO] [stdout] --> src/array/list.rs:344:9 [INFO] [stdout] | [INFO] [stdout] 344 | / for i in (0..self.arr.len()).rev() { [INFO] [stdout] 345 | | if self.arr[i] == *item { [INFO] [stdout] 346 | | return Some(i); [INFO] [stdout] ... | [INFO] [stdout] 351 | | None [INFO] [stdout] | |____________^ help: replace with an iterator: `(0..self.arr.len()).rev().find(|&i| self.arr[i] == *item)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_find [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/array/list.rs:371:17 [INFO] [stdout] | [INFO] [stdout] 371 | return Some(ret); [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] 371 - return Some(ret); [INFO] [stdout] 371 + Some(ret) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/array/list.rs:374:21 [INFO] [stdout] | [INFO] [stdout] 374 | None => return None, [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] 374 - None => return None, [INFO] [stdout] 374 + None => None, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `n` is used as a loop counter [INFO] [stdout] --> src/array/list.rs:448:9 [INFO] [stdout] | [INFO] [stdout] 448 | for i in vec.into_iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (n, i) in vec.into_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] [INFO] [stdout] [INFO] [stdout] warning: the variable `n` is used as a loop counter [INFO] [stdout] --> src/array/list.rs:470:9 [INFO] [stdout] | [INFO] [stdout] 470 | for i in vec.into_iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (n, i) in vec.into_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] [INFO] [stdout] [INFO] [stdout] warning: this operation has no effect [INFO] [stdout] --> src/array/list.rs:471:29 [INFO] [stdout] | [INFO] [stdout] 471 | self.arr.insert(0 + n, i); [INFO] [stdout] | ^^^^^ help: consider reducing it to: `n` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/array/list.rs:489:17 [INFO] [stdout] | [INFO] [stdout] 489 | return true; [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] 489 - return true; [INFO] [stdout] 489 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/array/list.rs:491:21 [INFO] [stdout] | [INFO] [stdout] 491 | None => return 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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 491 - None => return false, [INFO] [stdout] 491 + None => false, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/array/list.rs:534:17 [INFO] [stdout] | [INFO] [stdout] 534 | return true; [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] 534 - return true; [INFO] [stdout] 534 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/array/list.rs:536:21 [INFO] [stdout] | [INFO] [stdout] 536 | None => return 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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 536 - None => return false, [INFO] [stdout] 536 + None => false, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/array/list.rs:546:21 [INFO] [stdout] | [INFO] [stdout] 546 | / if !vec.contains(item) { [INFO] [stdout] 547 | | self.arr.remove(i); [INFO] [stdout] 548 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 545 ~ Some(item) [INFO] [stdout] 546 ~ if !vec.contains(item) => { [INFO] [stdout] 547 | self.arr.remove(i); [INFO] [stdout] 548 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/array/list.rs:544:13 [INFO] [stdout] | [INFO] [stdout] 544 | / match self.arr.get(i) { [INFO] [stdout] 545 | | Some(item) => { [INFO] [stdout] 546 | | if !vec.contains(item) { [INFO] [stdout] 547 | | self.arr.remove(i); [INFO] [stdout] ... | [INFO] [stdout] 550 | | None => (), [INFO] [stdout] 551 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 544 ~ if let Some(item) = self.arr.get(i) { [INFO] [stdout] 545 + if !vec.contains(item) { [INFO] [stdout] 546 + self.arr.remove(i); [INFO] [stdout] 547 + } [INFO] [stdout] 548 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `List` [INFO] [stdout] --> src/array/list.rs:581:5 [INFO] [stdout] | [INFO] [stdout] 581 | pub fn new() -> Self { List { arr: Vec::new() } } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 561 + impl Default for List [INFO] [stdout] 562 + where [INFO] [stdout] 563 + T: PartialEq + Clone + Debug, [INFO] [stdout] 564 + { [INFO] [stdout] 565 + fn default() -> Self { [INFO] [stdout] 566 + Self::new() [INFO] [stdout] 567 + } [INFO] [stdout] 568 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `vec` [INFO] [stdout] --> src/array/list.rs:575:18 [INFO] [stdout] | [INFO] [stdout] 575 | for i in 0..self.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 575 - for i in 0..self.len() { [INFO] [stdout] 575 + for (i, ) in vec.iter().enumerate().take(self.len()) { [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/array/list.rs:585:24 [INFO] [stdout] | [INFO] [stdout] 585 | pub fn from_vec(v: &Vec) -> Self { List { arr: v.clone() } } [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] 585 - pub fn from_vec(v: &Vec) -> Self { List { arr: v.clone() } } [INFO] [stdout] 585 + pub fn from_vec(v: &[T]) -> Self { List { arr: v.to_owned() } } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `[T; N]` which implements the `Copy` trait [INFO] [stdout] --> src/array.rs:82:22 [INFO] [stdout] | [INFO] [stdout] 82 | Array { arr: self.arr.clone() } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.arr` [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: unnecessary use of `to_vec` [INFO] [stdout] --> src/array.rs:156:44 [INFO] [stdout] | [INFO] [stdout] 156 | fn into_iter(self) -> Self::IntoIter { self.arr.to_vec().into_iter() } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `self.arr.iter().copied()` [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 closure used to substitute value for `Option::None` [INFO] [stdout] --> src/array.rs:245:28 [INFO] [stdout] | [INFO] [stdout] 245 | vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 245 - vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] 245 + vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or(Ordering::Less)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/array.rs:255:28 [INFO] [stdout] | [INFO] [stdout] 255 | vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 255 - vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] 255 + vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or(Ordering::Less)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/array.rs:283:18 [INFO] [stdout] | [INFO] [stdout] 283 | for i in 0..vec.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 283 - for i in 0..vec.len() { [INFO] [stdout] 283 + for in &vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Iterator::find` [INFO] [stdout] --> src/array.rs:333:9 [INFO] [stdout] | [INFO] [stdout] 333 | / for i in 0..self.arr.len() { [INFO] [stdout] 334 | | if self.arr[i] == *item { [INFO] [stdout] 335 | | return Some(i); [INFO] [stdout] ... | [INFO] [stdout] 340 | | None [INFO] [stdout] | |____________^ help: replace with an iterator: `(0..self.arr.len()).find(|&i| self.arr[i] == *item)` [INFO] [stdout] | [INFO] [stdout] = note: you may need to dereference some variables [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_find [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Iterator::find` [INFO] [stdout] --> src/array.rs:347:9 [INFO] [stdout] | [INFO] [stdout] 347 | / for i in (0..self.arr.len()).rev() { [INFO] [stdout] 348 | | if self.arr[i] == *item { [INFO] [stdout] 349 | | return Some(i); [INFO] [stdout] ... | [INFO] [stdout] 354 | | None [INFO] [stdout] | |____________^ help: replace with an iterator: `(0..self.arr.len()).rev().find(|&i| self.arr[i] == *item)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_find [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/array.rs:374:17 [INFO] [stdout] | [INFO] [stdout] 374 | return Some(ret); [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] 374 - return Some(ret); [INFO] [stdout] 374 + Some(ret) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/array.rs:377:21 [INFO] [stdout] | [INFO] [stdout] 377 | None => return None, [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] 377 - None => return None, [INFO] [stdout] 377 + None => None, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `T` which implements the `Copy` trait [INFO] [stdout] --> src/array.rs:372:27 [INFO] [stdout] | [INFO] [stdout] 372 | let ret = i.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*i` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Array` [INFO] [stdout] --> src/array.rs:422:5 [INFO] [stdout] | [INFO] [stdout] 422 | / pub fn new() -> Self { [INFO] [stdout] 423 | | Array { arr: [T::default(); N] } [INFO] [stdout] 424 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 400 + impl Default for Array [INFO] [stdout] 401 + where [INFO] [stdout] 402 + T: PartialEq + Clone + Default + Copy + Debug, [INFO] [stdout] 403 + { [INFO] [stdout] 404 + fn default() -> Self { [INFO] [stdout] 405 + Self::new() [INFO] [stdout] 406 + } [INFO] [stdout] 407 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `vec` [INFO] [stdout] --> src/array.rs:416:18 [INFO] [stdout] | [INFO] [stdout] 416 | for i in 0..self.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 416 - for i in 0..self.len() { [INFO] [stdout] 416 + for (i, ) in vec.iter().enumerate().take(self.len()) { [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/array.rs:429:24 [INFO] [stdout] | [INFO] [stdout] 429 | pub fn from_vec(v: &Vec) -> Self { [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] 429 - pub fn from_vec(v: &Vec) -> Self { [INFO] [stdout] 429 + pub fn from_vec(v: &[T]) -> Self { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `T` which implements the `Copy` trait [INFO] [stdout] --> src/array.rs:435:32 [INFO] [stdout] | [INFO] [stdout] 435 | array.arr[i] = v[i].clone(); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `v[i]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/queue/deque.rs:187:18 [INFO] [stdout] | [INFO] [stdout] 187 | for i in 0..vec.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 187 - for i in 0..vec.len() { [INFO] [stdout] 187 + for in &vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Deque` [INFO] [stdout] --> src/queue/deque.rs:282:5 [INFO] [stdout] | [INFO] [stdout] 282 | / pub fn new() -> Self { [INFO] [stdout] 283 | | Deque { deq: VecDeque::with_capacity(DEF_DEQUE_CAPACITY) } [INFO] [stdout] 284 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 277 + impl Default for Deque [INFO] [stdout] 278 + where [INFO] [stdout] 279 + T: PartialEq + PartialOrd + Clone + Debug, [INFO] [stdout] 280 + { [INFO] [stdout] 281 + fn default() -> Self { [INFO] [stdout] 282 + Self::new() [INFO] [stdout] 283 + } [INFO] [stdout] 284 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/queue/deque.rs:291:20 [INFO] [stdout] | [INFO] [stdout] 291 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] = note: `#[warn(clippy::into_iter_on_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/queue.rs:191:18 [INFO] [stdout] | [INFO] [stdout] 191 | for i in 0..vec.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 191 - for i in 0..vec.len() { [INFO] [stdout] 191 + for in &vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Queue` [INFO] [stdout] --> src/queue.rs:245:5 [INFO] [stdout] | [INFO] [stdout] 245 | / pub fn new() -> Self { [INFO] [stdout] 246 | | Queue { deq: VecDeque::with_capacity(DEF_QUEUE_CAPACITY) } [INFO] [stdout] 247 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 240 + impl Default for Queue [INFO] [stdout] 241 + where [INFO] [stdout] 242 + T: PartialEq + PartialOrd + Clone + Debug, [INFO] [stdout] 243 + { [INFO] [stdout] 244 + fn default() -> Self { [INFO] [stdout] 245 + Self::new() [INFO] [stdout] 246 + } [INFO] [stdout] 247 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/queue.rs:254:20 [INFO] [stdout] | [INFO] [stdout] 254 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/stack.rs:171:18 [INFO] [stdout] | [INFO] [stdout] 171 | for i in 0..vec.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 171 - for i in 0..vec.len() { [INFO] [stdout] 171 + for in &vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Stack` [INFO] [stdout] --> src/stack.rs:222:5 [INFO] [stdout] | [INFO] [stdout] 222 | / pub fn new() -> Self { [INFO] [stdout] 223 | | Stack { deq: VecDeque::with_capacity(DEF_STACK_CAPACITY) } [INFO] [stdout] 224 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 217 + impl Default for Stack [INFO] [stdout] 218 + where [INFO] [stdout] 219 + T: PartialEq + PartialOrd + Clone + Debug, [INFO] [stdout] 220 + { [INFO] [stdout] 221 + fn default() -> Self { [INFO] [stdout] 222 + Self::new() [INFO] [stdout] 223 + } [INFO] [stdout] 224 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/stack.rs:231:20 [INFO] [stdout] | [INFO] [stdout] 231 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/set.rs:181:18 [INFO] [stdout] | [INFO] [stdout] 181 | for i in 0..vec.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 181 - for i in 0..vec.len() { [INFO] [stdout] 181 + for in &vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/set.rs:268:21 [INFO] [stdout] | [INFO] [stdout] 268 | / if !vec.contains(item) { [INFO] [stdout] 269 | | self.arr.remove(i); [INFO] [stdout] 270 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 267 ~ Some(item) [INFO] [stdout] 268 ~ if !vec.contains(item) => { [INFO] [stdout] 269 | self.arr.remove(i); [INFO] [stdout] 270 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/set.rs:266:13 [INFO] [stdout] | [INFO] [stdout] 266 | / match self.arr.get(i) { [INFO] [stdout] 267 | | Some(item) => { [INFO] [stdout] 268 | | if !vec.contains(item) { [INFO] [stdout] 269 | | self.arr.remove(i); [INFO] [stdout] ... | [INFO] [stdout] 272 | | None => (), [INFO] [stdout] 273 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 266 ~ if let Some(item) = self.arr.get(i) { [INFO] [stdout] 267 + if !vec.contains(item) { [INFO] [stdout] 268 + self.arr.remove(i); [INFO] [stdout] 269 + } [INFO] [stdout] 270 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Set` [INFO] [stdout] --> src/set.rs:287:5 [INFO] [stdout] | [INFO] [stdout] 287 | / pub fn new() -> Self { [INFO] [stdout] 288 | | Set { [INFO] [stdout] 289 | | arr: Vec::new(), [INFO] [stdout] 290 | | not: false, [INFO] [stdout] 291 | | } [INFO] [stdout] 292 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 281 + impl Default for Set [INFO] [stdout] 282 + where [INFO] [stdout] 283 + T: PartialEq + Clone + Debug, [INFO] [stdout] 284 + { [INFO] [stdout] 285 + fn default() -> Self { [INFO] [stdout] 286 + Self::new() [INFO] [stdout] 287 + } [INFO] [stdout] 288 + } [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/set.rs:307:24 [INFO] [stdout] | [INFO] [stdout] 307 | pub fn from_vec(v: &Vec) -> Self { [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] 307 ~ pub fn from_vec(v: &[T]) -> Self { [INFO] [stdout] 308 | Set { [INFO] [stdout] 309 ~ arr: v.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/set.rs:319:28 [INFO] [stdout] | [INFO] [stdout] 319 | pub fn not_from_vec(v: &Vec) -> Self { [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] 319 ~ pub fn not_from_vec(v: &[T]) -> Self { [INFO] [stdout] 320 | Set { [INFO] [stdout] 321 ~ arr: v.to_owned(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `va` [INFO] [stdout] --> src/set.rs:364:22 [INFO] [stdout] | [INFO] [stdout] 364 | for i in 0..va.len() { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 364 - for i in 0..va.len() { [INFO] [stdout] 364 + for in &va { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vb` [INFO] [stdout] --> src/set.rs:369:22 [INFO] [stdout] | [INFO] [stdout] 369 | for i in 0..vb.len() { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 369 - for i in 0..vb.len() { [INFO] [stdout] 369 + for in &vb { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vb` [INFO] [stdout] --> src/set.rs:376:22 [INFO] [stdout] | [INFO] [stdout] 376 | for i in 0..vb.len() { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 376 - for i in 0..vb.len() { [INFO] [stdout] 376 + for in &vb { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `va` [INFO] [stdout] --> src/set.rs:381:22 [INFO] [stdout] | [INFO] [stdout] 381 | for i in 0..va.len() { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 381 - for i in 0..va.len() { [INFO] [stdout] 381 + for in &va { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/set.rs:414:33 [INFO] [stdout] | [INFO] [stdout] 414 | if set.not && a.not { [INFO] [stdout] | _________________________________^ [INFO] [stdout] 415 | | set.add(i); [INFO] [stdout] 416 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/set.rs:418:30 [INFO] [stdout] | [INFO] [stdout] 418 | else if !set.not { [INFO] [stdout] | ______________________________^ [INFO] [stdout] 419 | | set.add(i); [INFO] [stdout] 420 | | } [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: this `if` has identical blocks [INFO] [stdout] --> src/set.rs:462:37 [INFO] [stdout] | [INFO] [stdout] 462 | else if a.not && !b.not { [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 463 | | if b.contains(&i) { [INFO] [stdout] 464 | | set.add(i); [INFO] [stdout] 465 | | } [INFO] [stdout] 466 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/set.rs:469:37 [INFO] [stdout] | [INFO] [stdout] 469 | else if !a.not && b.not { [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 470 | | if b.contains(&i) { [INFO] [stdout] 471 | | set.add(i); [INFO] [stdout] 472 | | } [INFO] [stdout] 473 | | } [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] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/set.rs:469:18 [INFO] [stdout] | [INFO] [stdout] 469 | else if !a.not && b.not { [INFO] [stdout] | __________________^ [INFO] [stdout] 470 | | if b.contains(&i) { [INFO] [stdout] 471 | | set.add(i); [INFO] [stdout] 472 | | } [INFO] [stdout] 473 | | } [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] 469 ~ else if !a.not && b.not [INFO] [stdout] 470 ~ && b.contains(&i) { [INFO] [stdout] 471 | set.add(i); [INFO] [stdout] 472 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/set.rs:631:18 [INFO] [stdout] | [INFO] [stdout] 631 | for i in 0..vec.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 631 - for i in 0..vec.len() { [INFO] [stdout] 631 + for in &vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `HashSet` [INFO] [stdout] --> src/set.rs:731:5 [INFO] [stdout] | [INFO] [stdout] 731 | pub fn new() -> Self { HashSet { set: std::collections::HashSet::new() } } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 725 + impl Default for HashSet [INFO] [stdout] 726 + where [INFO] [stdout] 727 + T: PartialEq + Clone + Debug + Eq + Hash, [INFO] [stdout] 728 + { [INFO] [stdout] 729 + fn default() -> Self { [INFO] [stdout] 730 + Self::new() [INFO] [stdout] 731 + } [INFO] [stdout] 732 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/set.rs:738:20 [INFO] [stdout] | [INFO] [stdout] 738 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `TreeTraverser` [INFO] [stdout] --> src/map/traversable/tree.rs:248:5 [INFO] [stdout] | [INFO] [stdout] 248 | / pub fn new() -> Self { [INFO] [stdout] 249 | | TreeTraverser { [INFO] [stdout] 250 | | mode: TreeTraversalMode::Inorder, [INFO] [stdout] 251 | | trav: DoublyLinkedListTraverser::new(), [INFO] [stdout] ... | [INFO] [stdout] 254 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 241 + impl Default for TreeTraverser [INFO] [stdout] 242 + where [INFO] [stdout] 243 + K: PartialEq + PartialOrd + Clone + Debug + Eq + Hash, [INFO] [stdout] 244 + V: PartialEq + PartialOrd + Clone + Debug, [INFO] [stdout] 245 + { [INFO] [stdout] 246 + fn default() -> Self { [INFO] [stdout] 247 + Self::new() [INFO] [stdout] 248 + } [INFO] [stdout] 249 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:259:9 [INFO] [stdout] | [INFO] [stdout] 259 | let curr: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `curr` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 259 ~ [INFO] [stdout] 260 | [INFO] [stdout] 261 ~ let curr: Node = if node == self.tree.root.clone().unwrap().pair.key { [INFO] [stdout] 262 ~ self.tree.root.clone().unwrap().clone() [INFO] [stdout] 263 | } [INFO] [stdout] 264 | else { [INFO] [stdout] 265 ~ self.tree.nodes[node.clone()].clone() [INFO] [stdout] 266 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:306:9 [INFO] [stdout] | [INFO] [stdout] 306 | let curr: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `curr` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 306 ~ [INFO] [stdout] 307 | [INFO] [stdout] 308 ~ let curr: Node = if node == self.tree.root.clone().unwrap().pair.key { [INFO] [stdout] 309 ~ self.tree.root.clone().unwrap().clone() [INFO] [stdout] 310 | } [INFO] [stdout] 311 | else { [INFO] [stdout] 312 ~ self.tree.nodes[node.clone()].clone() [INFO] [stdout] 313 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:333:9 [INFO] [stdout] | [INFO] [stdout] 333 | let curr: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `curr` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 333 ~ [INFO] [stdout] 334 | [INFO] [stdout] 335 ~ let curr: Node = if node == self.tree.root.clone().unwrap().pair.key { [INFO] [stdout] 336 ~ self.tree.root.clone().unwrap().clone() [INFO] [stdout] 337 | } [INFO] [stdout] 338 | else { [INFO] [stdout] 339 ~ self.tree.nodes[node.clone()].clone() [INFO] [stdout] 340 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:356:9 [INFO] [stdout] | [INFO] [stdout] 356 | let curr: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `curr` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 356 ~ [INFO] [stdout] 357 | [INFO] [stdout] 358 ~ let curr: Node = if node == self.tree.root.clone().unwrap().pair.key { [INFO] [stdout] 359 ~ self.tree.root.clone().unwrap().clone() [INFO] [stdout] 360 | } [INFO] [stdout] 361 | else { [INFO] [stdout] 362 ~ self.tree.nodes[node.clone()].clone() [INFO] [stdout] 363 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `self.root` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:578:39 [INFO] [stdout] | [INFO] [stdout] 577 | if self.root.is_some() { [INFO] [stdout] | ---------------------- help: try: `if let Some() = self.root` [INFO] [stdout] 578 | t.inorder_rec(&mut order, self.root.unwrap().pair.key.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/map/traversable/tree.rs:662:18 [INFO] [stdout] | [INFO] [stdout] 662 | for i in 0..vec.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 662 - for i in 0..vec.len() { [INFO] [stdout] 662 + for in &vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/map/traversable/tree.rs:674:22 [INFO] [stdout] | [INFO] [stdout] 674 | for i in vec.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/map/traversable/tree.rs:722:9 [INFO] [stdout] | [INFO] [stdout] 722 | !self.root.is_none() && (self.root.clone().unwrap().pair.key == key || self.nodes.exists(key)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `self.root.is_some()` [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: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:746:26 [INFO] [stdout] | [INFO] [stdout] 745 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] 746 | return Some(&node.unwrap().pair.value); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/map/traversable/tree.rs:729:9 [INFO] [stdout] | [INFO] [stdout] 729 | / if self.root.is_none() { [INFO] [stdout] 730 | | return None; [INFO] [stdout] 731 | | } [INFO] [stdout] | |_________^ help: replace it with: `self.root.as_ref()?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:829:17 [INFO] [stdout] | [INFO] [stdout] 829 | / match &mut self.root { [INFO] [stdout] 830 | | Some(ref mut r) => { [INFO] [stdout] 831 | | for i in (1..r.links.len()).rev() { [INFO] [stdout] 832 | | match &r.links[i] { [INFO] [stdout] ... | [INFO] [stdout] 842 | | None => {}, [INFO] [stdout] 843 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 829 ~ if let Some(ref mut r) = &mut self.root { [INFO] [stdout] 830 + for i in (1..r.links.len()).rev() { [INFO] [stdout] 831 + match &r.links[i] { [INFO] [stdout] 832 + Some(link) => { [INFO] [stdout] 833 + if *link == node { [INFO] [stdout] 834 + r.links.remove(i); [INFO] [stdout] 835 + } [INFO] [stdout] 836 + }, [INFO] [stdout] 837 + None => {}, [INFO] [stdout] 838 + } [INFO] [stdout] 839 + } [INFO] [stdout] 840 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/map/traversable/tree.rs:834:37 [INFO] [stdout] | [INFO] [stdout] 834 | / ... if *link == node { [INFO] [stdout] 835 | | ... r.links.remove(i); [INFO] [stdout] 836 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 833 ~ Some(link) [INFO] [stdout] 834 ~ if *link == node => { [INFO] [stdout] 835 | r.links.remove(i); [INFO] [stdout] 836 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:832:29 [INFO] [stdout] | [INFO] [stdout] 832 | / ... match &r.links[i] { [INFO] [stdout] 833 | | ... Some(link) => { [INFO] [stdout] 834 | | ... if *link == node { [INFO] [stdout] 835 | | ... r.links.remove(i); [INFO] [stdout] ... | [INFO] [stdout] 838 | | ... None => {}, [INFO] [stdout] 839 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 832 ~ if let Some(link) = &r.links[i] { [INFO] [stdout] 833 + if *link == node { [INFO] [stdout] 834 + r.links.remove(i); [INFO] [stdout] 835 + } [INFO] [stdout] 836 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/map/traversable/tree.rs:850:33 [INFO] [stdout] | [INFO] [stdout] 850 | / ... if *link == node { [INFO] [stdout] 851 | | ... self.nodes[i.key.clone()].links.remove(j); [INFO] [stdout] 852 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 849 ~ Some(link) [INFO] [stdout] 850 ~ if *link == node => { [INFO] [stdout] 851 | self.nodes[i.key.clone()].links.remove(j); [INFO] [stdout] 852 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:848:25 [INFO] [stdout] | [INFO] [stdout] 848 | / match &self.nodes[i.key.clone()].links[j] { [INFO] [stdout] 849 | | Some(link) => { [INFO] [stdout] 850 | | if *link == node { [INFO] [stdout] 851 | | self.nodes[i.key.clone()].links.remove(j); [INFO] [stdout] ... | [INFO] [stdout] 854 | | None => {}, [INFO] [stdout] 855 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 848 ~ if let Some(link) = &self.nodes[i.key.clone()].links[j] { [INFO] [stdout] 849 + if *link == node { [INFO] [stdout] 850 + self.nodes[i.key.clone()].links.remove(j); [INFO] [stdout] 851 + } [INFO] [stdout] 852 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:878:13 [INFO] [stdout] | [INFO] [stdout] 878 | / match &mut self.root { [INFO] [stdout] 879 | | Some(ref mut r) => r.pair.value = pair.value, [INFO] [stdout] 880 | | None => {}, [INFO] [stdout] 881 | | } [INFO] [stdout] | |_____________^ help: try: `if let Some(ref mut r) = &mut self.root { r.pair.value = pair.value }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:940:9 [INFO] [stdout] | [INFO] [stdout] 940 | return diameter as f32 [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] 940 - return diameter as f32 [INFO] [stdout] 940 + diameter as f32 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:948:9 [INFO] [stdout] | [INFO] [stdout] 948 | / match &self.root { [INFO] [stdout] 949 | | Some(r) => { [INFO] [stdout] 950 | | for i in 1..r.links.len() { [INFO] [stdout] 951 | | vec.push(Edge { [INFO] [stdout] ... | [INFO] [stdout] 958 | | None => {}, [INFO] [stdout] 959 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 948 ~ if let Some(r) = &self.root { [INFO] [stdout] 949 + for i in 1..r.links.len() { [INFO] [stdout] 950 + vec.push(Edge { [INFO] [stdout] 951 + node_a: r.pair.key.clone(), [INFO] [stdout] 952 + node_b: r.links[i].clone().unwrap().clone(), [INFO] [stdout] 953 + weight: 1.0, [INFO] [stdout] 954 + }); [INFO] [stdout] 955 + } [INFO] [stdout] 956 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/map/traversable/tree.rs:1022:20 [INFO] [stdout] | [INFO] [stdout] 1022 | if !self.root.clone().unwrap().links[i].is_none() && [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.root.clone().unwrap().links[i].is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:1035:25 [INFO] [stdout] | [INFO] [stdout] 1033 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] 1034 | // If any of that node's children or its parent match key b, return true. [INFO] [stdout] 1035 | for i in 0..node.unwrap().links.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:1036:20 [INFO] [stdout] | [INFO] [stdout] 1033 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] ... [INFO] [stdout] 1036 | if node.unwrap().links[i].is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:1037:24 [INFO] [stdout] | [INFO] [stdout] 1033 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] ... [INFO] [stdout] 1037 | if node.unwrap().links[i].clone().unwrap() == key_b { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/map/traversable/tree.rs:1036:17 [INFO] [stdout] | [INFO] [stdout] 1036 | / if node.unwrap().links[i].is_some() { [INFO] [stdout] 1037 | | if node.unwrap().links[i].clone().unwrap() == key_b { [INFO] [stdout] 1038 | | return true; [INFO] [stdout] 1039 | | } [INFO] [stdout] 1040 | | } [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] 1036 ~ if node.unwrap().links[i].is_some() [INFO] [stdout] 1037 ~ && node.unwrap().links[i].clone().unwrap() == key_b { [INFO] [stdout] 1038 | return true; [INFO] [stdout] 1039 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:1187:25 [INFO] [stdout] | [INFO] [stdout] 1186 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] 1187 | for i in 1..node.unwrap().links.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:1188:20 [INFO] [stdout] | [INFO] [stdout] 1186 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] 1187 | for i in 1..node.unwrap().links.len() { [INFO] [stdout] 1188 | if node.unwrap().links[i].is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:1189:42 [INFO] [stdout] | [INFO] [stdout] 1186 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] ... [INFO] [stdout] 1189 | vec.push(&self.nodes[node.unwrap().links[i].clone().unwrap()].pair.value); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:1215:32 [INFO] [stdout] | [INFO] [stdout] 1214 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] 1215 | let mut currnode = node.unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:1304:9 [INFO] [stdout] | [INFO] [stdout] 1304 | / match self.nodes.get(key.clone()) { [INFO] [stdout] 1305 | | // If key matches a node in the tree. [INFO] [stdout] 1306 | | Some(n) => { [INFO] [stdout] ... | [INFO] [stdout] 1334 | | None => {}, [INFO] [stdout] 1335 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: you might want to preserve the comments from inside the `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 1304 ~ if let Some(n) = self.nodes.get(key.clone()) { [INFO] [stdout] 1305 + // Add node to the queue [INFO] [stdout] 1306 + queue.enqueue(n.pair.key.clone()); [INFO] [stdout] 1307 + [INFO] [stdout] 1308 + // Perform iterative inorder traversal. [INFO] [stdout] 1309 + while !queue.is_empty() { [INFO] [stdout] 1310 + // Store the queue's current length. [INFO] [stdout] 1311 + let mut len: usize = queue.len(); [INFO] [stdout] 1312 + [INFO] [stdout] 1313 + // Increment height to account for the current node. [INFO] [stdout] 1314 + height += 1; [INFO] [stdout] 1315 + [INFO] [stdout] 1316 + // Go through the current nodes in the queue. [INFO] [stdout] 1317 + while len > 0 { [INFO] [stdout] 1318 + let node = queue.dequeue().unwrap(); [INFO] [stdout] 1319 + [INFO] [stdout] 1320 + // Add node's children to the queue. [INFO] [stdout] 1321 + for i in 1..self.nodes[node.clone()].links.len() { [INFO] [stdout] 1322 + if self.nodes[node.clone()].links[i].is_some() { [INFO] [stdout] 1323 + queue.enqueue(self.nodes[node.clone()].links[i].clone().unwrap().clone()); [INFO] [stdout] 1324 + } [INFO] [stdout] 1325 + } [INFO] [stdout] 1326 + [INFO] [stdout] 1327 + // Decrement the stored length. [INFO] [stdout] 1328 + len -= 1; [INFO] [stdout] 1329 + } [INFO] [stdout] 1330 + } [INFO] [stdout] 1331 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:1364:9 [INFO] [stdout] | [INFO] [stdout] 1364 | let node_b: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `node_b` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 1364 ~ [INFO] [stdout] 1365 | [INFO] [stdout] 1366 ~ let node_b: Node = if *key_b == self.root.clone().unwrap().pair.key { [INFO] [stdout] 1367 ~ self.root.clone().unwrap() [INFO] [stdout] 1368 | } [INFO] [stdout] 1369 | else { [INFO] [stdout] 1370 ~ self.nodes[key_b.clone()].clone() [INFO] [stdout] 1371 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:1401:9 [INFO] [stdout] | [INFO] [stdout] 1401 | let node_a: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `node_a` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 1401 ~ [INFO] [stdout] 1402 | [INFO] [stdout] 1403 ~ let node_a: Node = if *key_a == self.root.clone().unwrap().pair.key { [INFO] [stdout] 1404 ~ self.root.clone().unwrap() [INFO] [stdout] 1405 | } [INFO] [stdout] 1406 | else { [INFO] [stdout] 1407 ~ self.nodes[key_a.clone()].clone() [INFO] [stdout] 1408 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:1445:13 [INFO] [stdout] | [INFO] [stdout] 1445 | return self.root.clone().unwrap().links.len() == 1; [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] 1445 - return self.root.clone().unwrap().links.len() == 1; [INFO] [stdout] 1445 + self.root.clone().unwrap().links.len() == 1 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:1448:13 [INFO] [stdout] | [INFO] [stdout] 1448 | return self.nodes[key.clone()].links.len() == 1; [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] 1448 - return self.nodes[key.clone()].links.len() == 1; [INFO] [stdout] 1448 + self.nodes[key.clone()].links.len() == 1 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/map/traversable/tree.rs:1466:17 [INFO] [stdout] | [INFO] [stdout] 1466 | / if r.pair.key == *key_a || r.pair.key == *key_b { [INFO] [stdout] 1467 | | return false; [INFO] [stdout] 1468 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1465 ~ Some(r) [INFO] [stdout] 1466 ~ if (r.pair.key == *key_a || r.pair.key == *key_b) => { [INFO] [stdout] 1467 | return false; [INFO] [stdout] 1468 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:1464:9 [INFO] [stdout] | [INFO] [stdout] 1464 | / match &self.root { [INFO] [stdout] 1465 | | Some(r) => { [INFO] [stdout] 1466 | | if r.pair.key == *key_a || r.pair.key == *key_b { [INFO] [stdout] 1467 | | return false; [INFO] [stdout] ... | [INFO] [stdout] 1470 | | None => {}, [INFO] [stdout] 1471 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 1464 ~ if let Some(r) = &self.root { [INFO] [stdout] 1465 + if r.pair.key == *key_a || r.pair.key == *key_b { [INFO] [stdout] 1466 + return false; [INFO] [stdout] 1467 + } [INFO] [stdout] 1468 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:1507:23 [INFO] [stdout] | [INFO] [stdout] 1506 | if node.is_some() && node.unwrap().links[0].is_some() { [INFO] [stdout] | -------------- the check is happening here [INFO] [stdout] 1507 | return if node.unwrap().links[0].clone().unwrap().clone() == self.root.clone().unwrap().pair.key { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:1513:34 [INFO] [stdout] | [INFO] [stdout] 1506 | if node.is_some() && node.unwrap().links[0].is_some() { [INFO] [stdout] | -------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 1513 | Some(&self.nodes[node.unwrap().links[0].clone().unwrap().clone()].pair.value) [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/map/traversable/tree.rs:1494:9 [INFO] [stdout] | [INFO] [stdout] 1494 | / if self.root.is_none() { [INFO] [stdout] 1495 | | return None; [INFO] [stdout] 1496 | | } [INFO] [stdout] | |_________^ help: replace it with: `self.root.as_ref()?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:1524:24 [INFO] [stdout] | [INFO] [stdout] 1524 | Some(n) => return Some(&n.pair.value), [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] 1524 - Some(n) => return Some(&n.pair.value), [INFO] [stdout] 1524 + Some(n) => Some(&n.pair.value), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:1525:21 [INFO] [stdout] | [INFO] [stdout] 1525 | None => return None, [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] 1525 - None => return None, [INFO] [stdout] 1525 + None => None, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Tree` [INFO] [stdout] --> src/map/traversable/tree.rs:1564:5 [INFO] [stdout] | [INFO] [stdout] 1564 | / pub fn new() -> Self { [INFO] [stdout] 1565 | | let new: Tree = Tree { [INFO] [stdout] 1566 | | nodes: HashMap::new(), [INFO] [stdout] 1567 | | root: None, [INFO] [stdout] ... | [INFO] [stdout] 1570 | | new [INFO] [stdout] 1571 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 1558 + impl Default for Tree [INFO] [stdout] 1559 + where [INFO] [stdout] 1560 + K: PartialEq + PartialOrd + Clone + Debug + Eq + Hash, [INFO] [stdout] 1561 + V: PartialEq + PartialOrd + Clone + Debug, [INFO] [stdout] 1562 + { [INFO] [stdout] 1563 + fn default() -> Self { [INFO] [stdout] 1564 + Self::new() [INFO] [stdout] 1565 + } [INFO] [stdout] 1566 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:1584:9 [INFO] [stdout] | [INFO] [stdout] 1584 | / match &mut new.root { [INFO] [stdout] 1585 | | Some(ref mut r) => r.links.push(None), [INFO] [stdout] 1586 | | None => {}, [INFO] [stdout] 1587 | | } [INFO] [stdout] | |_________^ help: try: `if let Some(ref mut r) = &mut new.root { r.links.push(None) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/map/traversable/tree.rs:1598:20 [INFO] [stdout] | [INFO] [stdout] 1598 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:1615:9 [INFO] [stdout] | [INFO] [stdout] 1615 | / return if node == self.root.clone().unwrap().pair.key { [INFO] [stdout] 1616 | | // If the root node has no children, return 0. [INFO] [stdout] 1617 | | if self.root.clone().unwrap().links.len() == 0 { [INFO] [stdout] 1618 | | return 0; [INFO] [stdout] ... | [INFO] [stdout] 1680 | | m + 1 [INFO] [stdout] 1681 | | } [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] 1615 ~ if node == self.root.clone().unwrap().pair.key { [INFO] [stdout] 1616 + // If the root node has no children, return 0. [INFO] [stdout] 1617 + if self.root.clone().unwrap().links.len() == 0 { [INFO] [stdout] 1618 + return 0; [INFO] [stdout] 1619 + } [INFO] [stdout] 1620 + [INFO] [stdout] 1621 + let mut vec: Vec = Vec::new(); [INFO] [stdout] 1622 + let mut m: usize = 0; [INFO] [stdout] 1623 + let mut d: usize = *diameter; [INFO] [stdout] 1624 + [INFO] [stdout] 1625 + // Recursively calculate the depth of the root node's children and add it the vector. [INFO] [stdout] 1626 + for i in 1..self.root.clone().unwrap().links.len() { [INFO] [stdout] 1627 + vec.push(self.get_max_depth(self.root.clone().unwrap().links[i].clone().unwrap(), diameter)); [INFO] [stdout] 1628 + [INFO] [stdout] 1629 + // Update the max depth value. [INFO] [stdout] 1630 + if vec[vec.len() - 1] > m { [INFO] [stdout] 1631 + m = vec[vec.len() - 1]; [INFO] [stdout] 1632 + } [INFO] [stdout] 1633 + } [INFO] [stdout] 1634 + [INFO] [stdout] 1635 + // Calculate the diameter of the tree based on the longest path between two nodes. [INFO] [stdout] 1636 + for i in 0..vec.len() { [INFO] [stdout] 1637 + for j in (i + 1)..vec.len() { [INFO] [stdout] 1638 + d = max(d, vec[i] + vec[j]); [INFO] [stdout] 1639 + } [INFO] [stdout] 1640 + } [INFO] [stdout] 1641 + [INFO] [stdout] 1642 + // Update the diameter value. [INFO] [stdout] 1643 + *diameter = d; [INFO] [stdout] 1644 + [INFO] [stdout] 1645 + // Return the max depth. [INFO] [stdout] 1646 + m + 1 [INFO] [stdout] 1647 + } [INFO] [stdout] 1648 + // If the specified node is any other node. [INFO] [stdout] 1649 + else { [INFO] [stdout] 1650 + // If the node has no children, return 0. [INFO] [stdout] 1651 + if self.nodes[node.clone()].links.len() == 0 { [INFO] [stdout] 1652 + return 0; [INFO] [stdout] 1653 + } [INFO] [stdout] 1654 + [INFO] [stdout] 1655 + let mut vec: Vec = Vec::new(); [INFO] [stdout] 1656 + let mut m: usize = 0; [INFO] [stdout] 1657 + let mut d: usize = *diameter; [INFO] [stdout] 1658 + [INFO] [stdout] 1659 + // Recursively calculate the depth of the node's children and add it the vector. [INFO] [stdout] 1660 + for i in 1..self.nodes[node.clone()].links.len() { [INFO] [stdout] 1661 + vec.push(self.get_max_depth(self.nodes[node.clone()].links[i].clone().unwrap(), diameter)); [INFO] [stdout] 1662 + [INFO] [stdout] 1663 + // Update the max depth value. [INFO] [stdout] 1664 + if vec[vec.len() - 1] > m { [INFO] [stdout] 1665 + m = vec[vec.len() - 1]; [INFO] [stdout] 1666 + } [INFO] [stdout] 1667 + } [INFO] [stdout] 1668 + [INFO] [stdout] 1669 + // Calculate the diameter of the tree based on the longest path between two nodes. [INFO] [stdout] 1670 + for i in 0..vec.len() { [INFO] [stdout] 1671 + for j in (i + 1)..vec.len() { [INFO] [stdout] 1672 + d = max(d, vec[i] + vec[j]); [INFO] [stdout] 1673 + } [INFO] [stdout] 1674 + } [INFO] [stdout] 1675 + [INFO] [stdout] 1676 + // Update the diameter value. [INFO] [stdout] 1677 + *diameter = d; [INFO] [stdout] 1678 + [INFO] [stdout] 1679 + // Return the max depth. [INFO] [stdout] 1680 + m + 1 [INFO] [stdout] 1681 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/map/traversable/tree.rs:1617:16 [INFO] [stdout] | [INFO] [stdout] 1617 | if self.root.clone().unwrap().links.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.root.clone().unwrap().links.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: length comparison to zero [INFO] [stdout] --> src/map/traversable/tree.rs:1651:16 [INFO] [stdout] | [INFO] [stdout] 1651 | if self.nodes[node.clone()].links.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.nodes[node.clone()].links.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: you should consider adding a `Default` implementation for `BinaryTreeTraverser` [INFO] [stdout] --> src/map/traversable/tree.rs:2023:5 [INFO] [stdout] | [INFO] [stdout] 2023 | / pub fn new() -> Self { [INFO] [stdout] 2024 | | BinaryTreeTraverser { [INFO] [stdout] 2025 | | mode: BinaryTreeTraversalMode::Inorder, [INFO] [stdout] 2026 | | trav: DoublyLinkedListTraverser::new(), [INFO] [stdout] ... | [INFO] [stdout] 2029 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 2016 + impl Default for BinaryTreeTraverser [INFO] [stdout] 2017 + where [INFO] [stdout] 2018 + K: PartialEq + PartialOrd + Clone + Debug + Eq + Hash, [INFO] [stdout] 2019 + V: PartialEq + PartialOrd + Clone + Debug, [INFO] [stdout] 2020 + { [INFO] [stdout] 2021 + fn default() -> Self { [INFO] [stdout] 2022 + Self::new() [INFO] [stdout] 2023 + } [INFO] [stdout] 2024 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:2035:9 [INFO] [stdout] | [INFO] [stdout] 2035 | let curr: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `curr` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 2035 ~ [INFO] [stdout] 2036 | [INFO] [stdout] 2037 ~ let curr: Node = if node == self.tree.root.clone().unwrap().pair.key { [INFO] [stdout] 2038 ~ self.tree.root.clone().unwrap().clone() [INFO] [stdout] 2039 | } [INFO] [stdout] 2040 | else { [INFO] [stdout] 2041 ~ self.tree.nodes[node.clone()].clone() [INFO] [stdout] 2042 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:2063:9 [INFO] [stdout] | [INFO] [stdout] 2063 | let curr: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `curr` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 2063 ~ [INFO] [stdout] 2064 | [INFO] [stdout] 2065 ~ let curr: Node = if node == self.tree.root.clone().unwrap().pair.key { [INFO] [stdout] 2066 ~ self.tree.root.clone().unwrap().clone() [INFO] [stdout] 2067 | } [INFO] [stdout] 2068 | else { [INFO] [stdout] 2069 ~ self.tree.nodes[node.clone()].clone() [INFO] [stdout] 2070 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:2090:9 [INFO] [stdout] | [INFO] [stdout] 2090 | let curr: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `curr` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 2090 ~ [INFO] [stdout] 2091 | [INFO] [stdout] 2092 ~ let curr: Node = if node == self.tree.root.clone().unwrap().pair.key { [INFO] [stdout] 2093 ~ self.tree.root.clone().unwrap().clone() [INFO] [stdout] 2094 | } [INFO] [stdout] 2095 | else { [INFO] [stdout] 2096 ~ self.tree.nodes[node.clone()].clone() [INFO] [stdout] 2097 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `qcurr` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:2146:21 [INFO] [stdout] | [INFO] [stdout] 2137 | if qcurr.is_some() { [INFO] [stdout] | ------------------ help: try: `if let Some() = qcurr` [INFO] [stdout] ... [INFO] [stdout] 2146 | map[qcurr.unwrap().1.clone()].push(curr.pair.value.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `isize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/tree.rs:2145:44 [INFO] [stdout] | [INFO] [stdout] 2145 | map.insert(KeyValue { key: qcurr.clone().unwrap().1.clone(), value: Vec::new() } ); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `qcurr.clone().unwrap().1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `isize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/tree.rs:2146:21 [INFO] [stdout] | [INFO] [stdout] 2146 | map[qcurr.unwrap().1.clone()].push(curr.pair.value.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `qcurr.unwrap().1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:2172:9 [INFO] [stdout] | [INFO] [stdout] 2172 | let curr: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `curr` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 2172 ~ [INFO] [stdout] 2173 | [INFO] [stdout] 2174 ~ let curr: Node = if node == self.tree.root.clone().unwrap().pair.key { [INFO] [stdout] 2175 ~ self.tree.root.clone().unwrap().clone() [INFO] [stdout] 2176 | } [INFO] [stdout] 2177 | else { [INFO] [stdout] 2178 ~ self.tree.nodes[node.clone()].clone() [INFO] [stdout] 2179 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:2210:9 [INFO] [stdout] | [INFO] [stdout] 2210 | let curr: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `curr` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 2210 ~ [INFO] [stdout] 2211 | [INFO] [stdout] 2212 ~ let curr: Node = if node == self.tree.root.clone().unwrap().pair.key { [INFO] [stdout] 2213 ~ self.tree.root.clone().unwrap().clone() [INFO] [stdout] 2214 | } [INFO] [stdout] 2215 | else { [INFO] [stdout] 2216 ~ self.tree.nodes[node.clone()].clone() [INFO] [stdout] 2217 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:2238:9 [INFO] [stdout] | [INFO] [stdout] 2238 | let curr: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `curr` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 2238 ~ [INFO] [stdout] 2239 | [INFO] [stdout] 2240 ~ let curr: Node = if node == self.tree.root.clone().unwrap().pair.key { [INFO] [stdout] 2241 ~ self.tree.root.clone().unwrap().clone() [INFO] [stdout] 2242 | } [INFO] [stdout] 2243 | else { [INFO] [stdout] 2244 ~ self.tree.nodes[node.clone()].clone() [INFO] [stdout] 2245 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:2262:9 [INFO] [stdout] | [INFO] [stdout] 2262 | let curr: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `curr` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 2262 ~ [INFO] [stdout] 2263 | [INFO] [stdout] 2264 ~ let curr: Node = if node == self.tree.root.clone().unwrap().pair.key { [INFO] [stdout] 2265 ~ self.tree.root.clone().unwrap().clone() [INFO] [stdout] 2266 | } [INFO] [stdout] 2267 | else { [INFO] [stdout] 2268 ~ self.tree.nodes[node.clone()].clone() [INFO] [stdout] 2269 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/map/traversable/tree.rs:2365:17 [INFO] [stdout] | [INFO] [stdout] 2365 | / if index == r.pair.key { [INFO] [stdout] 2366 | | return &r.pair.value; [INFO] [stdout] 2367 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 2364 ~ Some(r) [INFO] [stdout] 2365 ~ if index == r.pair.key => { [INFO] [stdout] 2366 | return &r.pair.value; [INFO] [stdout] 2367 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:2363:9 [INFO] [stdout] | [INFO] [stdout] 2363 | / match &self.root { [INFO] [stdout] 2364 | | Some(r) => { [INFO] [stdout] 2365 | | if index == r.pair.key { [INFO] [stdout] 2366 | | return &r.pair.value; [INFO] [stdout] ... | [INFO] [stdout] 2369 | | None => {}, [INFO] [stdout] 2370 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 2363 ~ if let Some(r) = &self.root { [INFO] [stdout] 2364 + if index == r.pair.key { [INFO] [stdout] 2365 + return &r.pair.value; [INFO] [stdout] 2366 + } [INFO] [stdout] 2367 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/map/traversable/tree.rs:2392:17 [INFO] [stdout] | [INFO] [stdout] 2392 | / if index == r.pair.key { [INFO] [stdout] 2393 | | return &mut r.pair.value; [INFO] [stdout] 2394 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 2391 ~ Some(r) [INFO] [stdout] 2392 ~ if index == r.pair.key => { [INFO] [stdout] 2393 | return &mut r.pair.value; [INFO] [stdout] 2394 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:2390:9 [INFO] [stdout] | [INFO] [stdout] 2390 | / match &mut self.root { [INFO] [stdout] 2391 | | Some(r) => { [INFO] [stdout] 2392 | | if index == r.pair.key { [INFO] [stdout] 2393 | | return &mut r.pair.value; [INFO] [stdout] ... | [INFO] [stdout] 2396 | | None => {}, [INFO] [stdout] 2397 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 2390 ~ if let Some(r) = &mut self.root { [INFO] [stdout] 2391 + if index == r.pair.key { [INFO] [stdout] 2392 + return &mut r.pair.value; [INFO] [stdout] 2393 + } [INFO] [stdout] 2394 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `self.root` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:2473:39 [INFO] [stdout] | [INFO] [stdout] 2472 | if self.root.is_some() { [INFO] [stdout] | ---------------------- help: try: `if let Some() = self.root` [INFO] [stdout] 2473 | t.inorder_rec(&mut order, self.root.unwrap().pair.key.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/map/traversable/tree.rs:2559:18 [INFO] [stdout] | [INFO] [stdout] 2559 | for i in 0..vec.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 2559 - for i in 0..vec.len() { [INFO] [stdout] 2559 + for in &vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/map/traversable/tree.rs:2571:22 [INFO] [stdout] | [INFO] [stdout] 2571 | for i in vec.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/map/traversable/tree.rs:2619:9 [INFO] [stdout] | [INFO] [stdout] 2619 | !self.root.is_none() && (self.root.clone().unwrap().pair.key == key || self.nodes.exists(key)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `self.root.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:2643:26 [INFO] [stdout] | [INFO] [stdout] 2642 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] 2643 | return Some(&node.unwrap().pair.value); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/map/traversable/tree.rs:2626:9 [INFO] [stdout] | [INFO] [stdout] 2626 | / if self.root.is_none() { [INFO] [stdout] 2627 | | return None; [INFO] [stdout] 2628 | | } [INFO] [stdout] | |_________^ help: replace it with: `self.root.as_ref()?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:2692:13 [INFO] [stdout] | [INFO] [stdout] 2692 | / match &mut self.root { [INFO] [stdout] 2693 | | Some(ref mut r) => r.pair.value = pair.value, [INFO] [stdout] 2694 | | None => {}, [INFO] [stdout] 2695 | | } [INFO] [stdout] | |_____________^ help: try: `if let Some(ref mut r) = &mut self.root { r.pair.value = pair.value }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:2754:9 [INFO] [stdout] | [INFO] [stdout] 2754 | return diameter as f32 [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] 2754 - return diameter as f32 [INFO] [stdout] 2754 + diameter as f32 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:2762:9 [INFO] [stdout] | [INFO] [stdout] 2762 | / match &self.root { [INFO] [stdout] 2763 | | Some(r) => { [INFO] [stdout] 2764 | | for i in 1..r.links.len() { [INFO] [stdout] 2765 | | vec.push(Edge { [INFO] [stdout] ... | [INFO] [stdout] 2772 | | None => {}, [INFO] [stdout] 2773 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 2762 ~ if let Some(r) = &self.root { [INFO] [stdout] 2763 + for i in 1..r.links.len() { [INFO] [stdout] 2764 + vec.push(Edge { [INFO] [stdout] 2765 + node_a: r.pair.key.clone(), [INFO] [stdout] 2766 + node_b: r.links[i].clone().unwrap().clone(), [INFO] [stdout] 2767 + weight: 1.0, [INFO] [stdout] 2768 + }); [INFO] [stdout] 2769 + } [INFO] [stdout] 2770 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/map/traversable/tree.rs:2837:20 [INFO] [stdout] | [INFO] [stdout] 2837 | if !self.root.clone().unwrap().links[i].is_none() && [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.root.clone().unwrap().links[i].is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:2850:25 [INFO] [stdout] | [INFO] [stdout] 2848 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] 2849 | // If any of that node's children or its parent match key b, return true. [INFO] [stdout] 2850 | for i in 0..node.unwrap().links.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:2851:20 [INFO] [stdout] | [INFO] [stdout] 2848 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] ... [INFO] [stdout] 2851 | if node.unwrap().links[i].is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:2852:24 [INFO] [stdout] | [INFO] [stdout] 2848 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] ... [INFO] [stdout] 2852 | if node.unwrap().links[i].clone().unwrap() == key_b { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/map/traversable/tree.rs:2851:17 [INFO] [stdout] | [INFO] [stdout] 2851 | / if node.unwrap().links[i].is_some() { [INFO] [stdout] 2852 | | if node.unwrap().links[i].clone().unwrap() == key_b { [INFO] [stdout] 2853 | | return true; [INFO] [stdout] 2854 | | } [INFO] [stdout] 2855 | | } [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] 2851 ~ if node.unwrap().links[i].is_some() [INFO] [stdout] 2852 ~ && node.unwrap().links[i].clone().unwrap() == key_b { [INFO] [stdout] 2853 | return true; [INFO] [stdout] 2854 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:3018:25 [INFO] [stdout] | [INFO] [stdout] 3017 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] 3018 | for i in 1..node.unwrap().links.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:3019:20 [INFO] [stdout] | [INFO] [stdout] 3017 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] 3018 | for i in 1..node.unwrap().links.len() { [INFO] [stdout] 3019 | if node.unwrap().links[i].is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:3020:42 [INFO] [stdout] | [INFO] [stdout] 3017 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] ... [INFO] [stdout] 3020 | vec.push(&self.nodes[node.unwrap().links[i].clone().unwrap()].pair.value); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:3046:32 [INFO] [stdout] | [INFO] [stdout] 3045 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] 3046 | let mut currnode = node.unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:3135:9 [INFO] [stdout] | [INFO] [stdout] 3135 | / match self.nodes.get(key.clone()) { [INFO] [stdout] 3136 | | // If key matches a node in the tree. [INFO] [stdout] 3137 | | Some(n) => { [INFO] [stdout] ... | [INFO] [stdout] 3165 | | None => {}, [INFO] [stdout] 3166 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: you might want to preserve the comments from inside the `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 3135 ~ if let Some(n) = self.nodes.get(key.clone()) { [INFO] [stdout] 3136 + // Add node to the queue [INFO] [stdout] 3137 + queue.enqueue(n.pair.key.clone()); [INFO] [stdout] 3138 + [INFO] [stdout] 3139 + // Perform iterative inorder traversal. [INFO] [stdout] 3140 + while !queue.is_empty() { [INFO] [stdout] 3141 + // Store the queue's current length. [INFO] [stdout] 3142 + let mut len: usize = queue.len(); [INFO] [stdout] 3143 + [INFO] [stdout] 3144 + // Increment height to account for the current node. [INFO] [stdout] 3145 + height += 1; [INFO] [stdout] 3146 + [INFO] [stdout] 3147 + // Go through the current nodes in the queue. [INFO] [stdout] 3148 + while len > 0 { [INFO] [stdout] 3149 + let node = queue.dequeue().unwrap(); [INFO] [stdout] 3150 + [INFO] [stdout] 3151 + // Add node's children to the queue. [INFO] [stdout] 3152 + for i in 1..self.nodes[node.clone()].links.len() { [INFO] [stdout] 3153 + if self.nodes[node.clone()].links[i].is_some() { [INFO] [stdout] 3154 + queue.enqueue(self.nodes[node.clone()].links[i].clone().unwrap().clone()); [INFO] [stdout] 3155 + } [INFO] [stdout] 3156 + } [INFO] [stdout] 3157 + [INFO] [stdout] 3158 + // Decrement the stored length. [INFO] [stdout] 3159 + len -= 1; [INFO] [stdout] 3160 + } [INFO] [stdout] 3161 + } [INFO] [stdout] 3162 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:3195:9 [INFO] [stdout] | [INFO] [stdout] 3195 | let node_b: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `node_b` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 3195 ~ [INFO] [stdout] 3196 | [INFO] [stdout] 3197 ~ let node_b: Node = if *key_b == self.root.clone().unwrap().pair.key { [INFO] [stdout] 3198 ~ self.root.clone().unwrap() [INFO] [stdout] 3199 | } [INFO] [stdout] 3200 | else { [INFO] [stdout] 3201 ~ self.nodes[key_b.clone()].clone() [INFO] [stdout] 3202 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:3232:9 [INFO] [stdout] | [INFO] [stdout] 3232 | let node_a: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `node_a` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 3232 ~ [INFO] [stdout] 3233 | [INFO] [stdout] 3234 ~ let node_a: Node = if *key_a == self.root.clone().unwrap().pair.key { [INFO] [stdout] 3235 ~ self.root.clone().unwrap() [INFO] [stdout] 3236 | } [INFO] [stdout] 3237 | else { [INFO] [stdout] 3238 ~ self.nodes[key_a.clone()].clone() [INFO] [stdout] 3239 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:3276:13 [INFO] [stdout] | [INFO] [stdout] 3276 | / return self.root.clone().unwrap().links[1].is_none() && [INFO] [stdout] 3277 | | self.root.clone().unwrap().links[2].is_none(); [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] 3276 ~ self.root.clone().unwrap().links[1].is_none() && [INFO] [stdout] 3277 ~ self.root.clone().unwrap().links[2].is_none() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:3280:13 [INFO] [stdout] | [INFO] [stdout] 3280 | / return self.nodes[key.clone()].links[1].is_none() && [INFO] [stdout] 3281 | | self.nodes[key.clone()].links[2].is_none(); [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] 3280 ~ self.nodes[key.clone()].links[1].is_none() && [INFO] [stdout] 3281 ~ self.nodes[key.clone()].links[2].is_none() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/map/traversable/tree.rs:3299:17 [INFO] [stdout] | [INFO] [stdout] 3299 | / if r.pair.key == *key_a || r.pair.key == *key_b { [INFO] [stdout] 3300 | | return false; [INFO] [stdout] 3301 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 3298 ~ Some(r) [INFO] [stdout] 3299 ~ if (r.pair.key == *key_a || r.pair.key == *key_b) => { [INFO] [stdout] 3300 | return false; [INFO] [stdout] 3301 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:3297:9 [INFO] [stdout] | [INFO] [stdout] 3297 | / match &self.root { [INFO] [stdout] 3298 | | Some(r) => { [INFO] [stdout] 3299 | | if r.pair.key == *key_a || r.pair.key == *key_b { [INFO] [stdout] 3300 | | return false; [INFO] [stdout] ... | [INFO] [stdout] 3303 | | None => {}, [INFO] [stdout] 3304 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 3297 ~ if let Some(r) = &self.root { [INFO] [stdout] 3298 + if r.pair.key == *key_a || r.pair.key == *key_b { [INFO] [stdout] 3299 + return false; [INFO] [stdout] 3300 + } [INFO] [stdout] 3301 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:3340:23 [INFO] [stdout] | [INFO] [stdout] 3339 | if node.is_some() && node.unwrap().links[0].is_some() { [INFO] [stdout] | -------------- the check is happening here [INFO] [stdout] 3340 | return if node.unwrap().links[0].clone().unwrap().clone() == self.root.clone().unwrap().pair.key { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:3346:34 [INFO] [stdout] | [INFO] [stdout] 3339 | if node.is_some() && node.unwrap().links[0].is_some() { [INFO] [stdout] | -------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 3346 | Some(&self.nodes[node.unwrap().links[0].clone().unwrap().clone()].pair.value) [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/map/traversable/tree.rs:3327:9 [INFO] [stdout] | [INFO] [stdout] 3327 | / if self.root.is_none() { [INFO] [stdout] 3328 | | return None; [INFO] [stdout] 3329 | | } [INFO] [stdout] | |_________^ help: replace it with: `self.root.as_ref()?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:3357:24 [INFO] [stdout] | [INFO] [stdout] 3357 | Some(n) => return Some(&n.pair.value), [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] 3357 - Some(n) => return Some(&n.pair.value), [INFO] [stdout] 3357 + Some(n) => Some(&n.pair.value), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:3358:21 [INFO] [stdout] | [INFO] [stdout] 3358 | None => return None, [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] 3358 - None => return None, [INFO] [stdout] 3358 + None => None, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `BinaryTree` [INFO] [stdout] --> src/map/traversable/tree.rs:3398:5 [INFO] [stdout] | [INFO] [stdout] 3398 | / pub fn new() -> Self { [INFO] [stdout] 3399 | | let new: BinaryTree = BinaryTree { [INFO] [stdout] 3400 | | nodes: HashMap::new(), [INFO] [stdout] 3401 | | root: None, [INFO] [stdout] ... | [INFO] [stdout] 3404 | | new [INFO] [stdout] 3405 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 3391 + impl Default for BinaryTree [INFO] [stdout] 3392 + where [INFO] [stdout] 3393 + K: PartialEq + PartialOrd + Clone + Debug + Eq + Hash, [INFO] [stdout] 3394 + V: PartialEq + PartialOrd + Clone + Debug, [INFO] [stdout] 3395 + { [INFO] [stdout] 3396 + fn default() -> Self { [INFO] [stdout] 3397 + Self::new() [INFO] [stdout] 3398 + } [INFO] [stdout] 3399 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:3417:9 [INFO] [stdout] | [INFO] [stdout] 3417 | / match &mut new.root { [INFO] [stdout] 3418 | | Some(ref mut r) => { [INFO] [stdout] 3419 | | r.links.push(None); [INFO] [stdout] 3420 | | r.links.push(None); [INFO] [stdout] ... | [INFO] [stdout] 3423 | | None => {}, [INFO] [stdout] 3424 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 3417 ~ if let Some(ref mut r) = &mut new.root { [INFO] [stdout] 3418 + r.links.push(None); [INFO] [stdout] 3419 + r.links.push(None); [INFO] [stdout] 3420 + r.links.push(None); [INFO] [stdout] 3421 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/map/traversable/tree.rs:3434:20 [INFO] [stdout] | [INFO] [stdout] 3434 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:3473:21 [INFO] [stdout] | [INFO] [stdout] 3473 | return; [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] 3472 - self.rotate_left(self.root.clone().unwrap().pair.key.clone()); [INFO] [stdout] 3473 - return; [INFO] [stdout] 3472 + self.rotate_left(self.root.clone().unwrap().pair.key.clone()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:3507:21 [INFO] [stdout] | [INFO] [stdout] 3507 | return; [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] 3506 - self.rotate_left(self.nodes[node.clone()].pair.key.clone()); [INFO] [stdout] 3507 - return; [INFO] [stdout] 3506 + self.rotate_left(self.nodes[node.clone()].pair.key.clone()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:3516:9 [INFO] [stdout] | [INFO] [stdout] 3516 | let n: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `n` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 3516 ~ [INFO] [stdout] 3517 | [INFO] [stdout] 3518 ~ let n: Node = if node == self.root.clone().unwrap().pair.key.clone() { [INFO] [stdout] 3519 ~ self.root.clone().unwrap().clone() [INFO] [stdout] 3520 | } [INFO] [stdout] 3521 | else { [INFO] [stdout] 3522 ~ self.nodes[node.clone()].clone() [INFO] [stdout] 3523 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:3550:9 [INFO] [stdout] | [INFO] [stdout] 3550 | / return if node == self.root.clone().unwrap().pair.key { [INFO] [stdout] 3551 | | // If the root node has no children, return 0. [INFO] [stdout] 3552 | | if self.root.clone().unwrap().links.len() == 0 { [INFO] [stdout] 3553 | | return 0; [INFO] [stdout] ... | [INFO] [stdout] 3623 | | m + 1 [INFO] [stdout] 3624 | | } [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] 3550 ~ if node == self.root.clone().unwrap().pair.key { [INFO] [stdout] 3551 + // If the root node has no children, return 0. [INFO] [stdout] 3552 + if self.root.clone().unwrap().links.len() == 0 { [INFO] [stdout] 3553 + return 0; [INFO] [stdout] 3554 + } [INFO] [stdout] 3555 + [INFO] [stdout] 3556 + [INFO] [stdout] 3557 + [INFO] [stdout] 3558 + let mut vec: Vec = Vec::new(); [INFO] [stdout] 3559 + let mut m: usize = 0; [INFO] [stdout] 3560 + let mut d: usize = *diameter; [INFO] [stdout] 3561 + [INFO] [stdout] 3562 + // Recursively calculate the depth of the root node's children and add it the vector. [INFO] [stdout] 3563 + for i in 1..self.root.clone().unwrap().links.len() { [INFO] [stdout] 3564 + if self.root.clone().unwrap().links[i].is_some() { [INFO] [stdout] 3565 + vec.push(self.get_max_depth(self.root.clone().unwrap().links[i].clone().unwrap(), [INFO] [stdout] 3566 + diameter)); [INFO] [stdout] 3567 + [INFO] [stdout] 3568 + // Update the max depth value. [INFO] [stdout] 3569 + if vec[vec.len() - 1] > m { [INFO] [stdout] 3570 + m = vec[vec.len() - 1]; [INFO] [stdout] 3571 + } [INFO] [stdout] 3572 + } [INFO] [stdout] 3573 + } [INFO] [stdout] 3574 + [INFO] [stdout] 3575 + // Calculate the diameter of the tree based on the longest path between two nodes. [INFO] [stdout] 3576 + for i in 0..vec.len() { [INFO] [stdout] 3577 + for j in (i + 1)..vec.len() { [INFO] [stdout] 3578 + d = max(d, vec[i] + vec[j]); [INFO] [stdout] 3579 + } [INFO] [stdout] 3580 + } [INFO] [stdout] 3581 + [INFO] [stdout] 3582 + // Update the diameter value. [INFO] [stdout] 3583 + *diameter = d; [INFO] [stdout] 3584 + [INFO] [stdout] 3585 + // Return the max depth. [INFO] [stdout] 3586 + m + 1 [INFO] [stdout] 3587 + } [INFO] [stdout] 3588 + // If the specified node is any other node. [INFO] [stdout] 3589 + else { [INFO] [stdout] 3590 + // If the node has no children, return 0. [INFO] [stdout] 3591 + if self.nodes[node.clone()].links.len() == 0 { [INFO] [stdout] 3592 + return 0; [INFO] [stdout] 3593 + } [INFO] [stdout] 3594 + [INFO] [stdout] 3595 + let mut vec: Vec = Vec::new(); [INFO] [stdout] 3596 + let mut m: usize = 0; [INFO] [stdout] 3597 + let mut d: usize = *diameter; [INFO] [stdout] 3598 + [INFO] [stdout] 3599 + // Recursively calculate the depth of the node's children and add it the vector. [INFO] [stdout] 3600 + for i in 1..self.nodes[node.clone()].links.len() { [INFO] [stdout] 3601 + if self.nodes[node.clone()].links[i].is_some() { [INFO] [stdout] 3602 + vec.push(self.get_max_depth(self.nodes[node.clone()].links[i].clone().unwrap(), [INFO] [stdout] 3603 + diameter)); [INFO] [stdout] 3604 + [INFO] [stdout] 3605 + // Update the max depth value. [INFO] [stdout] 3606 + if vec[vec.len() - 1] > m { [INFO] [stdout] 3607 + m = vec[vec.len() - 1]; [INFO] [stdout] 3608 + } [INFO] [stdout] 3609 + } [INFO] [stdout] 3610 + } [INFO] [stdout] 3611 + [INFO] [stdout] 3612 + // Calculate the diameter of the tree based on the longest path between two nodes. [INFO] [stdout] 3613 + for i in 0..vec.len() { [INFO] [stdout] 3614 + for j in (i + 1)..vec.len() { [INFO] [stdout] 3615 + d = max(d, vec[i] + vec[j]); [INFO] [stdout] 3616 + } [INFO] [stdout] 3617 + } [INFO] [stdout] 3618 + [INFO] [stdout] 3619 + // Update the diameter value. [INFO] [stdout] 3620 + *diameter = d; [INFO] [stdout] 3621 + [INFO] [stdout] 3622 + // Return the max depth. [INFO] [stdout] 3623 + m + 1 [INFO] [stdout] 3624 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/map/traversable/tree.rs:3552:16 [INFO] [stdout] | [INFO] [stdout] 3552 | if self.root.clone().unwrap().links.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.root.clone().unwrap().links.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/map/traversable/tree.rs:3591:16 [INFO] [stdout] | [INFO] [stdout] 3591 | if self.nodes[node.clone()].links.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.nodes[node.clone()].links.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: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:3639:13 [INFO] [stdout] | [INFO] [stdout] 3639 | / match &mut self.root { [INFO] [stdout] 3640 | | Some(ref mut r) => { [INFO] [stdout] 3641 | | r.links.push(None); [INFO] [stdout] 3642 | | r.links.push(None); [INFO] [stdout] ... | [INFO] [stdout] 3645 | | None => {}, [INFO] [stdout] 3646 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 3639 ~ if let Some(ref mut r) = &mut self.root { [INFO] [stdout] 3640 + r.links.push(None); [INFO] [stdout] 3641 + r.links.push(None); [INFO] [stdout] 3642 + r.links.push(None); [INFO] [stdout] 3643 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:3659:25 [INFO] [stdout] | [INFO] [stdout] 3659 | / match &mut self.root { [INFO] [stdout] 3660 | | Some(ref mut r) => r.links[1] = Some(pair.key.clone()), [INFO] [stdout] 3661 | | None => {}, [INFO] [stdout] 3662 | | } [INFO] [stdout] | |_________________________^ help: try: `if let Some(ref mut r) = &mut self.root { r.links[1] = Some(pair.key.clone()) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:3667:25 [INFO] [stdout] | [INFO] [stdout] 3667 | / match &mut self.root { [INFO] [stdout] 3668 | | Some(ref mut r) => r.links[2] = Some(pair.key.clone()), [INFO] [stdout] 3669 | | None => {}, [INFO] [stdout] 3670 | | } [INFO] [stdout] | |_________________________^ help: try: `if let Some(ref mut r) = &mut self.root { r.links[2] = Some(pair.key.clone()) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:3706:25 [INFO] [stdout] | [INFO] [stdout] 3706 | / match &mut self.root { [INFO] [stdout] 3707 | | Some(ref mut r) => r.links[2] = Some(pair.key.clone()), [INFO] [stdout] 3708 | | None => {}, [INFO] [stdout] 3709 | | } [INFO] [stdout] | |_________________________^ help: try: `if let Some(ref mut r) = &mut self.root { r.links[2] = Some(pair.key.clone()) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:3745:25 [INFO] [stdout] | [INFO] [stdout] 3745 | / match &mut self.root { [INFO] [stdout] 3746 | | Some(ref mut r) => r.links[1] = Some(pair.key.clone()), [INFO] [stdout] 3747 | | None => {}, [INFO] [stdout] 3748 | | } [INFO] [stdout] | |_________________________^ help: try: `if let Some(ref mut r) = &mut self.root { r.links[1] = Some(pair.key.clone()) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `temp` after checking its variant with `is_none` [INFO] [stdout] --> src/map/traversable/tree.rs:3992:59 [INFO] [stdout] | [INFO] [stdout] 3971 | if temp.is_none() { [INFO] [stdout] | ----------------- help: try: `if let Some() = temp` [INFO] [stdout] ... [INFO] [stdout] 3992 | r.links[1] = Some(temp.unwrap().pair.key.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `temp` after checking its variant with `is_none` [INFO] [stdout] --> src/map/traversable/tree.rs:4002:59 [INFO] [stdout] | [INFO] [stdout] 3971 | if temp.is_none() { [INFO] [stdout] | ----------------- help: try: `if let Some() = temp` [INFO] [stdout] ... [INFO] [stdout] 4002 | r.links[2] = Some(temp.unwrap().pair.key.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `temp` after checking its variant with `is_none` [INFO] [stdout] --> src/map/traversable/tree.rs:4015:42 [INFO] [stdout] | [INFO] [stdout] 3971 | if temp.is_none() { [INFO] [stdout] | ----------------- help: try: `if let Some() = temp` [INFO] [stdout] ... [INFO] [stdout] 4015 | Some(temp.unwrap().pair.key.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `temp` after checking its variant with `is_none` [INFO] [stdout] --> src/map/traversable/tree.rs:4021:42 [INFO] [stdout] | [INFO] [stdout] 3971 | if temp.is_none() { [INFO] [stdout] | ----------------- help: try: `if let Some() = temp` [INFO] [stdout] ... [INFO] [stdout] 4021 | Some(temp.unwrap().pair.key.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:4106:9 [INFO] [stdout] | [INFO] [stdout] 4106 | return Some(n.pair.key.clone()); [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] 4106 - return Some(n.pair.key.clone()); [INFO] [stdout] 4106 + Some(n.pair.key.clone()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:3929:9 [INFO] [stdout] | [INFO] [stdout] 3929 | let k: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `k` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 3929 ~ [INFO] [stdout] 3930 | [INFO] [stdout] ... [INFO] [stdout] 3937 | [INFO] [stdout] 3938 ~ let k: Node = if key == self.root.clone().unwrap().pair.key.clone() { [INFO] [stdout] 3939 ~ self.root.clone().unwrap().clone() [INFO] [stdout] 3940 | } [INFO] [stdout] 3941 | else { [INFO] [stdout] 3942 ~ self.nodes[key.clone()].clone() [INFO] [stdout] 3943 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:3990:33 [INFO] [stdout] | [INFO] [stdout] 3990 | / ... match &mut self.root { [INFO] [stdout] 3991 | | ... Some(r) => { [INFO] [stdout] 3992 | | ... r.links[1] = Some(temp.unwrap().pair.key.clone()); [INFO] [stdout] 3993 | | ... }, [INFO] [stdout] 3994 | | ... None => {}, [INFO] [stdout] 3995 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 3990 ~ if let Some(r) = &mut self.root { [INFO] [stdout] 3991 + r.links[1] = Some(temp.unwrap().pair.key.clone()); [INFO] [stdout] 3992 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:4000:33 [INFO] [stdout] | [INFO] [stdout] 4000 | / ... match &mut self.root { [INFO] [stdout] 4001 | | ... Some(r) => { [INFO] [stdout] 4002 | | ... r.links[2] = Some(temp.unwrap().pair.key.clone()); [INFO] [stdout] 4003 | | ... }, [INFO] [stdout] 4004 | | ... None => {}, [INFO] [stdout] 4005 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 4000 ~ if let Some(r) = &mut self.root { [INFO] [stdout] 4001 + r.links[2] = Some(temp.unwrap().pair.key.clone()); [INFO] [stdout] 4002 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:4050:21 [INFO] [stdout] | [INFO] [stdout] 4050 | / match &mut self.root { [INFO] [stdout] 4051 | | Some(r) => { [INFO] [stdout] 4052 | | if r.links[1].is_some() && r.links[1].clone().unwrap().clone() == [INFO] [stdout] 4053 | | n.pair.key.clone() { [INFO] [stdout] ... | [INFO] [stdout] 4061 | | None => {}, [INFO] [stdout] 4062 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 4050 ~ if let Some(r) = &mut self.root { [INFO] [stdout] 4051 + if r.links[1].is_some() && r.links[1].clone().unwrap().clone() == [INFO] [stdout] 4052 + n.pair.key.clone() { [INFO] [stdout] 4053 + r.links[1] = Some(tkey.clone()); [INFO] [stdout] 4054 + } [INFO] [stdout] 4055 + else if r.links[2].is_some() && [INFO] [stdout] 4056 + r.links[2].clone().unwrap().clone() == n.pair.key.clone() { [INFO] [stdout] 4057 + r.links[2] = Some(tkey.clone()); [INFO] [stdout] 4058 + } [INFO] [stdout] 4059 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/map/traversable/tree.rs:4115:21 [INFO] [stdout] | [INFO] [stdout] 4115 | / if n.links[2].is_some() { [INFO] [stdout] 4116 | | let r: &mut Node = &mut self.nodes[n.links[2].clone().unwrap()]; [INFO] [stdout] ... | [INFO] [stdout] 4126 | | n.links[0] = Some(r.pair.key.clone()); [INFO] [stdout] 4127 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 4113 ~ Some(n) [INFO] [stdout] 4114 | // If the node has a right child. [INFO] [stdout] 4115 ~ if n.links[2].is_some() => { [INFO] [stdout] 4116 | let r: &mut Node = &mut self.nodes[n.links[2].clone().unwrap()]; [INFO] [stdout] ... [INFO] [stdout] 4126 | n.links[0] = Some(r.pair.key.clone()); [INFO] [stdout] 4127 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:4112:13 [INFO] [stdout] | [INFO] [stdout] 4112 | / match &mut self.root { [INFO] [stdout] 4113 | | Some(n) => { [INFO] [stdout] 4114 | | // If the node has a right child. [INFO] [stdout] 4115 | | if n.links[2].is_some() { [INFO] [stdout] ... | [INFO] [stdout] 4129 | | None => {}, [INFO] [stdout] 4130 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 4112 ~ if let Some(n) = &mut self.root { [INFO] [stdout] 4113 + // If the node has a right child. [INFO] [stdout] 4114 + if n.links[2].is_some() { [INFO] [stdout] 4115 + let r: &mut Node = &mut self.nodes[n.links[2].clone().unwrap()]; [INFO] [stdout] 4116 + [INFO] [stdout] 4117 + // Replace specified node's right child node with the former right child node's left [INFO] [stdout] 4118 + // child node. [INFO] [stdout] 4119 + n.links[2] = r.links[1].clone(); [INFO] [stdout] 4120 + // Make the specified node the left child node of the former right child node. [INFO] [stdout] 4121 + r.links[1] = Some(n.pair.key.clone()); [INFO] [stdout] 4122 + // Make the specified node's parent node be the parent of the former right child node. [INFO] [stdout] 4123 + r.links[0] = n.links[0].clone(); [INFO] [stdout] 4124 + // Make the former right child node be the parent of the specified node. [INFO] [stdout] 4125 + n.links[0] = Some(r.pair.key.clone()); [INFO] [stdout] 4126 + } [INFO] [stdout] 4127 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/map/traversable/tree.rs:4157:21 [INFO] [stdout] | [INFO] [stdout] 4157 | / if n.links[1].is_some() { [INFO] [stdout] 4158 | | let l: &mut Node = &mut self.nodes[n.links[1].clone().unwrap()]; [INFO] [stdout] ... | [INFO] [stdout] 4168 | | n.links[0] = Some(l.pair.key.clone()); [INFO] [stdout] 4169 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 4155 ~ Some(n) [INFO] [stdout] 4156 | // If the node has a left child. [INFO] [stdout] 4157 ~ if n.links[1].is_some() => { [INFO] [stdout] 4158 | let l: &mut Node = &mut self.nodes[n.links[1].clone().unwrap()]; [INFO] [stdout] ... [INFO] [stdout] 4168 | n.links[0] = Some(l.pair.key.clone()); [INFO] [stdout] 4169 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:4154:13 [INFO] [stdout] | [INFO] [stdout] 4154 | / match &mut self.root { [INFO] [stdout] 4155 | | Some(n) => { [INFO] [stdout] 4156 | | // If the node has a left child. [INFO] [stdout] 4157 | | if n.links[1].is_some() { [INFO] [stdout] ... | [INFO] [stdout] 4171 | | None => {}, [INFO] [stdout] 4172 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 4154 ~ if let Some(n) = &mut self.root { [INFO] [stdout] 4155 + // If the node has a left child. [INFO] [stdout] 4156 + if n.links[1].is_some() { [INFO] [stdout] 4157 + let l: &mut Node = &mut self.nodes[n.links[1].clone().unwrap()]; [INFO] [stdout] 4158 + [INFO] [stdout] 4159 + // Replace specified node's left child node with the former left child node's right [INFO] [stdout] 4160 + // child node. [INFO] [stdout] 4161 + n.links[1] = l.links[2].clone(); [INFO] [stdout] 4162 + // Make the specified node the right child node of the former left child node. [INFO] [stdout] 4163 + l.links[2] = Some(n.pair.key.clone()); [INFO] [stdout] 4164 + // Make the specified node's parent node be the parent of the former left child node. [INFO] [stdout] 4165 + l.links[0] = n.links[0].clone(); [INFO] [stdout] 4166 + // Make the former left child node be the parent of the specified node. [INFO] [stdout] 4167 + n.links[0] = Some(l.pair.key.clone()); [INFO] [stdout] 4168 + } [INFO] [stdout] 4169 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:4226:9 [INFO] [stdout] | [INFO] [stdout] 4226 | / match &mut sub.root { [INFO] [stdout] 4227 | | Some(ref mut r) => { [INFO] [stdout] 4228 | | if node == self.root.clone().unwrap().pair.key { [INFO] [stdout] 4229 | | r.links = self.root.clone().unwrap().links.clone(); [INFO] [stdout] ... | [INFO] [stdout] 4236 | | None => {}, [INFO] [stdout] 4237 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 4226 ~ if let Some(ref mut r) = &mut sub.root { [INFO] [stdout] 4227 + if node == self.root.clone().unwrap().pair.key { [INFO] [stdout] 4228 + r.links = self.root.clone().unwrap().links.clone(); [INFO] [stdout] 4229 + } [INFO] [stdout] 4230 + else { [INFO] [stdout] 4231 + r.links = self.nodes[node.clone()].links.clone(); [INFO] [stdout] 4232 + } [INFO] [stdout] 4233 + r.links[0] = None; [INFO] [stdout] 4234 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/map/traversable/linked.rs:75:9 [INFO] [stdout] | [INFO] [stdout] 75 | / if self.key.is_none() { [INFO] [stdout] 76 | | return None; [INFO] [stdout] 77 | | } [INFO] [stdout] | |_________^ help: replace it with: `self.key?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:85:37 [INFO] [stdout] | [INFO] [stdout] 85 | self.key = Some(self.list.nodes[i + 1].pair.key.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.list.nodes[i + 1].pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `LinkedListTraverser` [INFO] [stdout] --> src/map/traversable/linked.rs:116:5 [INFO] [stdout] | [INFO] [stdout] 116 | / pub fn new() -> Self { [INFO] [stdout] 117 | | LinkedListTraverser { [INFO] [stdout] 118 | | key: None, [INFO] [stdout] 119 | | list: LinkedList::new(), [INFO] [stdout] 120 | | } [INFO] [stdout] 121 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 110 + impl Default for LinkedListTraverser [INFO] [stdout] 111 + where [INFO] [stdout] 112 + V: PartialEq + PartialOrd + Clone + Debug, [INFO] [stdout] 113 + { [INFO] [stdout] 114 + fn default() -> Self { [INFO] [stdout] 115 + Self::new() [INFO] [stdout] 116 + } [INFO] [stdout] 117 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:238:23 [INFO] [stdout] | [INFO] [stdout] 238 | vec.push((self.nodes[i].pair.key.clone(), self.nodes[i].pair.value.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.nodes[i].pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:258:23 [INFO] [stdout] | [INFO] [stdout] 258 | key: Some(self.nodes[0].pair.key.clone()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.nodes[0].pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/map/traversable/linked.rs:341:22 [INFO] [stdout] | [INFO] [stdout] 341 | for i in vec.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:383:27 [INFO] [stdout] | [INFO] [stdout] 383 | self.nodes.insert(pair.key.clone(), Node { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:389:20 [INFO] [stdout] | [INFO] [stdout] 389 | self.nodes[pair.key.clone()].links.push(None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:456:20 [INFO] [stdout] | [INFO] [stdout] 456 | self.nodes[pair.key.clone()].pair.value = pair.value.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:492:29 [INFO] [stdout] | [INFO] [stdout] 492 | node_a: self.nodes[i].pair.key.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.nodes[i].pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:493:29 [INFO] [stdout] | [INFO] [stdout] 493 | node_b: self.nodes[i].links[0].clone().unwrap().clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.nodes[i].links[0].clone().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:493:29 [INFO] [stdout] | [INFO] [stdout] 493 | node_b: self.nodes[i].links[0].clone().unwrap().clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.nodes[i].links[0]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/map/traversable/linked.rs:513:61 [INFO] [stdout] | [INFO] [stdout] 513 | fn is_bipartite(&self) -> bool { !self.is_circular() || (self.len() % 2 == 0) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: replace with: `self.len().is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:586:53 [INFO] [stdout] | [INFO] [stdout] 586 | self.nodes[len - 1].links[0] = Some(self.nodes[0].pair.key.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.nodes[0].pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `LinkedList` [INFO] [stdout] --> src/map/traversable/linked.rs:634:5 [INFO] [stdout] | [INFO] [stdout] 634 | / pub fn new() -> Self { [INFO] [stdout] 635 | | LinkedList { [INFO] [stdout] 636 | | circular: false, [INFO] [stdout] 637 | | nodes: Vec::new(), [INFO] [stdout] 638 | | } [INFO] [stdout] 639 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 615 + impl Default for LinkedList [INFO] [stdout] 616 + where [INFO] [stdout] 617 + V: PartialEq + PartialOrd + Clone + Debug, [INFO] [stdout] 618 + { [INFO] [stdout] 619 + fn default() -> Self { [INFO] [stdout] 620 + Self::new() [INFO] [stdout] 621 + } [INFO] [stdout] 622 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `index` is used as a loop counter [INFO] [stdout] --> src/map/traversable/linked.rs:625:9 [INFO] [stdout] | [INFO] [stdout] 625 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (index, i) in v.into_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] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/map/traversable/linked.rs:625:20 [INFO] [stdout] | [INFO] [stdout] 625 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `index` is used as a loop counter [INFO] [stdout] --> src/map/traversable/linked.rs:656:9 [INFO] [stdout] | [INFO] [stdout] 656 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (index, i) in v.into_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] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/map/traversable/linked.rs:656:20 [INFO] [stdout] | [INFO] [stdout] 656 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/map/traversable/linked.rs:702:9 [INFO] [stdout] | [INFO] [stdout] 702 | / if self.key.is_none() { [INFO] [stdout] 703 | | return None; [INFO] [stdout] 704 | | } [INFO] [stdout] | |_________^ help: replace it with: `self.key?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:712:37 [INFO] [stdout] | [INFO] [stdout] 712 | self.key = Some(self.list.nodes[i + 1].pair.key.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.list.nodes[i + 1].pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:752:57 [INFO] [stdout] | [INFO] [stdout] 752 | (self.key.is_some() && self.key.unwrap() != self.list.nodes[0].pair.key.clone()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.list.nodes[0].pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:764:29 [INFO] [stdout] | [INFO] [stdout] 764 | self.key = Some(self.list.nodes[self.list.nodes.len() - 1].pair.key.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.list.nodes[self.list.nodes.len() - 1].pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:772:33 [INFO] [stdout] | [INFO] [stdout] 772 | self.key = Some(self.list.nodes[i - 1].pair.key.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.list.nodes[i - 1].pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `DoublyLinkedListTraverser` [INFO] [stdout] --> src/map/traversable/linked.rs:788:5 [INFO] [stdout] | [INFO] [stdout] 788 | / pub fn new() -> Self { [INFO] [stdout] 789 | | DoublyLinkedListTraverser { [INFO] [stdout] 790 | | key: None, [INFO] [stdout] 791 | | list: DoublyLinkedList::new(), [INFO] [stdout] 792 | | } [INFO] [stdout] 793 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 783 + impl Default for DoublyLinkedListTraverser [INFO] [stdout] 784 + where [INFO] [stdout] 785 + V: PartialEq + PartialOrd + Clone + Debug, [INFO] [stdout] 786 + { [INFO] [stdout] 787 + fn default() -> Self { [INFO] [stdout] 788 + Self::new() [INFO] [stdout] 789 + } [INFO] [stdout] 790 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:930:23 [INFO] [stdout] | [INFO] [stdout] 930 | key: Some(self.nodes[0].pair.key.clone()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.nodes[0].pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/map/traversable/linked.rs:1014:22 [INFO] [stdout] | [INFO] [stdout] 1014 | for i in vec.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:1056:27 [INFO] [stdout] | [INFO] [stdout] 1056 | self.nodes.insert(pair.key.clone(), Node { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:1062:20 [INFO] [stdout] | [INFO] [stdout] 1062 | self.nodes[pair.key.clone()].links.push(None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:1063:20 [INFO] [stdout] | [INFO] [stdout] 1063 | self.nodes[pair.key.clone()].links.push(None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:1164:20 [INFO] [stdout] | [INFO] [stdout] 1164 | self.nodes[pair.key.clone()].pair.value = pair.value.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:1200:29 [INFO] [stdout] | [INFO] [stdout] 1200 | node_a: self.nodes[i].pair.key.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.nodes[i].pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:1201:29 [INFO] [stdout] | [INFO] [stdout] 1201 | node_b: self.nodes[i].links[1].clone().unwrap().clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.nodes[i].links[1].clone().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:1201:29 [INFO] [stdout] | [INFO] [stdout] 1201 | node_b: self.nodes[i].links[1].clone().unwrap().clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.nodes[i].links[1]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/map/traversable/linked.rs:1221:61 [INFO] [stdout] | [INFO] [stdout] 1221 | fn is_bipartite(&self) -> bool { !self.is_circular() || (self.len() % 2 == 0) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: replace with: `self.len().is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:1295:53 [INFO] [stdout] | [INFO] [stdout] 1295 | self.nodes[len - 1].links[1] = Some(self.nodes[0].pair.key.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.nodes[0].pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:1296:47 [INFO] [stdout] | [INFO] [stdout] 1296 | self.nodes[0].links[0] = Some(self.nodes[len - 1].pair.key.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.nodes[len - 1].pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `DoublyLinkedList` [INFO] [stdout] --> src/map/traversable/linked.rs:1347:5 [INFO] [stdout] | [INFO] [stdout] 1347 | / pub fn new() -> Self { [INFO] [stdout] 1348 | | DoublyLinkedList { [INFO] [stdout] 1349 | | circular: false, [INFO] [stdout] 1350 | | nodes: Vec::new(), [INFO] [stdout] 1351 | | } [INFO] [stdout] 1352 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 1327 + impl Default for DoublyLinkedList [INFO] [stdout] 1328 + where [INFO] [stdout] 1329 + V: PartialEq + PartialOrd + Clone + Debug, [INFO] [stdout] 1330 + { [INFO] [stdout] 1331 + fn default() -> Self { [INFO] [stdout] 1332 + Self::new() [INFO] [stdout] 1333 + } [INFO] [stdout] 1334 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `index` is used as a loop counter [INFO] [stdout] --> src/map/traversable/linked.rs:1338:9 [INFO] [stdout] | [INFO] [stdout] 1338 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (index, i) in v.into_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] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/map/traversable/linked.rs:1338:20 [INFO] [stdout] | [INFO] [stdout] 1338 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `index` is used as a loop counter [INFO] [stdout] --> src/map/traversable/linked.rs:1369:9 [INFO] [stdout] | [INFO] [stdout] 1369 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (index, i) in v.into_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] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/map/traversable/linked.rs:1369:20 [INFO] [stdout] | [INFO] [stdout] 1369 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: it looks like the same item is being pushed into this `Vec` [INFO] [stdout] --> src/map/traversable/graph.rs:189:13 [INFO] [stdout] | [INFO] [stdout] 189 | visited.push(false); [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using `vec![false;SIZE]` [INFO] [stdout] = help: or `visited.extend(std::iter::repeat_n(false, SIZE))` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#same_item_push [INFO] [stdout] = note: `#[warn(clippy::same_item_push)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:199:28 [INFO] [stdout] | [INFO] [stdout] 199 | let n: usize = queue.dequeue().unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `queue.dequeue().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `visited` [INFO] [stdout] --> src/map/traversable/graph.rs:203:22 [INFO] [stdout] | [INFO] [stdout] 203 | for i in 0..self.graph.amtx.columns() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 203 - for i in 0..self.graph.amtx.columns() { [INFO] [stdout] 203 + for (i, ) in visited.iter_mut().enumerate().take(self.graph.amtx.columns()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: it looks like the same item is being pushed into this `Vec` [INFO] [stdout] --> src/map/traversable/graph.rs:219:13 [INFO] [stdout] | [INFO] [stdout] 219 | visited.push(false); [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using `vec![false;SIZE]` [INFO] [stdout] = help: or `visited.extend(std::iter::repeat_n(false, SIZE))` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#same_item_push [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:233:36 [INFO] [stdout] | [INFO] [stdout] 233 | let n: usize = queue.dequeue().unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `queue.dequeue().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `j` is used to index `visited` [INFO] [stdout] --> src/map/traversable/graph.rs:237:30 [INFO] [stdout] | [INFO] [stdout] 237 | for j in 0..self.graph.amtx.columns() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 237 - for j in 0..self.graph.amtx.columns() { [INFO] [stdout] 237 + for (j, ) in visited.iter_mut().enumerate().take(self.graph.amtx.columns()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: it looks like the same item is being pushed into this `Vec` [INFO] [stdout] --> src/map/traversable/graph.rs:254:13 [INFO] [stdout] | [INFO] [stdout] 254 | visited.push(false); [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using `vec![false;SIZE]` [INFO] [stdout] = help: or `visited.extend(std::iter::repeat_n(false, SIZE))` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#same_item_push [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `visited` [INFO] [stdout] --> src/map/traversable/graph.rs:271:22 [INFO] [stdout] | [INFO] [stdout] 271 | for i in 0..self.graph.amtx.columns() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 271 - for i in 0..self.graph.amtx.columns() { [INFO] [stdout] 271 + for (i, ) in visited.iter().enumerate().take(self.graph.amtx.columns()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: it looks like the same item is being pushed into this `Vec` [INFO] [stdout] --> src/map/traversable/graph.rs:286:13 [INFO] [stdout] | [INFO] [stdout] 286 | visited.push(false); [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using `vec![false;SIZE]` [INFO] [stdout] = help: or `visited.extend(std::iter::repeat_n(false, SIZE))` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#same_item_push [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `j` is used to index `visited` [INFO] [stdout] --> src/map/traversable/graph.rs:305:26 [INFO] [stdout] | [INFO] [stdout] 305 | for j in 0..self.graph.amtx.columns() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 305 - for j in 0..self.graph.amtx.columns() { [INFO] [stdout] 305 + for (j, ) in visited.iter().enumerate().take(self.graph.amtx.columns()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `index` is used as a loop counter [INFO] [stdout] --> src/map/traversable/graph.rs:454:9 [INFO] [stdout] | [INFO] [stdout] 454 | for i in self.nodes.into_iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (index, i) in self.nodes.into_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] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:529:21 [INFO] [stdout] | [INFO] [stdout] 529 | if i == item.pair.key.clone() && self.nodes[i].clone() == item.pair.value.clone() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `item.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/map/traversable/graph.rs:539:18 [INFO] [stdout] | [INFO] [stdout] 539 | for i in 0..vec.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 539 - for i in 0..vec.len() { [INFO] [stdout] 539 + for in &vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:579:24 [INFO] [stdout] | [INFO] [stdout] 579 | if self.exists(key.clone()) { [INFO] [stdout] | ^^^^^^^^^^^ help: try removing the `clone` call: `key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:580:37 [INFO] [stdout] | [INFO] [stdout] 580 | return Some(&self.nodes[key.clone()]); [INFO] [stdout] | ^^^^^^^^^^^ help: try removing the `clone` call: `key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:589:24 [INFO] [stdout] | [INFO] [stdout] 589 | if self.exists(pair.key.clone()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:611:24 [INFO] [stdout] | [INFO] [stdout] 611 | if self.exists(pair.key.clone()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:612:24 [INFO] [stdout] | [INFO] [stdout] 612 | self.nodes[pair.key.clone()] = pair.value.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:633:24 [INFO] [stdout] | [INFO] [stdout] 633 | if self.exists(key.clone()) { [INFO] [stdout] | ^^^^^^^^^^^ help: try removing the `clone` call: `key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: it looks like the same item is being pushed into this `Vec` [INFO] [stdout] --> src/map/traversable/graph.rs:735:13 [INFO] [stdout] | [INFO] [stdout] 735 | color.push(0); [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using `vec![0;SIZE]` [INFO] [stdout] = help: or `color.extend(std::iter::repeat_n(0, SIZE))` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#same_item_push [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:745:28 [INFO] [stdout] | [INFO] [stdout] 745 | let n: usize = queue.dequeue().unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `queue.dequeue().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/graph.rs:803:9 [INFO] [stdout] | [INFO] [stdout] 803 | / return if DIRECTED { [INFO] [stdout] 804 | | self.amtx[(key_a, key_b)] != 0.0 [INFO] [stdout] 805 | | } [INFO] [stdout] 806 | | else { [INFO] [stdout] 807 | | self.amtx[(key_a, key_b)] != 0.0 || self.amtx[(key_b, key_a)] != 0.0 [INFO] [stdout] 808 | | } [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] 803 ~ if DIRECTED { [INFO] [stdout] 804 + self.amtx[(key_a, key_b)] != 0.0 [INFO] [stdout] 805 + } [INFO] [stdout] 806 + else { [INFO] [stdout] 807 + self.amtx[(key_a, key_b)] != 0.0 || self.amtx[(key_b, key_a)] != 0.0 [INFO] [stdout] 808 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/graph.rs:856:17 [INFO] [stdout] | [INFO] [stdout] 856 | return None; [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 None; [INFO] [stdout] 856 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/graph.rs:886:17 [INFO] [stdout] | [INFO] [stdout] 886 | return Some(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] 886 - return Some(path); [INFO] [stdout] 886 + Some(path) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/graph.rs:934:17 [INFO] [stdout] | [INFO] [stdout] 934 | return None; [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] 934 - return None; [INFO] [stdout] 934 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/graph.rs:946:17 [INFO] [stdout] | [INFO] [stdout] 946 | return Some(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] 946 - return Some(path); [INFO] [stdout] 946 + Some(path) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/map/traversable/graph.rs:844:21 [INFO] [stdout] | [INFO] [stdout] 844 | / if dist[i.node_a].is_finite() { [INFO] [stdout] 845 | | if dist[i.node_b] > dist[i.node_a] + i.weight { [INFO] [stdout] 846 | | dist[i.node_b] = dist[i.node_a] + i.weight; [INFO] [stdout] 847 | | pred[i.node_b] = i.node_a as isize; [INFO] [stdout] ... | [INFO] [stdout] 850 | | } [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] 844 ~ if dist[i.node_a].is_finite() [INFO] [stdout] 845 ~ && dist[i.node_b] > dist[i.node_a] + i.weight { [INFO] [stdout] 846 | dist[i.node_b] = dist[i.node_a] + i.weight; [INFO] [stdout] 847 | pred[i.node_b] = i.node_a as isize; [INFO] [stdout] 848 | neg_cycle = i.node_b as isize; [INFO] [stdout] 849 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against false can be replaced by a negation [INFO] [stdout] --> src/map/traversable/graph.rs:908:24 [INFO] [stdout] | [INFO] [stdout] 908 | if visited[i] == false && dist[i] <= min { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `!visited[i]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/map/traversable/graph.rs:973:21 [INFO] [stdout] | [INFO] [stdout] 973 | / if ecc == r { [INFO] [stdout] 974 | | vec.push(node.clone()); [INFO] [stdout] 975 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 972 ~ Some(ecc) [INFO] [stdout] 973 ~ if ecc == r => { [INFO] [stdout] 974 | vec.push(node.clone()); [INFO] [stdout] 975 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/graph.rs:971:13 [INFO] [stdout] | [INFO] [stdout] 971 | / match self.eccentricity(&node) { [INFO] [stdout] 972 | | Some(ecc) => { [INFO] [stdout] 973 | | if ecc == r { [INFO] [stdout] 974 | | vec.push(node.clone()); [INFO] [stdout] ... | [INFO] [stdout] 977 | | None => {}, [INFO] [stdout] 978 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 971 ~ if let Some(ecc) = self.eccentricity(&node) { [INFO] [stdout] 972 + if ecc == r { [INFO] [stdout] 973 + vec.push(node.clone()); [INFO] [stdout] 974 + } [INFO] [stdout] 975 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/graph.rs:1023:17 [INFO] [stdout] | [INFO] [stdout] 1023 | return None; [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] 1023 - return None; [INFO] [stdout] 1023 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/graph.rs:1029:21 [INFO] [stdout] | [INFO] [stdout] 1029 | return Some(f32::MIN); [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] 1029 - return Some(f32::MIN); [INFO] [stdout] 1029 + Some(f32::MIN) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/graph.rs:1033:21 [INFO] [stdout] | [INFO] [stdout] 1033 | return Some(dist[b.pair.key.clone()]); [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] 1033 - return Some(dist[b.pair.key.clone()]); [INFO] [stdout] 1033 + Some(dist[b.pair.key.clone()]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/graph.rs:1080:17 [INFO] [stdout] | [INFO] [stdout] 1080 | return None; [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] 1080 - return None; [INFO] [stdout] 1080 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/graph.rs:1084:17 [INFO] [stdout] | [INFO] [stdout] 1084 | return Some(dist[b.pair.key.clone()]); [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] 1084 - return Some(dist[b.pair.key.clone()]); [INFO] [stdout] 1084 + Some(dist[b.pair.key.clone()]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:989:12 [INFO] [stdout] | [INFO] [stdout] 989 | if a.pair.key.clone() >= self.nodes.len() || b.pair.key.clone() >= self.nodes.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `a.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:989:54 [INFO] [stdout] | [INFO] [stdout] 989 | if a.pair.key.clone() >= self.nodes.len() || b.pair.key.clone() >= self.nodes.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `b.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:1005:18 [INFO] [stdout] | [INFO] [stdout] 1005 | dist[a.pair.key.clone()] = 0.0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `a.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/map/traversable/graph.rs:1012:21 [INFO] [stdout] | [INFO] [stdout] 1012 | / if dist[i.node_a].is_finite() { [INFO] [stdout] 1013 | | if dist[i.node_b] > dist[i.node_a] + i.weight { [INFO] [stdout] 1014 | | dist[i.node_b] = dist[i.node_a] + i.weight; [INFO] [stdout] 1015 | | neg_cycle = i.node_b as isize; [INFO] [stdout] 1016 | | } [INFO] [stdout] 1017 | | } [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] 1012 ~ if dist[i.node_a].is_finite() [INFO] [stdout] 1013 ~ && dist[i.node_b] > dist[i.node_a] + i.weight { [INFO] [stdout] 1014 | dist[i.node_b] = dist[i.node_a] + i.weight; [INFO] [stdout] 1015 | neg_cycle = i.node_b as isize; [INFO] [stdout] 1016 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:1022:21 [INFO] [stdout] | [INFO] [stdout] 1022 | if dist[b.pair.key.clone()].is_infinite() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `b.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:1033:38 [INFO] [stdout] | [INFO] [stdout] 1033 | return Some(dist[b.pair.key.clone()]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `b.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:1047:18 [INFO] [stdout] | [INFO] [stdout] 1047 | dist[a.pair.key.clone()] = 0.0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `a.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against false can be replaced by a negation [INFO] [stdout] --> src/map/traversable/graph.rs:1055:24 [INFO] [stdout] | [INFO] [stdout] 1055 | if visited[i] == false && dist[i] <= min { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `!visited[i]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:1079:21 [INFO] [stdout] | [INFO] [stdout] 1079 | if dist[b.pair.key.clone()].is_infinite() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `b.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:1084:34 [INFO] [stdout] | [INFO] [stdout] 1084 | return Some(dist[b.pair.key.clone()]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `b.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:1094:12 [INFO] [stdout] | [INFO] [stdout] 1094 | if node.pair.key.clone() >= self.nodes.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `node.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:1102:21 [INFO] [stdout] | [INFO] [stdout] 1102 | if i != node.pair.key.clone() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `node.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/graph.rs:1106:17 [INFO] [stdout] | [INFO] [stdout] 1106 | / match self.distance(&node, &self.node(i).unwrap()) { [INFO] [stdout] 1107 | | Some(d) => dist = d, [INFO] [stdout] 1108 | | None => {}, [INFO] [stdout] 1109 | | } [INFO] [stdout] | |_________________^ help: try: `if let Some(d) = self.distance(&node, &self.node(i).unwrap()) { dist = d }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/map/traversable/graph.rs:1106:37 [INFO] [stdout] | [INFO] [stdout] 1106 | match self.distance(&node, &self.node(i).unwrap()) { [INFO] [stdout] | ^^^^^ help: change this to: `node` [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: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:1128:12 [INFO] [stdout] | [INFO] [stdout] 1128 | if a.pair.key.clone() >= self.nodes.len() || b.pair.key.clone() >= self.nodes.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `a.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:1128:54 [INFO] [stdout] | [INFO] [stdout] 1128 | if a.pair.key.clone() >= self.nodes.len() || b.pair.key.clone() >= self.nodes.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `b.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:1133:20 [INFO] [stdout] | [INFO] [stdout] 1133 | self.amtx[(a.pair.key.clone(), b.pair.key.clone())] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `a.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:1133:40 [INFO] [stdout] | [INFO] [stdout] 1133 | self.amtx[(a.pair.key.clone(), b.pair.key.clone())] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `b.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Graph` [INFO] [stdout] --> src/map/traversable/graph.rs:1176:5 [INFO] [stdout] | [INFO] [stdout] 1176 | / pub fn new() -> Self { [INFO] [stdout] 1177 | | Graph { [INFO] [stdout] 1178 | | amtx: AdjacencyMatrix::new(), [INFO] [stdout] 1179 | | nodes: Vec::new(), [INFO] [stdout] 1180 | | } [INFO] [stdout] 1181 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 1170 + impl Default for Graph [INFO] [stdout] 1171 + where [INFO] [stdout] 1172 + V: Clone + Debug + PartialEq + PartialOrd, [INFO] [stdout] 1173 + { [INFO] [stdout] 1174 + fn default() -> Self { [INFO] [stdout] 1175 + Self::new() [INFO] [stdout] 1176 + } [INFO] [stdout] 1177 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable.rs:63:17 [INFO] [stdout] | [INFO] [stdout] 63 | / return (other.node_a == self.node_a && other.node_b == self.node_b) && [INFO] [stdout] 64 | | self.weight == other.weight; [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] 63 ~ (other.node_a == self.node_a && other.node_b == self.node_b) && [INFO] [stdout] 64 ~ self.weight == other.weight [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable.rs:67:17 [INFO] [stdout] | [INFO] [stdout] 67 | return other.node_a == self.node_a && other.node_b == self.node_b; [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] 67 - return other.node_a == self.node_a && other.node_b == self.node_b; [INFO] [stdout] 67 + other.node_a == self.node_a && other.node_b == self.node_b [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable.rs:72:17 [INFO] [stdout] | [INFO] [stdout] 72 | / return (other.node_a == self.node_a || other.node_a == self.node_b) && [INFO] [stdout] 73 | | (other.node_b == self.node_a || other.node_b == self.node_b) && [INFO] [stdout] 74 | | self.weight == other.weight; [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] 72 ~ (other.node_a == self.node_a || other.node_a == self.node_b) && [INFO] [stdout] 73 + (other.node_b == self.node_a || other.node_b == self.node_b) && [INFO] [stdout] 74 ~ self.weight == other.weight [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable.rs:77:17 [INFO] [stdout] | [INFO] [stdout] 77 | / return (other.node_a == self.node_a || other.node_a == self.node_b) && [INFO] [stdout] 78 | | (other.node_b == self.node_a || other.node_b == self.node_b); [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] 77 ~ (other.node_a == self.node_a || other.node_a == self.node_b) && [INFO] [stdout] 78 ~ (other.node_b == self.node_a || other.node_b == self.node_b) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/map.rs:284:28 [INFO] [stdout] | [INFO] [stdout] 284 | vec.sort_by(|a, b| a.partial_cmp(b) [INFO] [stdout] | ____________________________^ [INFO] [stdout] 285 | | .unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] | |______________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 285 - .unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] 285 + .unwrap_or(Ordering::Less)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/map.rs:300:28 [INFO] [stdout] | [INFO] [stdout] 300 | vec.sort_by(|a, b| a.partial_cmp(b) [INFO] [stdout] | ____________________________^ [INFO] [stdout] 301 | | .unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] | |______________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 301 - .unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] 301 + .unwrap_or(Ordering::Less)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `index` is used as a loop counter [INFO] [stdout] --> src/map.rs:402:9 [INFO] [stdout] | [INFO] [stdout] 402 | for i in self.clone().into_iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (index, i) in self.clone().into_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] [INFO] [stdout] [INFO] [stdout] warning: the variable `index` is used as a loop counter [INFO] [stdout] --> src/map.rs:419:9 [INFO] [stdout] | [INFO] [stdout] 419 | for i in self.clone().into_iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (index, i) in self.clone().into_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] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Map` [INFO] [stdout] --> src/map.rs:448:5 [INFO] [stdout] | [INFO] [stdout] 448 | pub fn new() -> Self { Map { arr: Vec::new() } } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 433 + impl Default for Map [INFO] [stdout] 434 + where [INFO] [stdout] 435 + K: PartialEq + PartialOrd + Clone + Debug, [INFO] [stdout] 436 + V: Clone + Debug + PartialEq + PartialOrd, [INFO] [stdout] 437 + { [INFO] [stdout] 438 + fn default() -> Self { [INFO] [stdout] 439 + Self::new() [INFO] [stdout] 440 + } [INFO] [stdout] 441 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/map.rs:455:20 [INFO] [stdout] | [INFO] [stdout] 455 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/map.rs:569:35 [INFO] [stdout] | [INFO] [stdout] 569 | if self.arr[i].key == String::from(index) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] = note: `#[warn(clippy::cmp_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/map.rs:611:35 [INFO] [stdout] | [INFO] [stdout] 611 | if self.arr[i].key == String::from(index) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/map.rs:712:28 [INFO] [stdout] | [INFO] [stdout] 712 | vec.sort_by(|a, b| a.partial_cmp(b) [INFO] [stdout] | ____________________________^ [INFO] [stdout] 713 | | .unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] | |______________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 713 - .unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] 713 + .unwrap_or(Ordering::Less)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/map.rs:728:28 [INFO] [stdout] | [INFO] [stdout] 728 | vec.sort_by(|a, b| a.partial_cmp(b) [INFO] [stdout] | ____________________________^ [INFO] [stdout] 729 | | .unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] | |______________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 729 - .unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] 729 + .unwrap_or(Ordering::Less)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `index` is used as a loop counter [INFO] [stdout] --> src/map.rs:828:9 [INFO] [stdout] | [INFO] [stdout] 828 | for i in self.clone().into_iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (index, i) in self.clone().into_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] [INFO] [stdout] [INFO] [stdout] warning: the variable `index` is used as a loop counter [INFO] [stdout] --> src/map.rs:845:9 [INFO] [stdout] | [INFO] [stdout] 845 | for i in self.clone().into_iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (index, i) in self.clone().into_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] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Dictionary` [INFO] [stdout] --> src/map.rs:874:5 [INFO] [stdout] | [INFO] [stdout] 874 | pub fn new() -> Self { Dictionary { arr: Vec::new() } } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 859 + impl Default for Dictionary [INFO] [stdout] 860 + where [INFO] [stdout] 861 + V: PartialEq + PartialOrd + Clone + Debug, [INFO] [stdout] 862 + { [INFO] [stdout] 863 + fn default() -> Self { [INFO] [stdout] 864 + Self::new() [INFO] [stdout] 865 + } [INFO] [stdout] 866 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/map.rs:881:20 [INFO] [stdout] | [INFO] [stdout] 881 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map.rs:966:26 [INFO] [stdout] | [INFO] [stdout] 966 | Some(val) => return val, [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] 966 - Some(val) => return val, [INFO] [stdout] 966 + Some(val) => val, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map.rs:985:26 [INFO] [stdout] | [INFO] [stdout] 985 | Some(val) => return val, [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] 985 - Some(val) => return val, [INFO] [stdout] 985 + Some(val) => val, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map.rs:1116:24 [INFO] [stdout] | [INFO] [stdout] 1116 | Some(_) => return true, [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] 1116 - Some(_) => return true, [INFO] [stdout] 1116 + Some(_) => true, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map.rs:1117:21 [INFO] [stdout] | [INFO] [stdout] 1117 | None => return 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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 1117 - None => return false, [INFO] [stdout] 1117 + None => false, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `HashMap` [INFO] [stdout] --> src/map.rs:1141:5 [INFO] [stdout] | [INFO] [stdout] 1141 | pub fn new() -> Self { HashMap { map: std::collections::HashMap::new() } } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 1135 + impl Default for HashMap [INFO] [stdout] 1136 + where [INFO] [stdout] 1137 + K: PartialEq + PartialOrd + Clone + Debug + Eq + Hash, [INFO] [stdout] 1138 + V: PartialEq + PartialOrd + Clone + Debug, [INFO] [stdout] 1139 + { [INFO] [stdout] 1140 + fn default() -> Self { [INFO] [stdout] 1141 + Self::new() [INFO] [stdout] 1142 + } [INFO] [stdout] 1143 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/map.rs:1148:20 [INFO] [stdout] | [INFO] [stdout] 1148 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/grid.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 25 | / return if self.row < other.row { [INFO] [stdout] 26 | | Some(Ordering::Less) [INFO] [stdout] 27 | | } else if self.row > other.row { [INFO] [stdout] 28 | | Some(Ordering::Greater) [INFO] [stdout] ... | [INFO] [stdout] 37 | | } [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] 25 ~ if self.row < other.row { [INFO] [stdout] 26 + Some(Ordering::Less) [INFO] [stdout] 27 + } else if self.row > other.row { [INFO] [stdout] 28 + Some(Ordering::Greater) [INFO] [stdout] 29 + } else { [INFO] [stdout] 30 + if self.col < other.col { [INFO] [stdout] 31 + Some(Ordering::Less) [INFO] [stdout] 32 + } else if self.col > other.col { [INFO] [stdout] 33 + Some(Ordering::Greater) [INFO] [stdout] 34 + } else { [INFO] [stdout] 35 + Some(Ordering::Equal) [INFO] [stdout] 36 + } [INFO] [stdout] 37 + } [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/grid.rs:108:55 [INFO] [stdout] | [INFO] [stdout] 108 | fn insert_col_val(&mut self, col_idx: usize, val: &Vec); [INFO] [stdout] | ^^^^^^^ help: change this to: `&[T]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/grid.rs:125:55 [INFO] [stdout] | [INFO] [stdout] 125 | fn insert_row_val(&mut self, row_idx: usize, val: &Vec); [INFO] [stdout] | ^^^^^^^ help: change this to: `&[T]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/grid.rs:343:18 [INFO] [stdout] | [INFO] [stdout] 343 | for i in 0..vec.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 343 - for i in 0..vec.len() { [INFO] [stdout] 343 + for in &vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `val` [INFO] [stdout] --> src/grid.rs:521:18 [INFO] [stdout] | [INFO] [stdout] 521 | for i in 0..self.cols { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 521 - for i in 0..self.cols { [INFO] [stdout] 521 + for (i, ) in val.iter().enumerate().take(self.cols) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/grid.rs:544:12 [INFO] [stdout] | [INFO] [stdout] 544 | if list.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `list.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: you should consider adding a `Default` implementation for `Grid` [INFO] [stdout] --> src/grid.rs:670:5 [INFO] [stdout] | [INFO] [stdout] 670 | / pub fn new() -> Self { [INFO] [stdout] 671 | | Grid { [INFO] [stdout] 672 | | arr: Vec::new(), [INFO] [stdout] 673 | | cols: 0, [INFO] [stdout] ... | [INFO] [stdout] 676 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 664 + impl Default for Grid [INFO] [stdout] 665 + where [INFO] [stdout] 666 + T: PartialEq + PartialOrd + Clone + Default + Debug, [INFO] [stdout] 667 + { [INFO] [stdout] 668 + fn default() -> Self { [INFO] [stdout] 669 + Self::new() [INFO] [stdout] 670 + } [INFO] [stdout] 671 + } [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/grid.rs:721:50 [INFO] [stdout] | [INFO] [stdout] 721 | pub fn from_vec(rows: usize, cols: usize, v: &Vec) -> Self { [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] 721 - pub fn from_vec(rows: usize, cols: usize, v: &Vec) -> Self { [INFO] [stdout] 721 + pub fn from_vec(rows: usize, cols: usize, v: &[T]) -> Self { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/grid.rs:920:9 [INFO] [stdout] | [INFO] [stdout] 920 | / match &self.col_header { [INFO] [stdout] 921 | | Some(vec) => { [INFO] [stdout] 922 | | // Account for row header space. [INFO] [stdout] 923 | | match &self.row_header { [INFO] [stdout] ... | [INFO] [stdout] 940 | | None => {}, [INFO] [stdout] 941 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 920 ~ if let Some(vec) = &self.col_header { [INFO] [stdout] 921 + // Account for row header space. [INFO] [stdout] 922 + match &self.row_header { [INFO] [stdout] 923 + Some(_) => { [INFO] [stdout] 924 + for _ in 0..CELL_LENGTH { [INFO] [stdout] 925 + write!(f, " ") [INFO] [stdout] 926 + .expect("Unexpected error writing table to console."); [INFO] [stdout] 927 + } [INFO] [stdout] 928 + }, [INFO] [stdout] 929 + None => {}, [INFO] [stdout] 930 + } [INFO] [stdout] 931 + [INFO] [stdout] 932 + for i in 0..self.cols { [INFO] [stdout] 933 + write!(f, "|{}", vec[i]) [INFO] [stdout] 934 + .expect("Unexpected error writing table to console."); [INFO] [stdout] 935 + } [INFO] [stdout] 936 + write!(f, "|\n") [INFO] [stdout] 937 + .expect("Unexpected error writing table to console."); [INFO] [stdout] 938 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/grid.rs:923:17 [INFO] [stdout] | [INFO] [stdout] 923 | / match &self.row_header { [INFO] [stdout] 924 | | Some(_) => { [INFO] [stdout] 925 | | for _ in 0..CELL_LENGTH { [INFO] [stdout] 926 | | write!(f, " ") [INFO] [stdout] ... | [INFO] [stdout] 930 | | None => {}, [INFO] [stdout] 931 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 923 ~ if let Some(_) = &self.row_header { [INFO] [stdout] 924 + for _ in 0..CELL_LENGTH { [INFO] [stdout] 925 + write!(f, " ") [INFO] [stdout] 926 + .expect("Unexpected error writing table to console."); [INFO] [stdout] 927 + } [INFO] [stdout] 928 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/grid.rs:933:26 [INFO] [stdout] | [INFO] [stdout] 933 | for i in 0..self.cols { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 933 - for i in 0..self.cols { [INFO] [stdout] 933 + for in vec.iter().take(self.cols) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `write!()` with a format string that ends in a single newline [INFO] [stdout] --> src/grid.rs:937:17 [INFO] [stdout] | [INFO] [stdout] 937 | write!(f, "|\n") [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stdout] = note: `#[warn(clippy::write_with_newline)]` on by default [INFO] [stdout] help: use `writeln!` instead [INFO] [stdout] | [INFO] [stdout] 937 - write!(f, "|\n") [INFO] [stdout] 937 + writeln!(f, "|") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/grid.rs:945:13 [INFO] [stdout] | [INFO] [stdout] 945 | / match &self.row_header { [INFO] [stdout] 946 | | Some(_) => { [INFO] [stdout] 947 | | for _ in 0..CELL_LENGTH { [INFO] [stdout] 948 | | write!(f, "-") [INFO] [stdout] ... | [INFO] [stdout] 952 | | None => {}, [INFO] [stdout] 953 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 945 ~ if let Some(_) = &self.row_header { [INFO] [stdout] 946 + for _ in 0..CELL_LENGTH { [INFO] [stdout] 947 + write!(f, "-") [INFO] [stdout] 948 + .expect("Unexpected error writing table to console."); [INFO] [stdout] 949 + } [INFO] [stdout] 950 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `write!()` with a format string that ends in a single newline [INFO] [stdout] --> src/grid.rs:964:13 [INFO] [stdout] | [INFO] [stdout] 964 | write!(f, "+\n") [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stdout] help: use `writeln!` instead [INFO] [stdout] | [INFO] [stdout] 964 - write!(f, "+\n") [INFO] [stdout] 964 + writeln!(f, "+") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/grid.rs:968:13 [INFO] [stdout] | [INFO] [stdout] 968 | / match &self.row_header { [INFO] [stdout] 969 | | Some(vec) => { [INFO] [stdout] 970 | | write!(f, "{}", vec[i]) [INFO] [stdout] 971 | | .expect("Unexpected error writing table to console."); [INFO] [stdout] 972 | | }, [INFO] [stdout] 973 | | None => {}, [INFO] [stdout] 974 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 968 ~ if let Some(vec) = &self.row_header { [INFO] [stdout] 969 + write!(f, "{}", vec[i]) [INFO] [stdout] 970 + .expect("Unexpected error writing table to console."); [INFO] [stdout] 971 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `write!()` with a format string that ends in a single newline [INFO] [stdout] --> src/grid.rs:981:13 [INFO] [stdout] | [INFO] [stdout] 981 | write!(f, "|\n") [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stdout] help: use `writeln!` instead [INFO] [stdout] | [INFO] [stdout] 981 - write!(f, "|\n") [INFO] [stdout] 981 + writeln!(f, "|") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/grid.rs:986:9 [INFO] [stdout] | [INFO] [stdout] 986 | / match &self.row_header { [INFO] [stdout] 987 | | Some(_) => { [INFO] [stdout] 988 | | for _ in 0..CELL_LENGTH { [INFO] [stdout] 989 | | write!(f, "-") [INFO] [stdout] ... | [INFO] [stdout] 993 | | None => {}, [INFO] [stdout] 994 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 986 ~ if let Some(_) = &self.row_header { [INFO] [stdout] 987 + for _ in 0..CELL_LENGTH { [INFO] [stdout] 988 + write!(f, "-") [INFO] [stdout] 989 + .expect("Unexpected error writing table to console."); [INFO] [stdout] 990 + } [INFO] [stdout] 991 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `write!()` with a format string that ends in a single newline [INFO] [stdout] --> src/grid.rs:1005:9 [INFO] [stdout] | [INFO] [stdout] 1005 | write!(f, "+\n") [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stdout] help: use `writeln!` instead [INFO] [stdout] | [INFO] [stdout] 1005 - write!(f, "+\n") [INFO] [stdout] 1005 + writeln!(f, "+") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/grid.rs:1107:18 [INFO] [stdout] | [INFO] [stdout] 1107 | for i in 0..vec.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 1107 - for i in 0..vec.len() { [INFO] [stdout] 1107 + for in &vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/grid.rs:1208:9 [INFO] [stdout] | [INFO] [stdout] 1208 | / match &mut self.col_header { [INFO] [stdout] 1209 | | Some(vec) => { [INFO] [stdout] 1210 | | vec.insert(col_idx, [INFO] [stdout] 1211 | | Cell { [INFO] [stdout] ... | [INFO] [stdout] 1215 | | None => {}, [INFO] [stdout] 1216 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 1208 ~ if let Some(vec) = &mut self.col_header { [INFO] [stdout] 1209 + vec.insert(col_idx, [INFO] [stdout] 1210 + Cell { [INFO] [stdout] 1211 + data: CellType::String(String::new()), [INFO] [stdout] 1212 + }); [INFO] [stdout] 1213 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/grid.rs:1254:9 [INFO] [stdout] | [INFO] [stdout] 1254 | / match &mut self.col_header { [INFO] [stdout] 1255 | | Some(vec) => { [INFO] [stdout] 1256 | | vec.insert(col_idx, [INFO] [stdout] 1257 | | Cell { [INFO] [stdout] ... | [INFO] [stdout] 1261 | | None => {}, [INFO] [stdout] 1262 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 1254 ~ if let Some(vec) = &mut self.col_header { [INFO] [stdout] 1255 + vec.insert(col_idx, [INFO] [stdout] 1256 + Cell { [INFO] [stdout] 1257 + data: CellType::String(String::new()), [INFO] [stdout] 1258 + }); [INFO] [stdout] 1259 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/grid.rs:1294:9 [INFO] [stdout] | [INFO] [stdout] 1294 | / match &mut self.row_header { [INFO] [stdout] 1295 | | Some(vec) => { [INFO] [stdout] 1296 | | vec.insert(row_idx, [INFO] [stdout] 1297 | | Cell { [INFO] [stdout] ... | [INFO] [stdout] 1301 | | None => {}, [INFO] [stdout] 1302 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 1294 ~ if let Some(vec) = &mut self.row_header { [INFO] [stdout] 1295 + vec.insert(row_idx, [INFO] [stdout] 1296 + Cell { [INFO] [stdout] 1297 + data: CellType::String(String::new()), [INFO] [stdout] 1298 + }); [INFO] [stdout] 1299 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `val` [INFO] [stdout] --> src/grid.rs:1332:18 [INFO] [stdout] | [INFO] [stdout] 1332 | for i in 0..self.cols { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 1332 - for i in 0..self.cols { [INFO] [stdout] 1332 + for (i, ) in val.iter().enumerate().take(self.cols) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/grid.rs:1340:9 [INFO] [stdout] | [INFO] [stdout] 1340 | / match &mut self.row_header { [INFO] [stdout] 1341 | | Some(vec) => { [INFO] [stdout] 1342 | | vec.insert(row_idx, [INFO] [stdout] 1343 | | Cell { [INFO] [stdout] ... | [INFO] [stdout] 1347 | | None => {}, [INFO] [stdout] 1348 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 1340 ~ if let Some(vec) = &mut self.row_header { [INFO] [stdout] 1341 + vec.insert(row_idx, [INFO] [stdout] 1342 + Cell { [INFO] [stdout] 1343 + data: CellType::String(String::new()), [INFO] [stdout] 1344 + }); [INFO] [stdout] 1345 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/grid.rs:1369:12 [INFO] [stdout] | [INFO] [stdout] 1369 | if list.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `list.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: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/grid.rs:1408:9 [INFO] [stdout] | [INFO] [stdout] 1408 | / match &mut self.col_header { [INFO] [stdout] 1409 | | Some(vec) => { vec.remove(col_idx); }, [INFO] [stdout] 1410 | | None => (), [INFO] [stdout] 1411 | | } [INFO] [stdout] | |_________^ help: try: `if let Some(vec) = &mut self.col_header { vec.remove(col_idx); }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/grid.rs:1434:9 [INFO] [stdout] | [INFO] [stdout] 1434 | / match &mut self.row_header { [INFO] [stdout] 1435 | | Some(vec) => { vec.remove(row_idx); }, [INFO] [stdout] 1436 | | None => {}, [INFO] [stdout] 1437 | | } [INFO] [stdout] | |_________^ help: try: `if let Some(vec) = &mut self.row_header { vec.remove(row_idx); }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/grid.rs:1450:9 [INFO] [stdout] | [INFO] [stdout] 1450 | / match &mut self.col_header { [INFO] [stdout] 1451 | | Some(vec) => { [INFO] [stdout] 1452 | | vec.resize(cols, Cell::default()); [INFO] [stdout] ... | [INFO] [stdout] 1458 | | None => {}, [INFO] [stdout] 1459 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 1450 ~ if let Some(vec) = &mut self.col_header { [INFO] [stdout] 1451 + vec.resize(cols, Cell::default()); [INFO] [stdout] 1452 + [INFO] [stdout] 1453 + for i in self.cols..cols { [INFO] [stdout] 1454 + vec[i].data = CellType::String(String::new()); [INFO] [stdout] 1455 + } [INFO] [stdout] 1456 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/grid.rs:1454:26 [INFO] [stdout] | [INFO] [stdout] 1454 | for i in self.cols..cols { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 1454 - for i in self.cols..cols { [INFO] [stdout] 1454 + for in vec.iter_mut().take(cols).skip(self.cols) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/grid.rs:1462:9 [INFO] [stdout] | [INFO] [stdout] 1462 | / match &mut self.row_header { [INFO] [stdout] 1463 | | Some(vec) => { [INFO] [stdout] 1464 | | vec.resize(rows, Cell::default()); [INFO] [stdout] ... | [INFO] [stdout] 1470 | | None => {}, [INFO] [stdout] 1471 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 1462 ~ if let Some(vec) = &mut self.row_header { [INFO] [stdout] 1463 + vec.resize(rows, Cell::default()); [INFO] [stdout] 1464 + [INFO] [stdout] 1465 + for i in self.rows..rows { [INFO] [stdout] 1466 + vec[i].data = CellType::String(String::new()); [INFO] [stdout] 1467 + } [INFO] [stdout] 1468 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/grid.rs:1466:26 [INFO] [stdout] | [INFO] [stdout] 1466 | for i in self.rows..rows { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 1466 - for i in self.rows..rows { [INFO] [stdout] 1466 + for in vec.iter_mut().take(rows).skip(self.rows) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Table` [INFO] [stdout] --> src/grid.rs:1531:5 [INFO] [stdout] | [INFO] [stdout] 1531 | / pub fn new() -> Self { [INFO] [stdout] 1532 | | Table { [INFO] [stdout] 1533 | | arr: Vec::new(), [INFO] [stdout] 1534 | | col_header: None, [INFO] [stdout] ... | [INFO] [stdout] 1539 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 1528 + impl Default for Table { [INFO] [stdout] 1529 + fn default() -> Self { [INFO] [stdout] 1530 + Self::new() [INFO] [stdout] 1531 + } [INFO] [stdout] 1532 + } [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/grid.rs:1570:50 [INFO] [stdout] | [INFO] [stdout] 1570 | pub fn from_vec(rows: usize, cols: usize, v: &Vec) -> Self { [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] 1570 - pub fn from_vec(rows: usize, cols: usize, v: &Vec) -> Self { [INFO] [stdout] 1570 + pub fn from_vec(rows: usize, cols: usize, v: &[CellType]) -> Self { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `headers` [INFO] [stdout] --> src/grid.rs:1654:18 [INFO] [stdout] | [INFO] [stdout] 1654 | for i in 0..self.cols { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 1654 - for i in 0..self.cols { [INFO] [stdout] 1654 + for in headers.iter().take(self.cols) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `headers` [INFO] [stdout] --> src/grid.rs:1696:18 [INFO] [stdout] | [INFO] [stdout] 1696 | for i in 0..self.rows { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 1696 - for i in 0..self.rows { [INFO] [stdout] 1696 + for in headers.iter().take(self.rows) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f32` which implements the `Copy` trait [INFO] [stdout] --> src/grid.rs:1793:26 [INFO] [stdout] | [INFO] [stdout] 1793 | vec.push(self.arr[j + (i * self.cols)].clone()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.arr[j + (i * self.cols)]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/grid.rs:1846:18 [INFO] [stdout] | [INFO] [stdout] 1846 | for i in 0..vec.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 1846 - for i in 0..vec.len() { [INFO] [stdout] 1846 + for in &vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f32` which implements the `Copy` trait [INFO] [stdout] --> src/grid.rs:1889:22 [INFO] [stdout] | [INFO] [stdout] 1889 | vec.push(self.arr[index + (i * self.cols)].clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.arr[index + (i * self.cols)]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f32` which implements the `Copy` trait [INFO] [stdout] --> src/grid.rs:1907:22 [INFO] [stdout] | [INFO] [stdout] 1907 | vec.push(self.arr[i + (index * self.cols)].clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.arr[i + (index * self.cols)]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f32` which implements the `Copy` trait [INFO] [stdout] --> src/grid.rs:1964:56 [INFO] [stdout] | [INFO] [stdout] 1964 | self.arr.insert(col_idx + (i * self.cols), val[i].clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `val[i]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `val` [INFO] [stdout] --> src/grid.rs:2021:18 [INFO] [stdout] | [INFO] [stdout] 2021 | for i in 0..self.cols { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 2021 - for i in 0..self.cols { [INFO] [stdout] 2021 + for (i, ) in val.iter().enumerate().take(self.cols) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f32` which implements the `Copy` trait [INFO] [stdout] --> src/grid.rs:2022:56 [INFO] [stdout] | [INFO] [stdout] 2022 | self.arr.insert(i + (row_idx * self.cols), val[i].clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try removing the `clone` call: `val[i]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/grid.rs:2044:12 [INFO] [stdout] | [INFO] [stdout] 2044 | if list.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `list.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: using `clone` on type `f32` which implements the `Copy` trait [INFO] [stdout] --> src/grid.rs:2119:35 [INFO] [stdout] | [INFO] [stdout] 2119 | self.arr.push(temp[j + (i * cols)].clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `temp[j + (i * cols)]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `AdjacencyMatrix` [INFO] [stdout] --> src/grid.rs:2168:5 [INFO] [stdout] | [INFO] [stdout] 2168 | / pub fn new() -> Self { [INFO] [stdout] 2169 | | AdjacencyMatrix { [INFO] [stdout] 2170 | | arr: Vec::new(), [INFO] [stdout] 2171 | | cols: 0, [INFO] [stdout] ... | [INFO] [stdout] 2174 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 2165 + impl Default for AdjacencyMatrix { [INFO] [stdout] 2166 + fn default() -> Self { [INFO] [stdout] 2167 + Self::new() [INFO] [stdout] 2168 + } [INFO] [stdout] 2169 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f32` which implements the `Copy` trait [INFO] [stdout] --> src/grid.rs:2188:27 [INFO] [stdout] | [INFO] [stdout] 2188 | amtx.arr.push(val.clone()); [INFO] [stdout] | ^^^^^^^^^^^ help: try removing the `clone` call: `val` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/grid.rs:2219:50 [INFO] [stdout] | [INFO] [stdout] 2219 | pub fn from_vec(rows: usize, cols: usize, v: &Vec) -> Self { [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] 2219 - pub fn from_vec(rows: usize, cols: usize, v: &Vec) -> Self { [INFO] [stdout] 2219 + pub fn from_vec(rows: usize, cols: usize, v: &[f32]) -> Self { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `f32` which implements the `Copy` trait [INFO] [stdout] --> src/grid.rs:2231:35 [INFO] [stdout] | [INFO] [stdout] 2231 | amtx.arr.push(v[j + (i * amtx.cols)].clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `v[j + (i * amtx.cols)]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/supers.rs:219:18 [INFO] [stdout] | [INFO] [stdout] 219 | for i in 0..vec.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 219 - for i in 0..vec.len() { [INFO] [stdout] 219 + for in &vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Iterator::find` [INFO] [stdout] --> src/supers.rs:268:9 [INFO] [stdout] | [INFO] [stdout] 268 | / for i in 0..self.len() { [INFO] [stdout] 269 | | if self.arr[i] == *c { [INFO] [stdout] 270 | | return Some(i); [INFO] [stdout] ... | [INFO] [stdout] 274 | | None [INFO] [stdout] | |____________^ help: replace with an iterator: `(0..self.len()).find(|&i| self.arr[i] == *c)` [INFO] [stdout] | [INFO] [stdout] = note: you may need to dereference some variables [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_find [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `AdjacencyList` [INFO] [stdout] --> src/supers.rs:340:5 [INFO] [stdout] | [INFO] [stdout] 340 | pub fn new() -> Self { AdjacencyList { arr: Vec::new() } } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 334 + impl Default for AdjacencyList [INFO] [stdout] 335 + where [INFO] [stdout] 336 + T: PartialEq + PartialOrd + Clone + Debug, [INFO] [stdout] 337 + { [INFO] [stdout] 338 + fn default() -> Self { [INFO] [stdout] 339 + Self::new() [INFO] [stdout] 340 + } [INFO] [stdout] 341 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/supers.rs:498:18 [INFO] [stdout] | [INFO] [stdout] 498 | for i in 0..vec.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 498 - for i in 0..vec.len() { [INFO] [stdout] 498 + for in &vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Iterator::find` [INFO] [stdout] --> src/supers.rs:547:9 [INFO] [stdout] | [INFO] [stdout] 547 | / for i in 0..self.len() { [INFO] [stdout] 548 | | if self.arr[i] == *c { [INFO] [stdout] 549 | | return Some(i); [INFO] [stdout] ... | [INFO] [stdout] 553 | | None [INFO] [stdout] | |____________^ help: replace with an iterator: `(0..self.len()).find(|&i| self.arr[i] == *c)` [INFO] [stdout] | [INFO] [stdout] = note: you may need to dereference some variables [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_find [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `SuperList` [INFO] [stdout] --> src/supers.rs:619:5 [INFO] [stdout] | [INFO] [stdout] 619 | pub fn new() -> Self { SuperList { arr: Vec::new() } } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 613 + impl Default for SuperList [INFO] [stdout] 614 + where [INFO] [stdout] 615 + T: PartialEq + PartialOrd + Clone + Default + Copy + Debug, [INFO] [stdout] 616 + { [INFO] [stdout] 617 + fn default() -> Self { [INFO] [stdout] 618 + Self::new() [INFO] [stdout] 619 + } [INFO] [stdout] 620 + } [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/collection.rs:23:33 [INFO] [stdout] | [INFO] [stdout] 23 | fn contains_all(&self, vec: &Vec) -> bool; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Self::Element]` [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] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/array/list/vector.rs:231:28 [INFO] [stdout] | [INFO] [stdout] 231 | vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] = note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 231 - vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] 231 + vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or(Ordering::Less)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/array/list/vector.rs:241:28 [INFO] [stdout] | [INFO] [stdout] 241 | vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 241 - vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] 241 + vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or(Ordering::Less)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/array/list/vector.rs:269:18 [INFO] [stdout] | [INFO] [stdout] 269 | for i in 0..vec.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 269 - for i in 0..vec.len() { [INFO] [stdout] 269 + for in &vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Iterator::find` [INFO] [stdout] --> src/array/list/vector.rs:319:9 [INFO] [stdout] | [INFO] [stdout] 319 | / for i in 0..self.arr.len() { [INFO] [stdout] 320 | | if self.arr[i] == *item { [INFO] [stdout] 321 | | return Some(i); [INFO] [stdout] ... | [INFO] [stdout] 325 | | None [INFO] [stdout] | |____________^ help: replace with an iterator: `(0..self.arr.len()).find(|&i| self.arr[i] == *item)` [INFO] [stdout] | [INFO] [stdout] = note: you may need to dereference some variables [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_find [INFO] [stdout] = note: `#[warn(clippy::manual_find)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Iterator::find` [INFO] [stdout] --> src/array/list/vector.rs:332:9 [INFO] [stdout] | [INFO] [stdout] 332 | / for i in (0..self.arr.len()).rev() { [INFO] [stdout] 333 | | if self.arr[i] == *item { [INFO] [stdout] 334 | | return Some(i); [INFO] [stdout] ... | [INFO] [stdout] 339 | | None [INFO] [stdout] | |____________^ help: replace with an iterator: `(0..self.arr.len()).rev().find(|&i| self.arr[i] == *item)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_find [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/array/list/vector.rs:359:17 [INFO] [stdout] | [INFO] [stdout] 359 | return Some(ret); [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] 359 - return Some(ret); [INFO] [stdout] 359 + Some(ret) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/array/list/vector.rs:362:21 [INFO] [stdout] | [INFO] [stdout] 362 | None => return None, [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] 362 - None => return None, [INFO] [stdout] 362 + None => None, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `n` is used as a loop counter [INFO] [stdout] --> src/array/list/vector.rs:432:9 [INFO] [stdout] | [INFO] [stdout] 432 | for i in vec.into_iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (n, i) in vec.into_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: the variable `n` is used as a loop counter [INFO] [stdout] --> src/array/list/vector.rs:452:9 [INFO] [stdout] | [INFO] [stdout] 452 | for i in vec.into_iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (n, i) in vec.into_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] [INFO] [stdout] [INFO] [stdout] warning: this operation has no effect [INFO] [stdout] --> src/array/list/vector.rs:453:29 [INFO] [stdout] | [INFO] [stdout] 453 | self.arr.insert(0 + n, i); [INFO] [stdout] | ^^^^^ help: consider reducing it to: `n` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stdout] = note: `#[warn(clippy::identity_op)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/array/list/vector.rs:468:17 [INFO] [stdout] | [INFO] [stdout] 468 | return true; [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] 468 - return true; [INFO] [stdout] 468 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/array/list/vector.rs:470:21 [INFO] [stdout] | [INFO] [stdout] 470 | None => return 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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 470 - None => return false, [INFO] [stdout] 470 + None => false, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/array/list/vector.rs:511:17 [INFO] [stdout] | [INFO] [stdout] 511 | return true; [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] 511 - return true; [INFO] [stdout] 511 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/array/list/vector.rs:513:21 [INFO] [stdout] | [INFO] [stdout] 513 | None => return 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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 513 - None => return false, [INFO] [stdout] 513 + None => false, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/array/list/vector.rs:523:21 [INFO] [stdout] | [INFO] [stdout] 523 | / if !vec.contains(item) { [INFO] [stdout] 524 | | self.arr.remove(i); [INFO] [stdout] 525 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 522 ~ Some(item) [INFO] [stdout] 523 ~ if !vec.contains(item) => { [INFO] [stdout] 524 | self.arr.remove(i); [INFO] [stdout] 525 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/array/list/vector.rs:521:13 [INFO] [stdout] | [INFO] [stdout] 521 | / match self.arr.get(i) { [INFO] [stdout] 522 | | Some(item) => { [INFO] [stdout] 523 | | if !vec.contains(item) { [INFO] [stdout] 524 | | self.arr.remove(i); [INFO] [stdout] ... | [INFO] [stdout] 527 | | None => (), [INFO] [stdout] 528 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 521 ~ if let Some(item) = self.arr.get(i) { [INFO] [stdout] 522 + if !vec.contains(item) { [INFO] [stdout] 523 + self.arr.remove(i); [INFO] [stdout] 524 + } [INFO] [stdout] 525 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Vector` [INFO] [stdout] --> src/array/list/vector.rs:591:5 [INFO] [stdout] | [INFO] [stdout] 591 | / pub fn new() -> Self { [INFO] [stdout] 592 | | Vector { arr: Vec::new() } [INFO] [stdout] 593 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 571 + impl Default for Vector [INFO] [stdout] 572 + where [INFO] [stdout] 573 + T: PartialEq + Clone + Debug, [INFO] [stdout] 574 + { [INFO] [stdout] 575 + fn default() -> Self { [INFO] [stdout] 576 + Self::new() [INFO] [stdout] 577 + } [INFO] [stdout] 578 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `vec` [INFO] [stdout] --> src/array/list/vector.rs:585:18 [INFO] [stdout] | [INFO] [stdout] 585 | for i in 0..self.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 585 - for i in 0..self.len() { [INFO] [stdout] 585 + for (i, ) in vec.iter().enumerate().take(self.len()) { [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/array/list/vector.rs:597:24 [INFO] [stdout] | [INFO] [stdout] 597 | pub fn from_vec(v: &Vec) -> Self { [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] 597 ~ pub fn from_vec(v: &[T]) -> Self { [INFO] [stdout] 598 ~ Vector { arr: v.to_owned() } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/array/list.rs:250:28 [INFO] [stdout] | [INFO] [stdout] 250 | vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 250 - vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] 250 + vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or(Ordering::Less)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/array/list.rs:260:28 [INFO] [stdout] | [INFO] [stdout] 260 | vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 260 - vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] 260 + vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or(Ordering::Less)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/array/list.rs:284:18 [INFO] [stdout] | [INFO] [stdout] 284 | for i in 0..vec.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 284 - for i in 0..vec.len() { [INFO] [stdout] 284 + for in &vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Iterator::find` [INFO] [stdout] --> src/array/list.rs:330:9 [INFO] [stdout] | [INFO] [stdout] 330 | / for i in 0..self.arr.len() { [INFO] [stdout] 331 | | if self.arr[i] == *item { [INFO] [stdout] 332 | | return Some(i); [INFO] [stdout] ... | [INFO] [stdout] 337 | | None [INFO] [stdout] | |____________^ help: replace with an iterator: `(0..self.arr.len()).find(|&i| self.arr[i] == *item)` [INFO] [stdout] | [INFO] [stdout] = note: you may need to dereference some variables [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_find [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Iterator::find` [INFO] [stdout] --> src/array/list.rs:344:9 [INFO] [stdout] | [INFO] [stdout] 344 | / for i in (0..self.arr.len()).rev() { [INFO] [stdout] 345 | | if self.arr[i] == *item { [INFO] [stdout] 346 | | return Some(i); [INFO] [stdout] ... | [INFO] [stdout] 351 | | None [INFO] [stdout] | |____________^ help: replace with an iterator: `(0..self.arr.len()).rev().find(|&i| self.arr[i] == *item)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_find [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/array/list.rs:371:17 [INFO] [stdout] | [INFO] [stdout] 371 | return Some(ret); [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] 371 - return Some(ret); [INFO] [stdout] 371 + Some(ret) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/array/list.rs:374:21 [INFO] [stdout] | [INFO] [stdout] 374 | None => return None, [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] 374 - None => return None, [INFO] [stdout] 374 + None => None, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `n` is used as a loop counter [INFO] [stdout] --> src/array/list.rs:448:9 [INFO] [stdout] | [INFO] [stdout] 448 | for i in vec.into_iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (n, i) in vec.into_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] [INFO] [stdout] [INFO] [stdout] warning: the variable `n` is used as a loop counter [INFO] [stdout] --> src/array/list.rs:470:9 [INFO] [stdout] | [INFO] [stdout] 470 | for i in vec.into_iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (n, i) in vec.into_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] [INFO] [stdout] [INFO] [stdout] warning: this operation has no effect [INFO] [stdout] --> src/array/list.rs:471:29 [INFO] [stdout] | [INFO] [stdout] 471 | self.arr.insert(0 + n, i); [INFO] [stdout] | ^^^^^ help: consider reducing it to: `n` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/array/list.rs:489:17 [INFO] [stdout] | [INFO] [stdout] 489 | return true; [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] 489 - return true; [INFO] [stdout] 489 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/array/list.rs:491:21 [INFO] [stdout] | [INFO] [stdout] 491 | None => return 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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 491 - None => return false, [INFO] [stdout] 491 + None => false, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/array/list.rs:534:17 [INFO] [stdout] | [INFO] [stdout] 534 | return true; [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] 534 - return true; [INFO] [stdout] 534 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/array/list.rs:536:21 [INFO] [stdout] | [INFO] [stdout] 536 | None => return 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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 536 - None => return false, [INFO] [stdout] 536 + None => false, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/array/list.rs:546:21 [INFO] [stdout] | [INFO] [stdout] 546 | / if !vec.contains(item) { [INFO] [stdout] 547 | | self.arr.remove(i); [INFO] [stdout] 548 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 545 ~ Some(item) [INFO] [stdout] 546 ~ if !vec.contains(item) => { [INFO] [stdout] 547 | self.arr.remove(i); [INFO] [stdout] 548 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/array/list.rs:544:13 [INFO] [stdout] | [INFO] [stdout] 544 | / match self.arr.get(i) { [INFO] [stdout] 545 | | Some(item) => { [INFO] [stdout] 546 | | if !vec.contains(item) { [INFO] [stdout] 547 | | self.arr.remove(i); [INFO] [stdout] ... | [INFO] [stdout] 550 | | None => (), [INFO] [stdout] 551 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 544 ~ if let Some(item) = self.arr.get(i) { [INFO] [stdout] 545 + if !vec.contains(item) { [INFO] [stdout] 546 + self.arr.remove(i); [INFO] [stdout] 547 + } [INFO] [stdout] 548 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `List` [INFO] [stdout] --> src/array/list.rs:581:5 [INFO] [stdout] | [INFO] [stdout] 581 | pub fn new() -> Self { List { arr: Vec::new() } } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 561 + impl Default for List [INFO] [stdout] 562 + where [INFO] [stdout] 563 + T: PartialEq + Clone + Debug, [INFO] [stdout] 564 + { [INFO] [stdout] 565 + fn default() -> Self { [INFO] [stdout] 566 + Self::new() [INFO] [stdout] 567 + } [INFO] [stdout] 568 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `vec` [INFO] [stdout] --> src/array/list.rs:575:18 [INFO] [stdout] | [INFO] [stdout] 575 | for i in 0..self.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 575 - for i in 0..self.len() { [INFO] [stdout] 575 + for (i, ) in vec.iter().enumerate().take(self.len()) { [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/array/list.rs:585:24 [INFO] [stdout] | [INFO] [stdout] 585 | pub fn from_vec(v: &Vec) -> Self { List { arr: v.clone() } } [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] 585 - pub fn from_vec(v: &Vec) -> Self { List { arr: v.clone() } } [INFO] [stdout] 585 + pub fn from_vec(v: &[T]) -> Self { List { arr: v.to_owned() } } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `[T; N]` which implements the `Copy` trait [INFO] [stdout] --> src/array.rs:82:22 [INFO] [stdout] | [INFO] [stdout] 82 | Array { arr: self.arr.clone() } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.arr` [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: unnecessary use of `to_vec` [INFO] [stdout] --> src/array.rs:156:44 [INFO] [stdout] | [INFO] [stdout] 156 | fn into_iter(self) -> Self::IntoIter { self.arr.to_vec().into_iter() } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `self.arr.iter().copied()` [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 closure used to substitute value for `Option::None` [INFO] [stdout] --> src/array.rs:245:28 [INFO] [stdout] | [INFO] [stdout] 245 | vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 245 - vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] 245 + vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or(Ordering::Less)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/array.rs:255:28 [INFO] [stdout] | [INFO] [stdout] 255 | vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 255 - vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or_else(|| Ordering::Less)); [INFO] [stdout] 255 + vec.sort_by(|a, b| a.partial_cmp(b).unwrap_or(Ordering::Less)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/array.rs:283:18 [INFO] [stdout] | [INFO] [stdout] 283 | for i in 0..vec.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 283 - for i in 0..vec.len() { [INFO] [stdout] 283 + for in &vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Iterator::find` [INFO] [stdout] --> src/array.rs:333:9 [INFO] [stdout] | [INFO] [stdout] 333 | / for i in 0..self.arr.len() { [INFO] [stdout] 334 | | if self.arr[i] == *item { [INFO] [stdout] 335 | | return Some(i); [INFO] [stdout] ... | [INFO] [stdout] 340 | | None [INFO] [stdout] | |____________^ help: replace with an iterator: `(0..self.arr.len()).find(|&i| self.arr[i] == *item)` [INFO] [stdout] | [INFO] [stdout] = note: you may need to dereference some variables [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_find [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Iterator::find` [INFO] [stdout] --> src/array.rs:347:9 [INFO] [stdout] | [INFO] [stdout] 347 | / for i in (0..self.arr.len()).rev() { [INFO] [stdout] 348 | | if self.arr[i] == *item { [INFO] [stdout] 349 | | return Some(i); [INFO] [stdout] ... | [INFO] [stdout] 354 | | None [INFO] [stdout] | |____________^ help: replace with an iterator: `(0..self.arr.len()).rev().find(|&i| self.arr[i] == *item)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_find [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/array.rs:374:17 [INFO] [stdout] | [INFO] [stdout] 374 | return Some(ret); [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] 374 - return Some(ret); [INFO] [stdout] 374 + Some(ret) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/array.rs:377:21 [INFO] [stdout] | [INFO] [stdout] 377 | None => return None, [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] 377 - None => return None, [INFO] [stdout] 377 + None => None, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `T` which implements the `Copy` trait [INFO] [stdout] --> src/array.rs:372:27 [INFO] [stdout] | [INFO] [stdout] 372 | let ret = i.clone(); [INFO] [stdout] | ^^^^^^^^^ help: try dereferencing it: `*i` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Array` [INFO] [stdout] --> src/array.rs:422:5 [INFO] [stdout] | [INFO] [stdout] 422 | / pub fn new() -> Self { [INFO] [stdout] 423 | | Array { arr: [T::default(); N] } [INFO] [stdout] 424 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 400 + impl Default for Array [INFO] [stdout] 401 + where [INFO] [stdout] 402 + T: PartialEq + Clone + Default + Copy + Debug, [INFO] [stdout] 403 + { [INFO] [stdout] 404 + fn default() -> Self { [INFO] [stdout] 405 + Self::new() [INFO] [stdout] 406 + } [INFO] [stdout] 407 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `vec` [INFO] [stdout] --> src/array.rs:416:18 [INFO] [stdout] | [INFO] [stdout] 416 | for i in 0..self.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 416 - for i in 0..self.len() { [INFO] [stdout] 416 + for (i, ) in vec.iter().enumerate().take(self.len()) { [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/array.rs:429:24 [INFO] [stdout] | [INFO] [stdout] 429 | pub fn from_vec(v: &Vec) -> Self { [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] 429 - pub fn from_vec(v: &Vec) -> Self { [INFO] [stdout] 429 + pub fn from_vec(v: &[T]) -> Self { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `T` which implements the `Copy` trait [INFO] [stdout] --> src/array.rs:435:32 [INFO] [stdout] | [INFO] [stdout] 435 | array.arr[i] = v[i].clone(); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `v[i]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/queue/deque.rs:187:18 [INFO] [stdout] | [INFO] [stdout] 187 | for i in 0..vec.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 187 - for i in 0..vec.len() { [INFO] [stdout] 187 + for in &vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Deque` [INFO] [stdout] --> src/queue/deque.rs:282:5 [INFO] [stdout] | [INFO] [stdout] 282 | / pub fn new() -> Self { [INFO] [stdout] 283 | | Deque { deq: VecDeque::with_capacity(DEF_DEQUE_CAPACITY) } [INFO] [stdout] 284 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 277 + impl Default for Deque [INFO] [stdout] 278 + where [INFO] [stdout] 279 + T: PartialEq + PartialOrd + Clone + Debug, [INFO] [stdout] 280 + { [INFO] [stdout] 281 + fn default() -> Self { [INFO] [stdout] 282 + Self::new() [INFO] [stdout] 283 + } [INFO] [stdout] 284 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/queue/deque.rs:291:20 [INFO] [stdout] | [INFO] [stdout] 291 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] = note: `#[warn(clippy::into_iter_on_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/queue.rs:191:18 [INFO] [stdout] | [INFO] [stdout] 191 | for i in 0..vec.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 191 - for i in 0..vec.len() { [INFO] [stdout] 191 + for in &vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Queue` [INFO] [stdout] --> src/queue.rs:245:5 [INFO] [stdout] | [INFO] [stdout] 245 | / pub fn new() -> Self { [INFO] [stdout] 246 | | Queue { deq: VecDeque::with_capacity(DEF_QUEUE_CAPACITY) } [INFO] [stdout] 247 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 240 + impl Default for Queue [INFO] [stdout] 241 + where [INFO] [stdout] 242 + T: PartialEq + PartialOrd + Clone + Debug, [INFO] [stdout] 243 + { [INFO] [stdout] 244 + fn default() -> Self { [INFO] [stdout] 245 + Self::new() [INFO] [stdout] 246 + } [INFO] [stdout] 247 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/queue.rs:254:20 [INFO] [stdout] | [INFO] [stdout] 254 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/stack.rs:171:18 [INFO] [stdout] | [INFO] [stdout] 171 | for i in 0..vec.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 171 - for i in 0..vec.len() { [INFO] [stdout] 171 + for in &vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Stack` [INFO] [stdout] --> src/stack.rs:222:5 [INFO] [stdout] | [INFO] [stdout] 222 | / pub fn new() -> Self { [INFO] [stdout] 223 | | Stack { deq: VecDeque::with_capacity(DEF_STACK_CAPACITY) } [INFO] [stdout] 224 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 217 + impl Default for Stack [INFO] [stdout] 218 + where [INFO] [stdout] 219 + T: PartialEq + PartialOrd + Clone + Debug, [INFO] [stdout] 220 + { [INFO] [stdout] 221 + fn default() -> Self { [INFO] [stdout] 222 + Self::new() [INFO] [stdout] 223 + } [INFO] [stdout] 224 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/stack.rs:231:20 [INFO] [stdout] | [INFO] [stdout] 231 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/set.rs:181:18 [INFO] [stdout] | [INFO] [stdout] 181 | for i in 0..vec.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 181 - for i in 0..vec.len() { [INFO] [stdout] 181 + for in &vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/set.rs:268:21 [INFO] [stdout] | [INFO] [stdout] 268 | / if !vec.contains(item) { [INFO] [stdout] 269 | | self.arr.remove(i); [INFO] [stdout] 270 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 267 ~ Some(item) [INFO] [stdout] 268 ~ if !vec.contains(item) => { [INFO] [stdout] 269 | self.arr.remove(i); [INFO] [stdout] 270 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/set.rs:266:13 [INFO] [stdout] | [INFO] [stdout] 266 | / match self.arr.get(i) { [INFO] [stdout] 267 | | Some(item) => { [INFO] [stdout] 268 | | if !vec.contains(item) { [INFO] [stdout] 269 | | self.arr.remove(i); [INFO] [stdout] ... | [INFO] [stdout] 272 | | None => (), [INFO] [stdout] 273 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 266 ~ if let Some(item) = self.arr.get(i) { [INFO] [stdout] 267 + if !vec.contains(item) { [INFO] [stdout] 268 + self.arr.remove(i); [INFO] [stdout] 269 + } [INFO] [stdout] 270 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Set` [INFO] [stdout] --> src/set.rs:287:5 [INFO] [stdout] | [INFO] [stdout] 287 | / pub fn new() -> Self { [INFO] [stdout] 288 | | Set { [INFO] [stdout] 289 | | arr: Vec::new(), [INFO] [stdout] 290 | | not: false, [INFO] [stdout] 291 | | } [INFO] [stdout] 292 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 281 + impl Default for Set [INFO] [stdout] 282 + where [INFO] [stdout] 283 + T: PartialEq + Clone + Debug, [INFO] [stdout] 284 + { [INFO] [stdout] 285 + fn default() -> Self { [INFO] [stdout] 286 + Self::new() [INFO] [stdout] 287 + } [INFO] [stdout] 288 + } [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/set.rs:307:24 [INFO] [stdout] | [INFO] [stdout] 307 | pub fn from_vec(v: &Vec) -> Self { [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] 307 ~ pub fn from_vec(v: &[T]) -> Self { [INFO] [stdout] 308 | Set { [INFO] [stdout] 309 ~ arr: v.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/set.rs:319:28 [INFO] [stdout] | [INFO] [stdout] 319 | pub fn not_from_vec(v: &Vec) -> Self { [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] 319 ~ pub fn not_from_vec(v: &[T]) -> Self { [INFO] [stdout] 320 | Set { [INFO] [stdout] 321 ~ arr: v.to_owned(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `va` [INFO] [stdout] --> src/set.rs:364:22 [INFO] [stdout] | [INFO] [stdout] 364 | for i in 0..va.len() { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 364 - for i in 0..va.len() { [INFO] [stdout] 364 + for in &va { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vb` [INFO] [stdout] --> src/set.rs:369:22 [INFO] [stdout] | [INFO] [stdout] 369 | for i in 0..vb.len() { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 369 - for i in 0..vb.len() { [INFO] [stdout] 369 + for in &vb { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vb` [INFO] [stdout] --> src/set.rs:376:22 [INFO] [stdout] | [INFO] [stdout] 376 | for i in 0..vb.len() { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 376 - for i in 0..vb.len() { [INFO] [stdout] 376 + for in &vb { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `va` [INFO] [stdout] --> src/set.rs:381:22 [INFO] [stdout] | [INFO] [stdout] 381 | for i in 0..va.len() { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 381 - for i in 0..va.len() { [INFO] [stdout] 381 + for in &va { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/set.rs:414:33 [INFO] [stdout] | [INFO] [stdout] 414 | if set.not && a.not { [INFO] [stdout] | _________________________________^ [INFO] [stdout] 415 | | set.add(i); [INFO] [stdout] 416 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/set.rs:418:30 [INFO] [stdout] | [INFO] [stdout] 418 | else if !set.not { [INFO] [stdout] | ______________________________^ [INFO] [stdout] 419 | | set.add(i); [INFO] [stdout] 420 | | } [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: this `if` has identical blocks [INFO] [stdout] --> src/set.rs:462:37 [INFO] [stdout] | [INFO] [stdout] 462 | else if a.not && !b.not { [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 463 | | if b.contains(&i) { [INFO] [stdout] 464 | | set.add(i); [INFO] [stdout] 465 | | } [INFO] [stdout] 466 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/set.rs:469:37 [INFO] [stdout] | [INFO] [stdout] 469 | else if !a.not && b.not { [INFO] [stdout] | _____________________________________^ [INFO] [stdout] 470 | | if b.contains(&i) { [INFO] [stdout] 471 | | set.add(i); [INFO] [stdout] 472 | | } [INFO] [stdout] 473 | | } [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] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/set.rs:469:18 [INFO] [stdout] | [INFO] [stdout] 469 | else if !a.not && b.not { [INFO] [stdout] | __________________^ [INFO] [stdout] 470 | | if b.contains(&i) { [INFO] [stdout] 471 | | set.add(i); [INFO] [stdout] 472 | | } [INFO] [stdout] 473 | | } [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] 469 ~ else if !a.not && b.not [INFO] [stdout] 470 ~ && b.contains(&i) { [INFO] [stdout] 471 | set.add(i); [INFO] [stdout] 472 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/set.rs:631:18 [INFO] [stdout] | [INFO] [stdout] 631 | for i in 0..vec.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 631 - for i in 0..vec.len() { [INFO] [stdout] 631 + for in &vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `HashSet` [INFO] [stdout] --> src/set.rs:731:5 [INFO] [stdout] | [INFO] [stdout] 731 | pub fn new() -> Self { HashSet { set: std::collections::HashSet::new() } } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 725 + impl Default for HashSet [INFO] [stdout] 726 + where [INFO] [stdout] 727 + T: PartialEq + Clone + Debug + Eq + Hash, [INFO] [stdout] 728 + { [INFO] [stdout] 729 + fn default() -> Self { [INFO] [stdout] 730 + Self::new() [INFO] [stdout] 731 + } [INFO] [stdout] 732 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/set.rs:738:20 [INFO] [stdout] | [INFO] [stdout] 738 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `TreeTraverser` [INFO] [stdout] --> src/map/traversable/tree.rs:248:5 [INFO] [stdout] | [INFO] [stdout] 248 | / pub fn new() -> Self { [INFO] [stdout] 249 | | TreeTraverser { [INFO] [stdout] 250 | | mode: TreeTraversalMode::Inorder, [INFO] [stdout] 251 | | trav: DoublyLinkedListTraverser::new(), [INFO] [stdout] ... | [INFO] [stdout] 254 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 241 + impl Default for TreeTraverser [INFO] [stdout] 242 + where [INFO] [stdout] 243 + K: PartialEq + PartialOrd + Clone + Debug + Eq + Hash, [INFO] [stdout] 244 + V: PartialEq + PartialOrd + Clone + Debug, [INFO] [stdout] 245 + { [INFO] [stdout] 246 + fn default() -> Self { [INFO] [stdout] 247 + Self::new() [INFO] [stdout] 248 + } [INFO] [stdout] 249 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:259:9 [INFO] [stdout] | [INFO] [stdout] 259 | let curr: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `curr` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 259 ~ [INFO] [stdout] 260 | [INFO] [stdout] 261 ~ let curr: Node = if node == self.tree.root.clone().unwrap().pair.key { [INFO] [stdout] 262 ~ self.tree.root.clone().unwrap().clone() [INFO] [stdout] 263 | } [INFO] [stdout] 264 | else { [INFO] [stdout] 265 ~ self.tree.nodes[node.clone()].clone() [INFO] [stdout] 266 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:306:9 [INFO] [stdout] | [INFO] [stdout] 306 | let curr: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `curr` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 306 ~ [INFO] [stdout] 307 | [INFO] [stdout] 308 ~ let curr: Node = if node == self.tree.root.clone().unwrap().pair.key { [INFO] [stdout] 309 ~ self.tree.root.clone().unwrap().clone() [INFO] [stdout] 310 | } [INFO] [stdout] 311 | else { [INFO] [stdout] 312 ~ self.tree.nodes[node.clone()].clone() [INFO] [stdout] 313 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:333:9 [INFO] [stdout] | [INFO] [stdout] 333 | let curr: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `curr` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 333 ~ [INFO] [stdout] 334 | [INFO] [stdout] 335 ~ let curr: Node = if node == self.tree.root.clone().unwrap().pair.key { [INFO] [stdout] 336 ~ self.tree.root.clone().unwrap().clone() [INFO] [stdout] 337 | } [INFO] [stdout] 338 | else { [INFO] [stdout] 339 ~ self.tree.nodes[node.clone()].clone() [INFO] [stdout] 340 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:356:9 [INFO] [stdout] | [INFO] [stdout] 356 | let curr: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `curr` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 356 ~ [INFO] [stdout] 357 | [INFO] [stdout] 358 ~ let curr: Node = if node == self.tree.root.clone().unwrap().pair.key { [INFO] [stdout] 359 ~ self.tree.root.clone().unwrap().clone() [INFO] [stdout] 360 | } [INFO] [stdout] 361 | else { [INFO] [stdout] 362 ~ self.tree.nodes[node.clone()].clone() [INFO] [stdout] 363 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `self.root` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:578:39 [INFO] [stdout] | [INFO] [stdout] 577 | if self.root.is_some() { [INFO] [stdout] | ---------------------- help: try: `if let Some() = self.root` [INFO] [stdout] 578 | t.inorder_rec(&mut order, self.root.unwrap().pair.key.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/map/traversable/tree.rs:662:18 [INFO] [stdout] | [INFO] [stdout] 662 | for i in 0..vec.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 662 - for i in 0..vec.len() { [INFO] [stdout] 662 + for in &vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/map/traversable/tree.rs:674:22 [INFO] [stdout] | [INFO] [stdout] 674 | for i in vec.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/map/traversable/tree.rs:722:9 [INFO] [stdout] | [INFO] [stdout] 722 | !self.root.is_none() && (self.root.clone().unwrap().pair.key == key || self.nodes.exists(key)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `self.root.is_some()` [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: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:746:26 [INFO] [stdout] | [INFO] [stdout] 745 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] 746 | return Some(&node.unwrap().pair.value); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/map/traversable/tree.rs:729:9 [INFO] [stdout] | [INFO] [stdout] 729 | / if self.root.is_none() { [INFO] [stdout] 730 | | return None; [INFO] [stdout] 731 | | } [INFO] [stdout] | |_________^ help: replace it with: `self.root.as_ref()?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:829:17 [INFO] [stdout] | [INFO] [stdout] 829 | / match &mut self.root { [INFO] [stdout] 830 | | Some(ref mut r) => { [INFO] [stdout] 831 | | for i in (1..r.links.len()).rev() { [INFO] [stdout] 832 | | match &r.links[i] { [INFO] [stdout] ... | [INFO] [stdout] 842 | | None => {}, [INFO] [stdout] 843 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 829 ~ if let Some(ref mut r) = &mut self.root { [INFO] [stdout] 830 + for i in (1..r.links.len()).rev() { [INFO] [stdout] 831 + match &r.links[i] { [INFO] [stdout] 832 + Some(link) => { [INFO] [stdout] 833 + if *link == node { [INFO] [stdout] 834 + r.links.remove(i); [INFO] [stdout] 835 + } [INFO] [stdout] 836 + }, [INFO] [stdout] 837 + None => {}, [INFO] [stdout] 838 + } [INFO] [stdout] 839 + } [INFO] [stdout] 840 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/map/traversable/tree.rs:834:37 [INFO] [stdout] | [INFO] [stdout] 834 | / ... if *link == node { [INFO] [stdout] 835 | | ... r.links.remove(i); [INFO] [stdout] 836 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 833 ~ Some(link) [INFO] [stdout] 834 ~ if *link == node => { [INFO] [stdout] 835 | r.links.remove(i); [INFO] [stdout] 836 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:832:29 [INFO] [stdout] | [INFO] [stdout] 832 | / ... match &r.links[i] { [INFO] [stdout] 833 | | ... Some(link) => { [INFO] [stdout] 834 | | ... if *link == node { [INFO] [stdout] 835 | | ... r.links.remove(i); [INFO] [stdout] ... | [INFO] [stdout] 838 | | ... None => {}, [INFO] [stdout] 839 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 832 ~ if let Some(link) = &r.links[i] { [INFO] [stdout] 833 + if *link == node { [INFO] [stdout] 834 + r.links.remove(i); [INFO] [stdout] 835 + } [INFO] [stdout] 836 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/map/traversable/tree.rs:850:33 [INFO] [stdout] | [INFO] [stdout] 850 | / ... if *link == node { [INFO] [stdout] 851 | | ... self.nodes[i.key.clone()].links.remove(j); [INFO] [stdout] 852 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 849 ~ Some(link) [INFO] [stdout] 850 ~ if *link == node => { [INFO] [stdout] 851 | self.nodes[i.key.clone()].links.remove(j); [INFO] [stdout] 852 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:848:25 [INFO] [stdout] | [INFO] [stdout] 848 | / match &self.nodes[i.key.clone()].links[j] { [INFO] [stdout] 849 | | Some(link) => { [INFO] [stdout] 850 | | if *link == node { [INFO] [stdout] 851 | | self.nodes[i.key.clone()].links.remove(j); [INFO] [stdout] ... | [INFO] [stdout] 854 | | None => {}, [INFO] [stdout] 855 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 848 ~ if let Some(link) = &self.nodes[i.key.clone()].links[j] { [INFO] [stdout] 849 + if *link == node { [INFO] [stdout] 850 + self.nodes[i.key.clone()].links.remove(j); [INFO] [stdout] 851 + } [INFO] [stdout] 852 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:878:13 [INFO] [stdout] | [INFO] [stdout] 878 | / match &mut self.root { [INFO] [stdout] 879 | | Some(ref mut r) => r.pair.value = pair.value, [INFO] [stdout] 880 | | None => {}, [INFO] [stdout] 881 | | } [INFO] [stdout] | |_____________^ help: try: `if let Some(ref mut r) = &mut self.root { r.pair.value = pair.value }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:940:9 [INFO] [stdout] | [INFO] [stdout] 940 | return diameter as f32 [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] 940 - return diameter as f32 [INFO] [stdout] 940 + diameter as f32 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:948:9 [INFO] [stdout] | [INFO] [stdout] 948 | / match &self.root { [INFO] [stdout] 949 | | Some(r) => { [INFO] [stdout] 950 | | for i in 1..r.links.len() { [INFO] [stdout] 951 | | vec.push(Edge { [INFO] [stdout] ... | [INFO] [stdout] 958 | | None => {}, [INFO] [stdout] 959 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 948 ~ if let Some(r) = &self.root { [INFO] [stdout] 949 + for i in 1..r.links.len() { [INFO] [stdout] 950 + vec.push(Edge { [INFO] [stdout] 951 + node_a: r.pair.key.clone(), [INFO] [stdout] 952 + node_b: r.links[i].clone().unwrap().clone(), [INFO] [stdout] 953 + weight: 1.0, [INFO] [stdout] 954 + }); [INFO] [stdout] 955 + } [INFO] [stdout] 956 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/map/traversable/tree.rs:1022:20 [INFO] [stdout] | [INFO] [stdout] 1022 | if !self.root.clone().unwrap().links[i].is_none() && [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.root.clone().unwrap().links[i].is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:1035:25 [INFO] [stdout] | [INFO] [stdout] 1033 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] 1034 | // If any of that node's children or its parent match key b, return true. [INFO] [stdout] 1035 | for i in 0..node.unwrap().links.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:1036:20 [INFO] [stdout] | [INFO] [stdout] 1033 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] ... [INFO] [stdout] 1036 | if node.unwrap().links[i].is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:1037:24 [INFO] [stdout] | [INFO] [stdout] 1033 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] ... [INFO] [stdout] 1037 | if node.unwrap().links[i].clone().unwrap() == key_b { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/map/traversable/tree.rs:1036:17 [INFO] [stdout] | [INFO] [stdout] 1036 | / if node.unwrap().links[i].is_some() { [INFO] [stdout] 1037 | | if node.unwrap().links[i].clone().unwrap() == key_b { [INFO] [stdout] 1038 | | return true; [INFO] [stdout] 1039 | | } [INFO] [stdout] 1040 | | } [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] 1036 ~ if node.unwrap().links[i].is_some() [INFO] [stdout] 1037 ~ && node.unwrap().links[i].clone().unwrap() == key_b { [INFO] [stdout] 1038 | return true; [INFO] [stdout] 1039 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:1187:25 [INFO] [stdout] | [INFO] [stdout] 1186 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] 1187 | for i in 1..node.unwrap().links.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:1188:20 [INFO] [stdout] | [INFO] [stdout] 1186 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] 1187 | for i in 1..node.unwrap().links.len() { [INFO] [stdout] 1188 | if node.unwrap().links[i].is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:1189:42 [INFO] [stdout] | [INFO] [stdout] 1186 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] ... [INFO] [stdout] 1189 | vec.push(&self.nodes[node.unwrap().links[i].clone().unwrap()].pair.value); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:1215:32 [INFO] [stdout] | [INFO] [stdout] 1214 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] 1215 | let mut currnode = node.unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:1304:9 [INFO] [stdout] | [INFO] [stdout] 1304 | / match self.nodes.get(key.clone()) { [INFO] [stdout] 1305 | | // If key matches a node in the tree. [INFO] [stdout] 1306 | | Some(n) => { [INFO] [stdout] ... | [INFO] [stdout] 1334 | | None => {}, [INFO] [stdout] 1335 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: you might want to preserve the comments from inside the `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 1304 ~ if let Some(n) = self.nodes.get(key.clone()) { [INFO] [stdout] 1305 + // Add node to the queue [INFO] [stdout] 1306 + queue.enqueue(n.pair.key.clone()); [INFO] [stdout] 1307 + [INFO] [stdout] 1308 + // Perform iterative inorder traversal. [INFO] [stdout] 1309 + while !queue.is_empty() { [INFO] [stdout] 1310 + // Store the queue's current length. [INFO] [stdout] 1311 + let mut len: usize = queue.len(); [INFO] [stdout] 1312 + [INFO] [stdout] 1313 + // Increment height to account for the current node. [INFO] [stdout] 1314 + height += 1; [INFO] [stdout] 1315 + [INFO] [stdout] 1316 + // Go through the current nodes in the queue. [INFO] [stdout] 1317 + while len > 0 { [INFO] [stdout] 1318 + let node = queue.dequeue().unwrap(); [INFO] [stdout] 1319 + [INFO] [stdout] 1320 + // Add node's children to the queue. [INFO] [stdout] 1321 + for i in 1..self.nodes[node.clone()].links.len() { [INFO] [stdout] 1322 + if self.nodes[node.clone()].links[i].is_some() { [INFO] [stdout] 1323 + queue.enqueue(self.nodes[node.clone()].links[i].clone().unwrap().clone()); [INFO] [stdout] 1324 + } [INFO] [stdout] 1325 + } [INFO] [stdout] 1326 + [INFO] [stdout] 1327 + // Decrement the stored length. [INFO] [stdout] 1328 + len -= 1; [INFO] [stdout] 1329 + } [INFO] [stdout] 1330 + } [INFO] [stdout] 1331 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:1364:9 [INFO] [stdout] | [INFO] [stdout] 1364 | let node_b: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `node_b` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 1364 ~ [INFO] [stdout] 1365 | [INFO] [stdout] 1366 ~ let node_b: Node = if *key_b == self.root.clone().unwrap().pair.key { [INFO] [stdout] 1367 ~ self.root.clone().unwrap() [INFO] [stdout] 1368 | } [INFO] [stdout] 1369 | else { [INFO] [stdout] 1370 ~ self.nodes[key_b.clone()].clone() [INFO] [stdout] 1371 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:1401:9 [INFO] [stdout] | [INFO] [stdout] 1401 | let node_a: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `node_a` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 1401 ~ [INFO] [stdout] 1402 | [INFO] [stdout] 1403 ~ let node_a: Node = if *key_a == self.root.clone().unwrap().pair.key { [INFO] [stdout] 1404 ~ self.root.clone().unwrap() [INFO] [stdout] 1405 | } [INFO] [stdout] 1406 | else { [INFO] [stdout] 1407 ~ self.nodes[key_a.clone()].clone() [INFO] [stdout] 1408 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:1445:13 [INFO] [stdout] | [INFO] [stdout] 1445 | return self.root.clone().unwrap().links.len() == 1; [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] 1445 - return self.root.clone().unwrap().links.len() == 1; [INFO] [stdout] 1445 + self.root.clone().unwrap().links.len() == 1 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:1448:13 [INFO] [stdout] | [INFO] [stdout] 1448 | return self.nodes[key.clone()].links.len() == 1; [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] 1448 - return self.nodes[key.clone()].links.len() == 1; [INFO] [stdout] 1448 + self.nodes[key.clone()].links.len() == 1 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/map/traversable/tree.rs:1466:17 [INFO] [stdout] | [INFO] [stdout] 1466 | / if r.pair.key == *key_a || r.pair.key == *key_b { [INFO] [stdout] 1467 | | return false; [INFO] [stdout] 1468 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 1465 ~ Some(r) [INFO] [stdout] 1466 ~ if (r.pair.key == *key_a || r.pair.key == *key_b) => { [INFO] [stdout] 1467 | return false; [INFO] [stdout] 1468 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:1464:9 [INFO] [stdout] | [INFO] [stdout] 1464 | / match &self.root { [INFO] [stdout] 1465 | | Some(r) => { [INFO] [stdout] 1466 | | if r.pair.key == *key_a || r.pair.key == *key_b { [INFO] [stdout] 1467 | | return false; [INFO] [stdout] ... | [INFO] [stdout] 1470 | | None => {}, [INFO] [stdout] 1471 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 1464 ~ if let Some(r) = &self.root { [INFO] [stdout] 1465 + if r.pair.key == *key_a || r.pair.key == *key_b { [INFO] [stdout] 1466 + return false; [INFO] [stdout] 1467 + } [INFO] [stdout] 1468 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:1507:23 [INFO] [stdout] | [INFO] [stdout] 1506 | if node.is_some() && node.unwrap().links[0].is_some() { [INFO] [stdout] | -------------- the check is happening here [INFO] [stdout] 1507 | return if node.unwrap().links[0].clone().unwrap().clone() == self.root.clone().unwrap().pair.key { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:1513:34 [INFO] [stdout] | [INFO] [stdout] 1506 | if node.is_some() && node.unwrap().links[0].is_some() { [INFO] [stdout] | -------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 1513 | Some(&self.nodes[node.unwrap().links[0].clone().unwrap().clone()].pair.value) [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/map/traversable/tree.rs:1494:9 [INFO] [stdout] | [INFO] [stdout] 1494 | / if self.root.is_none() { [INFO] [stdout] 1495 | | return None; [INFO] [stdout] 1496 | | } [INFO] [stdout] | |_________^ help: replace it with: `self.root.as_ref()?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:1524:24 [INFO] [stdout] | [INFO] [stdout] 1524 | Some(n) => return Some(&n.pair.value), [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] 1524 - Some(n) => return Some(&n.pair.value), [INFO] [stdout] 1524 + Some(n) => Some(&n.pair.value), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:1525:21 [INFO] [stdout] | [INFO] [stdout] 1525 | None => return None, [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] 1525 - None => return None, [INFO] [stdout] 1525 + None => None, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Tree` [INFO] [stdout] --> src/map/traversable/tree.rs:1564:5 [INFO] [stdout] | [INFO] [stdout] 1564 | / pub fn new() -> Self { [INFO] [stdout] 1565 | | let new: Tree = Tree { [INFO] [stdout] 1566 | | nodes: HashMap::new(), [INFO] [stdout] 1567 | | root: None, [INFO] [stdout] ... | [INFO] [stdout] 1570 | | new [INFO] [stdout] 1571 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 1558 + impl Default for Tree [INFO] [stdout] 1559 + where [INFO] [stdout] 1560 + K: PartialEq + PartialOrd + Clone + Debug + Eq + Hash, [INFO] [stdout] 1561 + V: PartialEq + PartialOrd + Clone + Debug, [INFO] [stdout] 1562 + { [INFO] [stdout] 1563 + fn default() -> Self { [INFO] [stdout] 1564 + Self::new() [INFO] [stdout] 1565 + } [INFO] [stdout] 1566 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:1584:9 [INFO] [stdout] | [INFO] [stdout] 1584 | / match &mut new.root { [INFO] [stdout] 1585 | | Some(ref mut r) => r.links.push(None), [INFO] [stdout] 1586 | | None => {}, [INFO] [stdout] 1587 | | } [INFO] [stdout] | |_________^ help: try: `if let Some(ref mut r) = &mut new.root { r.links.push(None) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/map/traversable/tree.rs:1598:20 [INFO] [stdout] | [INFO] [stdout] 1598 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:1615:9 [INFO] [stdout] | [INFO] [stdout] 1615 | / return if node == self.root.clone().unwrap().pair.key { [INFO] [stdout] 1616 | | // If the root node has no children, return 0. [INFO] [stdout] 1617 | | if self.root.clone().unwrap().links.len() == 0 { [INFO] [stdout] 1618 | | return 0; [INFO] [stdout] ... | [INFO] [stdout] 1680 | | m + 1 [INFO] [stdout] 1681 | | } [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] 1615 ~ if node == self.root.clone().unwrap().pair.key { [INFO] [stdout] 1616 + // If the root node has no children, return 0. [INFO] [stdout] 1617 + if self.root.clone().unwrap().links.len() == 0 { [INFO] [stdout] 1618 + return 0; [INFO] [stdout] 1619 + } [INFO] [stdout] 1620 + [INFO] [stdout] 1621 + let mut vec: Vec = Vec::new(); [INFO] [stdout] 1622 + let mut m: usize = 0; [INFO] [stdout] 1623 + let mut d: usize = *diameter; [INFO] [stdout] 1624 + [INFO] [stdout] 1625 + // Recursively calculate the depth of the root node's children and add it the vector. [INFO] [stdout] 1626 + for i in 1..self.root.clone().unwrap().links.len() { [INFO] [stdout] 1627 + vec.push(self.get_max_depth(self.root.clone().unwrap().links[i].clone().unwrap(), diameter)); [INFO] [stdout] 1628 + [INFO] [stdout] 1629 + // Update the max depth value. [INFO] [stdout] 1630 + if vec[vec.len() - 1] > m { [INFO] [stdout] 1631 + m = vec[vec.len() - 1]; [INFO] [stdout] 1632 + } [INFO] [stdout] 1633 + } [INFO] [stdout] 1634 + [INFO] [stdout] 1635 + // Calculate the diameter of the tree based on the longest path between two nodes. [INFO] [stdout] 1636 + for i in 0..vec.len() { [INFO] [stdout] 1637 + for j in (i + 1)..vec.len() { [INFO] [stdout] 1638 + d = max(d, vec[i] + vec[j]); [INFO] [stdout] 1639 + } [INFO] [stdout] 1640 + } [INFO] [stdout] 1641 + [INFO] [stdout] 1642 + // Update the diameter value. [INFO] [stdout] 1643 + *diameter = d; [INFO] [stdout] 1644 + [INFO] [stdout] 1645 + // Return the max depth. [INFO] [stdout] 1646 + m + 1 [INFO] [stdout] 1647 + } [INFO] [stdout] 1648 + // If the specified node is any other node. [INFO] [stdout] 1649 + else { [INFO] [stdout] 1650 + // If the node has no children, return 0. [INFO] [stdout] 1651 + if self.nodes[node.clone()].links.len() == 0 { [INFO] [stdout] 1652 + return 0; [INFO] [stdout] 1653 + } [INFO] [stdout] 1654 + [INFO] [stdout] 1655 + let mut vec: Vec = Vec::new(); [INFO] [stdout] 1656 + let mut m: usize = 0; [INFO] [stdout] 1657 + let mut d: usize = *diameter; [INFO] [stdout] 1658 + [INFO] [stdout] 1659 + // Recursively calculate the depth of the node's children and add it the vector. [INFO] [stdout] 1660 + for i in 1..self.nodes[node.clone()].links.len() { [INFO] [stdout] 1661 + vec.push(self.get_max_depth(self.nodes[node.clone()].links[i].clone().unwrap(), diameter)); [INFO] [stdout] 1662 + [INFO] [stdout] 1663 + // Update the max depth value. [INFO] [stdout] 1664 + if vec[vec.len() - 1] > m { [INFO] [stdout] 1665 + m = vec[vec.len() - 1]; [INFO] [stdout] 1666 + } [INFO] [stdout] 1667 + } [INFO] [stdout] 1668 + [INFO] [stdout] 1669 + // Calculate the diameter of the tree based on the longest path between two nodes. [INFO] [stdout] 1670 + for i in 0..vec.len() { [INFO] [stdout] 1671 + for j in (i + 1)..vec.len() { [INFO] [stdout] 1672 + d = max(d, vec[i] + vec[j]); [INFO] [stdout] 1673 + } [INFO] [stdout] 1674 + } [INFO] [stdout] 1675 + [INFO] [stdout] 1676 + // Update the diameter value. [INFO] [stdout] 1677 + *diameter = d; [INFO] [stdout] 1678 + [INFO] [stdout] 1679 + // Return the max depth. [INFO] [stdout] 1680 + m + 1 [INFO] [stdout] 1681 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/map/traversable/tree.rs:1617:16 [INFO] [stdout] | [INFO] [stdout] 1617 | if self.root.clone().unwrap().links.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.root.clone().unwrap().links.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: length comparison to zero [INFO] [stdout] --> src/map/traversable/tree.rs:1651:16 [INFO] [stdout] | [INFO] [stdout] 1651 | if self.nodes[node.clone()].links.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.nodes[node.clone()].links.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: you should consider adding a `Default` implementation for `BinaryTreeTraverser` [INFO] [stdout] --> src/map/traversable/tree.rs:2023:5 [INFO] [stdout] | [INFO] [stdout] 2023 | / pub fn new() -> Self { [INFO] [stdout] 2024 | | BinaryTreeTraverser { [INFO] [stdout] 2025 | | mode: BinaryTreeTraversalMode::Inorder, [INFO] [stdout] 2026 | | trav: DoublyLinkedListTraverser::new(), [INFO] [stdout] ... | [INFO] [stdout] 2029 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 2016 + impl Default for BinaryTreeTraverser [INFO] [stdout] 2017 + where [INFO] [stdout] 2018 + K: PartialEq + PartialOrd + Clone + Debug + Eq + Hash, [INFO] [stdout] 2019 + V: PartialEq + PartialOrd + Clone + Debug, [INFO] [stdout] 2020 + { [INFO] [stdout] 2021 + fn default() -> Self { [INFO] [stdout] 2022 + Self::new() [INFO] [stdout] 2023 + } [INFO] [stdout] 2024 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:2035:9 [INFO] [stdout] | [INFO] [stdout] 2035 | let curr: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `curr` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 2035 ~ [INFO] [stdout] 2036 | [INFO] [stdout] 2037 ~ let curr: Node = if node == self.tree.root.clone().unwrap().pair.key { [INFO] [stdout] 2038 ~ self.tree.root.clone().unwrap().clone() [INFO] [stdout] 2039 | } [INFO] [stdout] 2040 | else { [INFO] [stdout] 2041 ~ self.tree.nodes[node.clone()].clone() [INFO] [stdout] 2042 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:2063:9 [INFO] [stdout] | [INFO] [stdout] 2063 | let curr: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `curr` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 2063 ~ [INFO] [stdout] 2064 | [INFO] [stdout] 2065 ~ let curr: Node = if node == self.tree.root.clone().unwrap().pair.key { [INFO] [stdout] 2066 ~ self.tree.root.clone().unwrap().clone() [INFO] [stdout] 2067 | } [INFO] [stdout] 2068 | else { [INFO] [stdout] 2069 ~ self.tree.nodes[node.clone()].clone() [INFO] [stdout] 2070 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:2090:9 [INFO] [stdout] | [INFO] [stdout] 2090 | let curr: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `curr` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 2090 ~ [INFO] [stdout] 2091 | [INFO] [stdout] 2092 ~ let curr: Node = if node == self.tree.root.clone().unwrap().pair.key { [INFO] [stdout] 2093 ~ self.tree.root.clone().unwrap().clone() [INFO] [stdout] 2094 | } [INFO] [stdout] 2095 | else { [INFO] [stdout] 2096 ~ self.tree.nodes[node.clone()].clone() [INFO] [stdout] 2097 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `qcurr` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:2146:21 [INFO] [stdout] | [INFO] [stdout] 2137 | if qcurr.is_some() { [INFO] [stdout] | ------------------ help: try: `if let Some() = qcurr` [INFO] [stdout] ... [INFO] [stdout] 2146 | map[qcurr.unwrap().1.clone()].push(curr.pair.value.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `isize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/tree.rs:2145:44 [INFO] [stdout] | [INFO] [stdout] 2145 | map.insert(KeyValue { key: qcurr.clone().unwrap().1.clone(), value: Vec::new() } ); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `qcurr.clone().unwrap().1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `isize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/tree.rs:2146:21 [INFO] [stdout] | [INFO] [stdout] 2146 | map[qcurr.unwrap().1.clone()].push(curr.pair.value.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `qcurr.unwrap().1` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:2172:9 [INFO] [stdout] | [INFO] [stdout] 2172 | let curr: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `curr` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 2172 ~ [INFO] [stdout] 2173 | [INFO] [stdout] 2174 ~ let curr: Node = if node == self.tree.root.clone().unwrap().pair.key { [INFO] [stdout] 2175 ~ self.tree.root.clone().unwrap().clone() [INFO] [stdout] 2176 | } [INFO] [stdout] 2177 | else { [INFO] [stdout] 2178 ~ self.tree.nodes[node.clone()].clone() [INFO] [stdout] 2179 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:2210:9 [INFO] [stdout] | [INFO] [stdout] 2210 | let curr: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `curr` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 2210 ~ [INFO] [stdout] 2211 | [INFO] [stdout] 2212 ~ let curr: Node = if node == self.tree.root.clone().unwrap().pair.key { [INFO] [stdout] 2213 ~ self.tree.root.clone().unwrap().clone() [INFO] [stdout] 2214 | } [INFO] [stdout] 2215 | else { [INFO] [stdout] 2216 ~ self.tree.nodes[node.clone()].clone() [INFO] [stdout] 2217 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:2238:9 [INFO] [stdout] | [INFO] [stdout] 2238 | let curr: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `curr` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 2238 ~ [INFO] [stdout] 2239 | [INFO] [stdout] 2240 ~ let curr: Node = if node == self.tree.root.clone().unwrap().pair.key { [INFO] [stdout] 2241 ~ self.tree.root.clone().unwrap().clone() [INFO] [stdout] 2242 | } [INFO] [stdout] 2243 | else { [INFO] [stdout] 2244 ~ self.tree.nodes[node.clone()].clone() [INFO] [stdout] 2245 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:2262:9 [INFO] [stdout] | [INFO] [stdout] 2262 | let curr: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `curr` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 2262 ~ [INFO] [stdout] 2263 | [INFO] [stdout] 2264 ~ let curr: Node = if node == self.tree.root.clone().unwrap().pair.key { [INFO] [stdout] 2265 ~ self.tree.root.clone().unwrap().clone() [INFO] [stdout] 2266 | } [INFO] [stdout] 2267 | else { [INFO] [stdout] 2268 ~ self.tree.nodes[node.clone()].clone() [INFO] [stdout] 2269 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/map/traversable/tree.rs:2365:17 [INFO] [stdout] | [INFO] [stdout] 2365 | / if index == r.pair.key { [INFO] [stdout] 2366 | | return &r.pair.value; [INFO] [stdout] 2367 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 2364 ~ Some(r) [INFO] [stdout] 2365 ~ if index == r.pair.key => { [INFO] [stdout] 2366 | return &r.pair.value; [INFO] [stdout] 2367 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:2363:9 [INFO] [stdout] | [INFO] [stdout] 2363 | / match &self.root { [INFO] [stdout] 2364 | | Some(r) => { [INFO] [stdout] 2365 | | if index == r.pair.key { [INFO] [stdout] 2366 | | return &r.pair.value; [INFO] [stdout] ... | [INFO] [stdout] 2369 | | None => {}, [INFO] [stdout] 2370 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 2363 ~ if let Some(r) = &self.root { [INFO] [stdout] 2364 + if index == r.pair.key { [INFO] [stdout] 2365 + return &r.pair.value; [INFO] [stdout] 2366 + } [INFO] [stdout] 2367 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/map/traversable/tree.rs:2392:17 [INFO] [stdout] | [INFO] [stdout] 2392 | / if index == r.pair.key { [INFO] [stdout] 2393 | | return &mut r.pair.value; [INFO] [stdout] 2394 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 2391 ~ Some(r) [INFO] [stdout] 2392 ~ if index == r.pair.key => { [INFO] [stdout] 2393 | return &mut r.pair.value; [INFO] [stdout] 2394 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:2390:9 [INFO] [stdout] | [INFO] [stdout] 2390 | / match &mut self.root { [INFO] [stdout] 2391 | | Some(r) => { [INFO] [stdout] 2392 | | if index == r.pair.key { [INFO] [stdout] 2393 | | return &mut r.pair.value; [INFO] [stdout] ... | [INFO] [stdout] 2396 | | None => {}, [INFO] [stdout] 2397 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 2390 ~ if let Some(r) = &mut self.root { [INFO] [stdout] 2391 + if index == r.pair.key { [INFO] [stdout] 2392 + return &mut r.pair.value; [INFO] [stdout] 2393 + } [INFO] [stdout] 2394 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `self.root` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:2473:39 [INFO] [stdout] | [INFO] [stdout] 2472 | if self.root.is_some() { [INFO] [stdout] | ---------------------- help: try: `if let Some() = self.root` [INFO] [stdout] 2473 | t.inorder_rec(&mut order, self.root.unwrap().pair.key.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/map/traversable/tree.rs:2559:18 [INFO] [stdout] | [INFO] [stdout] 2559 | for i in 0..vec.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 2559 - for i in 0..vec.len() { [INFO] [stdout] 2559 + for in &vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/map/traversable/tree.rs:2571:22 [INFO] [stdout] | [INFO] [stdout] 2571 | for i in vec.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/map/traversable/tree.rs:2619:9 [INFO] [stdout] | [INFO] [stdout] 2619 | !self.root.is_none() && (self.root.clone().unwrap().pair.key == key || self.nodes.exists(key)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `self.root.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:2643:26 [INFO] [stdout] | [INFO] [stdout] 2642 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] 2643 | return Some(&node.unwrap().pair.value); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/map/traversable/tree.rs:2626:9 [INFO] [stdout] | [INFO] [stdout] 2626 | / if self.root.is_none() { [INFO] [stdout] 2627 | | return None; [INFO] [stdout] 2628 | | } [INFO] [stdout] | |_________^ help: replace it with: `self.root.as_ref()?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:2692:13 [INFO] [stdout] | [INFO] [stdout] 2692 | / match &mut self.root { [INFO] [stdout] 2693 | | Some(ref mut r) => r.pair.value = pair.value, [INFO] [stdout] 2694 | | None => {}, [INFO] [stdout] 2695 | | } [INFO] [stdout] | |_____________^ help: try: `if let Some(ref mut r) = &mut self.root { r.pair.value = pair.value }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:2754:9 [INFO] [stdout] | [INFO] [stdout] 2754 | return diameter as f32 [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] 2754 - return diameter as f32 [INFO] [stdout] 2754 + diameter as f32 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:2762:9 [INFO] [stdout] | [INFO] [stdout] 2762 | / match &self.root { [INFO] [stdout] 2763 | | Some(r) => { [INFO] [stdout] 2764 | | for i in 1..r.links.len() { [INFO] [stdout] 2765 | | vec.push(Edge { [INFO] [stdout] ... | [INFO] [stdout] 2772 | | None => {}, [INFO] [stdout] 2773 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 2762 ~ if let Some(r) = &self.root { [INFO] [stdout] 2763 + for i in 1..r.links.len() { [INFO] [stdout] 2764 + vec.push(Edge { [INFO] [stdout] 2765 + node_a: r.pair.key.clone(), [INFO] [stdout] 2766 + node_b: r.links[i].clone().unwrap().clone(), [INFO] [stdout] 2767 + weight: 1.0, [INFO] [stdout] 2768 + }); [INFO] [stdout] 2769 + } [INFO] [stdout] 2770 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/map/traversable/tree.rs:2837:20 [INFO] [stdout] | [INFO] [stdout] 2837 | if !self.root.clone().unwrap().links[i].is_none() && [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.root.clone().unwrap().links[i].is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:2850:25 [INFO] [stdout] | [INFO] [stdout] 2848 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] 2849 | // If any of that node's children or its parent match key b, return true. [INFO] [stdout] 2850 | for i in 0..node.unwrap().links.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:2851:20 [INFO] [stdout] | [INFO] [stdout] 2848 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] ... [INFO] [stdout] 2851 | if node.unwrap().links[i].is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:2852:24 [INFO] [stdout] | [INFO] [stdout] 2848 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] ... [INFO] [stdout] 2852 | if node.unwrap().links[i].clone().unwrap() == key_b { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/map/traversable/tree.rs:2851:17 [INFO] [stdout] | [INFO] [stdout] 2851 | / if node.unwrap().links[i].is_some() { [INFO] [stdout] 2852 | | if node.unwrap().links[i].clone().unwrap() == key_b { [INFO] [stdout] 2853 | | return true; [INFO] [stdout] 2854 | | } [INFO] [stdout] 2855 | | } [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] 2851 ~ if node.unwrap().links[i].is_some() [INFO] [stdout] 2852 ~ && node.unwrap().links[i].clone().unwrap() == key_b { [INFO] [stdout] 2853 | return true; [INFO] [stdout] 2854 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:3018:25 [INFO] [stdout] | [INFO] [stdout] 3017 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] 3018 | for i in 1..node.unwrap().links.len() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:3019:20 [INFO] [stdout] | [INFO] [stdout] 3017 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] 3018 | for i in 1..node.unwrap().links.len() { [INFO] [stdout] 3019 | if node.unwrap().links[i].is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:3020:42 [INFO] [stdout] | [INFO] [stdout] 3017 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] ... [INFO] [stdout] 3020 | vec.push(&self.nodes[node.unwrap().links[i].clone().unwrap()].pair.value); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:3046:32 [INFO] [stdout] | [INFO] [stdout] 3045 | if node.is_some() { [INFO] [stdout] | ----------------- help: try: `if let Some() = node` [INFO] [stdout] 3046 | let mut currnode = node.unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:3135:9 [INFO] [stdout] | [INFO] [stdout] 3135 | / match self.nodes.get(key.clone()) { [INFO] [stdout] 3136 | | // If key matches a node in the tree. [INFO] [stdout] 3137 | | Some(n) => { [INFO] [stdout] ... | [INFO] [stdout] 3165 | | None => {}, [INFO] [stdout] 3166 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = note: you might want to preserve the comments from inside the `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 3135 ~ if let Some(n) = self.nodes.get(key.clone()) { [INFO] [stdout] 3136 + // Add node to the queue [INFO] [stdout] 3137 + queue.enqueue(n.pair.key.clone()); [INFO] [stdout] 3138 + [INFO] [stdout] 3139 + // Perform iterative inorder traversal. [INFO] [stdout] 3140 + while !queue.is_empty() { [INFO] [stdout] 3141 + // Store the queue's current length. [INFO] [stdout] 3142 + let mut len: usize = queue.len(); [INFO] [stdout] 3143 + [INFO] [stdout] 3144 + // Increment height to account for the current node. [INFO] [stdout] 3145 + height += 1; [INFO] [stdout] 3146 + [INFO] [stdout] 3147 + // Go through the current nodes in the queue. [INFO] [stdout] 3148 + while len > 0 { [INFO] [stdout] 3149 + let node = queue.dequeue().unwrap(); [INFO] [stdout] 3150 + [INFO] [stdout] 3151 + // Add node's children to the queue. [INFO] [stdout] 3152 + for i in 1..self.nodes[node.clone()].links.len() { [INFO] [stdout] 3153 + if self.nodes[node.clone()].links[i].is_some() { [INFO] [stdout] 3154 + queue.enqueue(self.nodes[node.clone()].links[i].clone().unwrap().clone()); [INFO] [stdout] 3155 + } [INFO] [stdout] 3156 + } [INFO] [stdout] 3157 + [INFO] [stdout] 3158 + // Decrement the stored length. [INFO] [stdout] 3159 + len -= 1; [INFO] [stdout] 3160 + } [INFO] [stdout] 3161 + } [INFO] [stdout] 3162 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:3195:9 [INFO] [stdout] | [INFO] [stdout] 3195 | let node_b: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `node_b` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 3195 ~ [INFO] [stdout] 3196 | [INFO] [stdout] 3197 ~ let node_b: Node = if *key_b == self.root.clone().unwrap().pair.key { [INFO] [stdout] 3198 ~ self.root.clone().unwrap() [INFO] [stdout] 3199 | } [INFO] [stdout] 3200 | else { [INFO] [stdout] 3201 ~ self.nodes[key_b.clone()].clone() [INFO] [stdout] 3202 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:3232:9 [INFO] [stdout] | [INFO] [stdout] 3232 | let node_a: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `node_a` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 3232 ~ [INFO] [stdout] 3233 | [INFO] [stdout] 3234 ~ let node_a: Node = if *key_a == self.root.clone().unwrap().pair.key { [INFO] [stdout] 3235 ~ self.root.clone().unwrap() [INFO] [stdout] 3236 | } [INFO] [stdout] 3237 | else { [INFO] [stdout] 3238 ~ self.nodes[key_a.clone()].clone() [INFO] [stdout] 3239 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:3276:13 [INFO] [stdout] | [INFO] [stdout] 3276 | / return self.root.clone().unwrap().links[1].is_none() && [INFO] [stdout] 3277 | | self.root.clone().unwrap().links[2].is_none(); [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] 3276 ~ self.root.clone().unwrap().links[1].is_none() && [INFO] [stdout] 3277 ~ self.root.clone().unwrap().links[2].is_none() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:3280:13 [INFO] [stdout] | [INFO] [stdout] 3280 | / return self.nodes[key.clone()].links[1].is_none() && [INFO] [stdout] 3281 | | self.nodes[key.clone()].links[2].is_none(); [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] 3280 ~ self.nodes[key.clone()].links[1].is_none() && [INFO] [stdout] 3281 ~ self.nodes[key.clone()].links[2].is_none() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/map/traversable/tree.rs:3299:17 [INFO] [stdout] | [INFO] [stdout] 3299 | / if r.pair.key == *key_a || r.pair.key == *key_b { [INFO] [stdout] 3300 | | return false; [INFO] [stdout] 3301 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 3298 ~ Some(r) [INFO] [stdout] 3299 ~ if (r.pair.key == *key_a || r.pair.key == *key_b) => { [INFO] [stdout] 3300 | return false; [INFO] [stdout] 3301 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:3297:9 [INFO] [stdout] | [INFO] [stdout] 3297 | / match &self.root { [INFO] [stdout] 3298 | | Some(r) => { [INFO] [stdout] 3299 | | if r.pair.key == *key_a || r.pair.key == *key_b { [INFO] [stdout] 3300 | | return false; [INFO] [stdout] ... | [INFO] [stdout] 3303 | | None => {}, [INFO] [stdout] 3304 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 3297 ~ if let Some(r) = &self.root { [INFO] [stdout] 3298 + if r.pair.key == *key_a || r.pair.key == *key_b { [INFO] [stdout] 3299 + return false; [INFO] [stdout] 3300 + } [INFO] [stdout] 3301 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:3340:23 [INFO] [stdout] | [INFO] [stdout] 3339 | if node.is_some() && node.unwrap().links[0].is_some() { [INFO] [stdout] | -------------- the check is happening here [INFO] [stdout] 3340 | return if node.unwrap().links[0].clone().unwrap().clone() == self.root.clone().unwrap().pair.key { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `node` after checking its variant with `is_some` [INFO] [stdout] --> src/map/traversable/tree.rs:3346:34 [INFO] [stdout] | [INFO] [stdout] 3339 | if node.is_some() && node.unwrap().links[0].is_some() { [INFO] [stdout] | -------------- the check is happening here [INFO] [stdout] ... [INFO] [stdout] 3346 | Some(&self.nodes[node.unwrap().links[0].clone().unwrap().clone()].pair.value) [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/map/traversable/tree.rs:3327:9 [INFO] [stdout] | [INFO] [stdout] 3327 | / if self.root.is_none() { [INFO] [stdout] 3328 | | return None; [INFO] [stdout] 3329 | | } [INFO] [stdout] | |_________^ help: replace it with: `self.root.as_ref()?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:3357:24 [INFO] [stdout] | [INFO] [stdout] 3357 | Some(n) => return Some(&n.pair.value), [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] 3357 - Some(n) => return Some(&n.pair.value), [INFO] [stdout] 3357 + Some(n) => Some(&n.pair.value), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:3358:21 [INFO] [stdout] | [INFO] [stdout] 3358 | None => return None, [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] 3358 - None => return None, [INFO] [stdout] 3358 + None => None, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `BinaryTree` [INFO] [stdout] --> src/map/traversable/tree.rs:3398:5 [INFO] [stdout] | [INFO] [stdout] 3398 | / pub fn new() -> Self { [INFO] [stdout] 3399 | | let new: BinaryTree = BinaryTree { [INFO] [stdout] 3400 | | nodes: HashMap::new(), [INFO] [stdout] 3401 | | root: None, [INFO] [stdout] ... | [INFO] [stdout] 3404 | | new [INFO] [stdout] 3405 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 3391 + impl Default for BinaryTree [INFO] [stdout] 3392 + where [INFO] [stdout] 3393 + K: PartialEq + PartialOrd + Clone + Debug + Eq + Hash, [INFO] [stdout] 3394 + V: PartialEq + PartialOrd + Clone + Debug, [INFO] [stdout] 3395 + { [INFO] [stdout] 3396 + fn default() -> Self { [INFO] [stdout] 3397 + Self::new() [INFO] [stdout] 3398 + } [INFO] [stdout] 3399 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:3417:9 [INFO] [stdout] | [INFO] [stdout] 3417 | / match &mut new.root { [INFO] [stdout] 3418 | | Some(ref mut r) => { [INFO] [stdout] 3419 | | r.links.push(None); [INFO] [stdout] 3420 | | r.links.push(None); [INFO] [stdout] ... | [INFO] [stdout] 3423 | | None => {}, [INFO] [stdout] 3424 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 3417 ~ if let Some(ref mut r) = &mut new.root { [INFO] [stdout] 3418 + r.links.push(None); [INFO] [stdout] 3419 + r.links.push(None); [INFO] [stdout] 3420 + r.links.push(None); [INFO] [stdout] 3421 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/map/traversable/tree.rs:3434:20 [INFO] [stdout] | [INFO] [stdout] 3434 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:3473:21 [INFO] [stdout] | [INFO] [stdout] 3473 | return; [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] 3472 - self.rotate_left(self.root.clone().unwrap().pair.key.clone()); [INFO] [stdout] 3473 - return; [INFO] [stdout] 3472 + self.rotate_left(self.root.clone().unwrap().pair.key.clone()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:3507:21 [INFO] [stdout] | [INFO] [stdout] 3507 | return; [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] 3506 - self.rotate_left(self.nodes[node.clone()].pair.key.clone()); [INFO] [stdout] 3507 - return; [INFO] [stdout] 3506 + self.rotate_left(self.nodes[node.clone()].pair.key.clone()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:3516:9 [INFO] [stdout] | [INFO] [stdout] 3516 | let n: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `n` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 3516 ~ [INFO] [stdout] 3517 | [INFO] [stdout] 3518 ~ let n: Node = if node == self.root.clone().unwrap().pair.key.clone() { [INFO] [stdout] 3519 ~ self.root.clone().unwrap().clone() [INFO] [stdout] 3520 | } [INFO] [stdout] 3521 | else { [INFO] [stdout] 3522 ~ self.nodes[node.clone()].clone() [INFO] [stdout] 3523 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:3550:9 [INFO] [stdout] | [INFO] [stdout] 3550 | / return if node == self.root.clone().unwrap().pair.key { [INFO] [stdout] 3551 | | // If the root node has no children, return 0. [INFO] [stdout] 3552 | | if self.root.clone().unwrap().links.len() == 0 { [INFO] [stdout] 3553 | | return 0; [INFO] [stdout] ... | [INFO] [stdout] 3623 | | m + 1 [INFO] [stdout] 3624 | | } [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] 3550 ~ if node == self.root.clone().unwrap().pair.key { [INFO] [stdout] 3551 + // If the root node has no children, return 0. [INFO] [stdout] 3552 + if self.root.clone().unwrap().links.len() == 0 { [INFO] [stdout] 3553 + return 0; [INFO] [stdout] 3554 + } [INFO] [stdout] 3555 + [INFO] [stdout] 3556 + [INFO] [stdout] 3557 + [INFO] [stdout] 3558 + let mut vec: Vec = Vec::new(); [INFO] [stdout] 3559 + let mut m: usize = 0; [INFO] [stdout] 3560 + let mut d: usize = *diameter; [INFO] [stdout] 3561 + [INFO] [stdout] 3562 + // Recursively calculate the depth of the root node's children and add it the vector. [INFO] [stdout] 3563 + for i in 1..self.root.clone().unwrap().links.len() { [INFO] [stdout] 3564 + if self.root.clone().unwrap().links[i].is_some() { [INFO] [stdout] 3565 + vec.push(self.get_max_depth(self.root.clone().unwrap().links[i].clone().unwrap(), [INFO] [stdout] 3566 + diameter)); [INFO] [stdout] 3567 + [INFO] [stdout] 3568 + // Update the max depth value. [INFO] [stdout] 3569 + if vec[vec.len() - 1] > m { [INFO] [stdout] 3570 + m = vec[vec.len() - 1]; [INFO] [stdout] 3571 + } [INFO] [stdout] 3572 + } [INFO] [stdout] 3573 + } [INFO] [stdout] 3574 + [INFO] [stdout] 3575 + // Calculate the diameter of the tree based on the longest path between two nodes. [INFO] [stdout] 3576 + for i in 0..vec.len() { [INFO] [stdout] 3577 + for j in (i + 1)..vec.len() { [INFO] [stdout] 3578 + d = max(d, vec[i] + vec[j]); [INFO] [stdout] 3579 + } [INFO] [stdout] 3580 + } [INFO] [stdout] 3581 + [INFO] [stdout] 3582 + // Update the diameter value. [INFO] [stdout] 3583 + *diameter = d; [INFO] [stdout] 3584 + [INFO] [stdout] 3585 + // Return the max depth. [INFO] [stdout] 3586 + m + 1 [INFO] [stdout] 3587 + } [INFO] [stdout] 3588 + // If the specified node is any other node. [INFO] [stdout] 3589 + else { [INFO] [stdout] 3590 + // If the node has no children, return 0. [INFO] [stdout] 3591 + if self.nodes[node.clone()].links.len() == 0 { [INFO] [stdout] 3592 + return 0; [INFO] [stdout] 3593 + } [INFO] [stdout] 3594 + [INFO] [stdout] 3595 + let mut vec: Vec = Vec::new(); [INFO] [stdout] 3596 + let mut m: usize = 0; [INFO] [stdout] 3597 + let mut d: usize = *diameter; [INFO] [stdout] 3598 + [INFO] [stdout] 3599 + // Recursively calculate the depth of the node's children and add it the vector. [INFO] [stdout] 3600 + for i in 1..self.nodes[node.clone()].links.len() { [INFO] [stdout] 3601 + if self.nodes[node.clone()].links[i].is_some() { [INFO] [stdout] 3602 + vec.push(self.get_max_depth(self.nodes[node.clone()].links[i].clone().unwrap(), [INFO] [stdout] 3603 + diameter)); [INFO] [stdout] 3604 + [INFO] [stdout] 3605 + // Update the max depth value. [INFO] [stdout] 3606 + if vec[vec.len() - 1] > m { [INFO] [stdout] 3607 + m = vec[vec.len() - 1]; [INFO] [stdout] 3608 + } [INFO] [stdout] 3609 + } [INFO] [stdout] 3610 + } [INFO] [stdout] 3611 + [INFO] [stdout] 3612 + // Calculate the diameter of the tree based on the longest path between two nodes. [INFO] [stdout] 3613 + for i in 0..vec.len() { [INFO] [stdout] 3614 + for j in (i + 1)..vec.len() { [INFO] [stdout] 3615 + d = max(d, vec[i] + vec[j]); [INFO] [stdout] 3616 + } [INFO] [stdout] 3617 + } [INFO] [stdout] 3618 + [INFO] [stdout] 3619 + // Update the diameter value. [INFO] [stdout] 3620 + *diameter = d; [INFO] [stdout] 3621 + [INFO] [stdout] 3622 + // Return the max depth. [INFO] [stdout] 3623 + m + 1 [INFO] [stdout] 3624 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/map/traversable/tree.rs:3552:16 [INFO] [stdout] | [INFO] [stdout] 3552 | if self.root.clone().unwrap().links.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.root.clone().unwrap().links.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/map/traversable/tree.rs:3591:16 [INFO] [stdout] | [INFO] [stdout] 3591 | if self.nodes[node.clone()].links.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.nodes[node.clone()].links.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: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:3639:13 [INFO] [stdout] | [INFO] [stdout] 3639 | / match &mut self.root { [INFO] [stdout] 3640 | | Some(ref mut r) => { [INFO] [stdout] 3641 | | r.links.push(None); [INFO] [stdout] 3642 | | r.links.push(None); [INFO] [stdout] ... | [INFO] [stdout] 3645 | | None => {}, [INFO] [stdout] 3646 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 3639 ~ if let Some(ref mut r) = &mut self.root { [INFO] [stdout] 3640 + r.links.push(None); [INFO] [stdout] 3641 + r.links.push(None); [INFO] [stdout] 3642 + r.links.push(None); [INFO] [stdout] 3643 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:3659:25 [INFO] [stdout] | [INFO] [stdout] 3659 | / match &mut self.root { [INFO] [stdout] 3660 | | Some(ref mut r) => r.links[1] = Some(pair.key.clone()), [INFO] [stdout] 3661 | | None => {}, [INFO] [stdout] 3662 | | } [INFO] [stdout] | |_________________________^ help: try: `if let Some(ref mut r) = &mut self.root { r.links[1] = Some(pair.key.clone()) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:3667:25 [INFO] [stdout] | [INFO] [stdout] 3667 | / match &mut self.root { [INFO] [stdout] 3668 | | Some(ref mut r) => r.links[2] = Some(pair.key.clone()), [INFO] [stdout] 3669 | | None => {}, [INFO] [stdout] 3670 | | } [INFO] [stdout] | |_________________________^ help: try: `if let Some(ref mut r) = &mut self.root { r.links[2] = Some(pair.key.clone()) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:3706:25 [INFO] [stdout] | [INFO] [stdout] 3706 | / match &mut self.root { [INFO] [stdout] 3707 | | Some(ref mut r) => r.links[2] = Some(pair.key.clone()), [INFO] [stdout] 3708 | | None => {}, [INFO] [stdout] 3709 | | } [INFO] [stdout] | |_________________________^ help: try: `if let Some(ref mut r) = &mut self.root { r.links[2] = Some(pair.key.clone()) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:3745:25 [INFO] [stdout] | [INFO] [stdout] 3745 | / match &mut self.root { [INFO] [stdout] 3746 | | Some(ref mut r) => r.links[1] = Some(pair.key.clone()), [INFO] [stdout] 3747 | | None => {}, [INFO] [stdout] 3748 | | } [INFO] [stdout] | |_________________________^ help: try: `if let Some(ref mut r) = &mut self.root { r.links[1] = Some(pair.key.clone()) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `temp` after checking its variant with `is_none` [INFO] [stdout] --> src/map/traversable/tree.rs:3992:59 [INFO] [stdout] | [INFO] [stdout] 3971 | if temp.is_none() { [INFO] [stdout] | ----------------- help: try: `if let Some() = temp` [INFO] [stdout] ... [INFO] [stdout] 3992 | r.links[1] = Some(temp.unwrap().pair.key.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `temp` after checking its variant with `is_none` [INFO] [stdout] --> src/map/traversable/tree.rs:4002:59 [INFO] [stdout] | [INFO] [stdout] 3971 | if temp.is_none() { [INFO] [stdout] | ----------------- help: try: `if let Some() = temp` [INFO] [stdout] ... [INFO] [stdout] 4002 | r.links[2] = Some(temp.unwrap().pair.key.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `temp` after checking its variant with `is_none` [INFO] [stdout] --> src/map/traversable/tree.rs:4015:42 [INFO] [stdout] | [INFO] [stdout] 3971 | if temp.is_none() { [INFO] [stdout] | ----------------- help: try: `if let Some() = temp` [INFO] [stdout] ... [INFO] [stdout] 4015 | Some(temp.unwrap().pair.key.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `temp` after checking its variant with `is_none` [INFO] [stdout] --> src/map/traversable/tree.rs:4021:42 [INFO] [stdout] | [INFO] [stdout] 3971 | if temp.is_none() { [INFO] [stdout] | ----------------- help: try: `if let Some() = temp` [INFO] [stdout] ... [INFO] [stdout] 4021 | Some(temp.unwrap().pair.key.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/tree.rs:4106:9 [INFO] [stdout] | [INFO] [stdout] 4106 | return Some(n.pair.key.clone()); [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] 4106 - return Some(n.pair.key.clone()); [INFO] [stdout] 4106 + Some(n.pair.key.clone()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/map/traversable/tree.rs:3929:9 [INFO] [stdout] | [INFO] [stdout] 3929 | let k: Node; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] help: move the declaration `k` here and remove the assignments from the branches [INFO] [stdout] | [INFO] [stdout] 3929 ~ [INFO] [stdout] 3930 | [INFO] [stdout] ... [INFO] [stdout] 3937 | [INFO] [stdout] 3938 ~ let k: Node = if key == self.root.clone().unwrap().pair.key.clone() { [INFO] [stdout] 3939 ~ self.root.clone().unwrap().clone() [INFO] [stdout] 3940 | } [INFO] [stdout] 3941 | else { [INFO] [stdout] 3942 ~ self.nodes[key.clone()].clone() [INFO] [stdout] 3943 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:3990:33 [INFO] [stdout] | [INFO] [stdout] 3990 | / ... match &mut self.root { [INFO] [stdout] 3991 | | ... Some(r) => { [INFO] [stdout] 3992 | | ... r.links[1] = Some(temp.unwrap().pair.key.clone()); [INFO] [stdout] 3993 | | ... }, [INFO] [stdout] 3994 | | ... None => {}, [INFO] [stdout] 3995 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 3990 ~ if let Some(r) = &mut self.root { [INFO] [stdout] 3991 + r.links[1] = Some(temp.unwrap().pair.key.clone()); [INFO] [stdout] 3992 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:4000:33 [INFO] [stdout] | [INFO] [stdout] 4000 | / ... match &mut self.root { [INFO] [stdout] 4001 | | ... Some(r) => { [INFO] [stdout] 4002 | | ... r.links[2] = Some(temp.unwrap().pair.key.clone()); [INFO] [stdout] 4003 | | ... }, [INFO] [stdout] 4004 | | ... None => {}, [INFO] [stdout] 4005 | | ... } [INFO] [stdout] | |_______________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 4000 ~ if let Some(r) = &mut self.root { [INFO] [stdout] 4001 + r.links[2] = Some(temp.unwrap().pair.key.clone()); [INFO] [stdout] 4002 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:4050:21 [INFO] [stdout] | [INFO] [stdout] 4050 | / match &mut self.root { [INFO] [stdout] 4051 | | Some(r) => { [INFO] [stdout] 4052 | | if r.links[1].is_some() && r.links[1].clone().unwrap().clone() == [INFO] [stdout] 4053 | | n.pair.key.clone() { [INFO] [stdout] ... | [INFO] [stdout] 4061 | | None => {}, [INFO] [stdout] 4062 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 4050 ~ if let Some(r) = &mut self.root { [INFO] [stdout] 4051 + if r.links[1].is_some() && r.links[1].clone().unwrap().clone() == [INFO] [stdout] 4052 + n.pair.key.clone() { [INFO] [stdout] 4053 + r.links[1] = Some(tkey.clone()); [INFO] [stdout] 4054 + } [INFO] [stdout] 4055 + else if r.links[2].is_some() && [INFO] [stdout] 4056 + r.links[2].clone().unwrap().clone() == n.pair.key.clone() { [INFO] [stdout] 4057 + r.links[2] = Some(tkey.clone()); [INFO] [stdout] 4058 + } [INFO] [stdout] 4059 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/map/traversable/tree.rs:4115:21 [INFO] [stdout] | [INFO] [stdout] 4115 | / if n.links[2].is_some() { [INFO] [stdout] 4116 | | let r: &mut Node = &mut self.nodes[n.links[2].clone().unwrap()]; [INFO] [stdout] ... | [INFO] [stdout] 4126 | | n.links[0] = Some(r.pair.key.clone()); [INFO] [stdout] 4127 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 4113 ~ Some(n) [INFO] [stdout] 4114 | // If the node has a right child. [INFO] [stdout] 4115 ~ if n.links[2].is_some() => { [INFO] [stdout] 4116 | let r: &mut Node = &mut self.nodes[n.links[2].clone().unwrap()]; [INFO] [stdout] ... [INFO] [stdout] 4126 | n.links[0] = Some(r.pair.key.clone()); [INFO] [stdout] 4127 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:4112:13 [INFO] [stdout] | [INFO] [stdout] 4112 | / match &mut self.root { [INFO] [stdout] 4113 | | Some(n) => { [INFO] [stdout] 4114 | | // If the node has a right child. [INFO] [stdout] 4115 | | if n.links[2].is_some() { [INFO] [stdout] ... | [INFO] [stdout] 4129 | | None => {}, [INFO] [stdout] 4130 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 4112 ~ if let Some(n) = &mut self.root { [INFO] [stdout] 4113 + // If the node has a right child. [INFO] [stdout] 4114 + if n.links[2].is_some() { [INFO] [stdout] 4115 + let r: &mut Node = &mut self.nodes[n.links[2].clone().unwrap()]; [INFO] [stdout] 4116 + [INFO] [stdout] 4117 + // Replace specified node's right child node with the former right child node's left [INFO] [stdout] 4118 + // child node. [INFO] [stdout] 4119 + n.links[2] = r.links[1].clone(); [INFO] [stdout] 4120 + // Make the specified node the left child node of the former right child node. [INFO] [stdout] 4121 + r.links[1] = Some(n.pair.key.clone()); [INFO] [stdout] 4122 + // Make the specified node's parent node be the parent of the former right child node. [INFO] [stdout] 4123 + r.links[0] = n.links[0].clone(); [INFO] [stdout] 4124 + // Make the former right child node be the parent of the specified node. [INFO] [stdout] 4125 + n.links[0] = Some(r.pair.key.clone()); [INFO] [stdout] 4126 + } [INFO] [stdout] 4127 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/map/traversable/tree.rs:4157:21 [INFO] [stdout] | [INFO] [stdout] 4157 | / if n.links[1].is_some() { [INFO] [stdout] 4158 | | let l: &mut Node = &mut self.nodes[n.links[1].clone().unwrap()]; [INFO] [stdout] ... | [INFO] [stdout] 4168 | | n.links[0] = Some(l.pair.key.clone()); [INFO] [stdout] 4169 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 4155 ~ Some(n) [INFO] [stdout] 4156 | // If the node has a left child. [INFO] [stdout] 4157 ~ if n.links[1].is_some() => { [INFO] [stdout] 4158 | let l: &mut Node = &mut self.nodes[n.links[1].clone().unwrap()]; [INFO] [stdout] ... [INFO] [stdout] 4168 | n.links[0] = Some(l.pair.key.clone()); [INFO] [stdout] 4169 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:4154:13 [INFO] [stdout] | [INFO] [stdout] 4154 | / match &mut self.root { [INFO] [stdout] 4155 | | Some(n) => { [INFO] [stdout] 4156 | | // If the node has a left child. [INFO] [stdout] 4157 | | if n.links[1].is_some() { [INFO] [stdout] ... | [INFO] [stdout] 4171 | | None => {}, [INFO] [stdout] 4172 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 4154 ~ if let Some(n) = &mut self.root { [INFO] [stdout] 4155 + // If the node has a left child. [INFO] [stdout] 4156 + if n.links[1].is_some() { [INFO] [stdout] 4157 + let l: &mut Node = &mut self.nodes[n.links[1].clone().unwrap()]; [INFO] [stdout] 4158 + [INFO] [stdout] 4159 + // Replace specified node's left child node with the former left child node's right [INFO] [stdout] 4160 + // child node. [INFO] [stdout] 4161 + n.links[1] = l.links[2].clone(); [INFO] [stdout] 4162 + // Make the specified node the right child node of the former left child node. [INFO] [stdout] 4163 + l.links[2] = Some(n.pair.key.clone()); [INFO] [stdout] 4164 + // Make the specified node's parent node be the parent of the former left child node. [INFO] [stdout] 4165 + l.links[0] = n.links[0].clone(); [INFO] [stdout] 4166 + // Make the former left child node be the parent of the specified node. [INFO] [stdout] 4167 + n.links[0] = Some(l.pair.key.clone()); [INFO] [stdout] 4168 + } [INFO] [stdout] 4169 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/tree.rs:4226:9 [INFO] [stdout] | [INFO] [stdout] 4226 | / match &mut sub.root { [INFO] [stdout] 4227 | | Some(ref mut r) => { [INFO] [stdout] 4228 | | if node == self.root.clone().unwrap().pair.key { [INFO] [stdout] 4229 | | r.links = self.root.clone().unwrap().links.clone(); [INFO] [stdout] ... | [INFO] [stdout] 4236 | | None => {}, [INFO] [stdout] 4237 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 4226 ~ if let Some(ref mut r) = &mut sub.root { [INFO] [stdout] 4227 + if node == self.root.clone().unwrap().pair.key { [INFO] [stdout] 4228 + r.links = self.root.clone().unwrap().links.clone(); [INFO] [stdout] 4229 + } [INFO] [stdout] 4230 + else { [INFO] [stdout] 4231 + r.links = self.nodes[node.clone()].links.clone(); [INFO] [stdout] 4232 + } [INFO] [stdout] 4233 + r.links[0] = None; [INFO] [stdout] 4234 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/map/traversable/linked.rs:75:9 [INFO] [stdout] | [INFO] [stdout] 75 | / if self.key.is_none() { [INFO] [stdout] 76 | | return None; [INFO] [stdout] 77 | | } [INFO] [stdout] | |_________^ help: replace it with: `self.key?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:85:37 [INFO] [stdout] | [INFO] [stdout] 85 | self.key = Some(self.list.nodes[i + 1].pair.key.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.list.nodes[i + 1].pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `LinkedListTraverser` [INFO] [stdout] --> src/map/traversable/linked.rs:116:5 [INFO] [stdout] | [INFO] [stdout] 116 | / pub fn new() -> Self { [INFO] [stdout] 117 | | LinkedListTraverser { [INFO] [stdout] 118 | | key: None, [INFO] [stdout] 119 | | list: LinkedList::new(), [INFO] [stdout] 120 | | } [INFO] [stdout] 121 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 110 + impl Default for LinkedListTraverser [INFO] [stdout] 111 + where [INFO] [stdout] 112 + V: PartialEq + PartialOrd + Clone + Debug, [INFO] [stdout] 113 + { [INFO] [stdout] 114 + fn default() -> Self { [INFO] [stdout] 115 + Self::new() [INFO] [stdout] 116 + } [INFO] [stdout] 117 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:238:23 [INFO] [stdout] | [INFO] [stdout] 238 | vec.push((self.nodes[i].pair.key.clone(), self.nodes[i].pair.value.clone())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.nodes[i].pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:258:23 [INFO] [stdout] | [INFO] [stdout] 258 | key: Some(self.nodes[0].pair.key.clone()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.nodes[0].pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/map/traversable/linked.rs:341:22 [INFO] [stdout] | [INFO] [stdout] 341 | for i in vec.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:383:27 [INFO] [stdout] | [INFO] [stdout] 383 | self.nodes.insert(pair.key.clone(), Node { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:389:20 [INFO] [stdout] | [INFO] [stdout] 389 | self.nodes[pair.key.clone()].links.push(None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:456:20 [INFO] [stdout] | [INFO] [stdout] 456 | self.nodes[pair.key.clone()].pair.value = pair.value.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:492:29 [INFO] [stdout] | [INFO] [stdout] 492 | node_a: self.nodes[i].pair.key.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.nodes[i].pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:493:29 [INFO] [stdout] | [INFO] [stdout] 493 | node_b: self.nodes[i].links[0].clone().unwrap().clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.nodes[i].links[0].clone().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:493:29 [INFO] [stdout] | [INFO] [stdout] 493 | node_b: self.nodes[i].links[0].clone().unwrap().clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.nodes[i].links[0]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/map/traversable/linked.rs:513:61 [INFO] [stdout] | [INFO] [stdout] 513 | fn is_bipartite(&self) -> bool { !self.is_circular() || (self.len() % 2 == 0) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: replace with: `self.len().is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:586:53 [INFO] [stdout] | [INFO] [stdout] 586 | self.nodes[len - 1].links[0] = Some(self.nodes[0].pair.key.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.nodes[0].pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `LinkedList` [INFO] [stdout] --> src/map/traversable/linked.rs:634:5 [INFO] [stdout] | [INFO] [stdout] 634 | / pub fn new() -> Self { [INFO] [stdout] 635 | | LinkedList { [INFO] [stdout] 636 | | circular: false, [INFO] [stdout] 637 | | nodes: Vec::new(), [INFO] [stdout] 638 | | } [INFO] [stdout] 639 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 615 + impl Default for LinkedList [INFO] [stdout] 616 + where [INFO] [stdout] 617 + V: PartialEq + PartialOrd + Clone + Debug, [INFO] [stdout] 618 + { [INFO] [stdout] 619 + fn default() -> Self { [INFO] [stdout] 620 + Self::new() [INFO] [stdout] 621 + } [INFO] [stdout] 622 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `index` is used as a loop counter [INFO] [stdout] --> src/map/traversable/linked.rs:625:9 [INFO] [stdout] | [INFO] [stdout] 625 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (index, i) in v.into_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] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/map/traversable/linked.rs:625:20 [INFO] [stdout] | [INFO] [stdout] 625 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `index` is used as a loop counter [INFO] [stdout] --> src/map/traversable/linked.rs:656:9 [INFO] [stdout] | [INFO] [stdout] 656 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (index, i) in v.into_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] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/map/traversable/linked.rs:656:20 [INFO] [stdout] | [INFO] [stdout] 656 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this block may be rewritten with the `?` operator [INFO] [stdout] --> src/map/traversable/linked.rs:702:9 [INFO] [stdout] | [INFO] [stdout] 702 | / if self.key.is_none() { [INFO] [stdout] 703 | | return None; [INFO] [stdout] 704 | | } [INFO] [stdout] | |_________^ help: replace it with: `self.key?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:712:37 [INFO] [stdout] | [INFO] [stdout] 712 | self.key = Some(self.list.nodes[i + 1].pair.key.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.list.nodes[i + 1].pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:752:57 [INFO] [stdout] | [INFO] [stdout] 752 | (self.key.is_some() && self.key.unwrap() != self.list.nodes[0].pair.key.clone()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.list.nodes[0].pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:764:29 [INFO] [stdout] | [INFO] [stdout] 764 | self.key = Some(self.list.nodes[self.list.nodes.len() - 1].pair.key.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.list.nodes[self.list.nodes.len() - 1].pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:772:33 [INFO] [stdout] | [INFO] [stdout] 772 | self.key = Some(self.list.nodes[i - 1].pair.key.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.list.nodes[i - 1].pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `DoublyLinkedListTraverser` [INFO] [stdout] --> src/map/traversable/linked.rs:788:5 [INFO] [stdout] | [INFO] [stdout] 788 | / pub fn new() -> Self { [INFO] [stdout] 789 | | DoublyLinkedListTraverser { [INFO] [stdout] 790 | | key: None, [INFO] [stdout] 791 | | list: DoublyLinkedList::new(), [INFO] [stdout] 792 | | } [INFO] [stdout] 793 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 783 + impl Default for DoublyLinkedListTraverser [INFO] [stdout] 784 + where [INFO] [stdout] 785 + V: PartialEq + PartialOrd + Clone + Debug, [INFO] [stdout] 786 + { [INFO] [stdout] 787 + fn default() -> Self { [INFO] [stdout] 788 + Self::new() [INFO] [stdout] 789 + } [INFO] [stdout] 790 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:930:23 [INFO] [stdout] | [INFO] [stdout] 930 | key: Some(self.nodes[0].pair.key.clone()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.nodes[0].pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/map/traversable/linked.rs:1014:22 [INFO] [stdout] | [INFO] [stdout] 1014 | for i in vec.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:1056:27 [INFO] [stdout] | [INFO] [stdout] 1056 | self.nodes.insert(pair.key.clone(), Node { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:1062:20 [INFO] [stdout] | [INFO] [stdout] 1062 | self.nodes[pair.key.clone()].links.push(None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:1063:20 [INFO] [stdout] | [INFO] [stdout] 1063 | self.nodes[pair.key.clone()].links.push(None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:1164:20 [INFO] [stdout] | [INFO] [stdout] 1164 | self.nodes[pair.key.clone()].pair.value = pair.value.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:1200:29 [INFO] [stdout] | [INFO] [stdout] 1200 | node_a: self.nodes[i].pair.key.clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.nodes[i].pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:1201:29 [INFO] [stdout] | [INFO] [stdout] 1201 | node_b: self.nodes[i].links[1].clone().unwrap().clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.nodes[i].links[1].clone().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `Option` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:1201:29 [INFO] [stdout] | [INFO] [stdout] 1201 | node_b: self.nodes[i].links[1].clone().unwrap().clone(), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.nodes[i].links[1]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/map/traversable/linked.rs:1221:61 [INFO] [stdout] | [INFO] [stdout] 1221 | fn is_bipartite(&self) -> bool { !self.is_circular() || (self.len() % 2 == 0) } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: replace with: `self.len().is_multiple_of(2)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:1295:53 [INFO] [stdout] | [INFO] [stdout] 1295 | self.nodes[len - 1].links[1] = Some(self.nodes[0].pair.key.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.nodes[0].pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/linked.rs:1296:47 [INFO] [stdout] | [INFO] [stdout] 1296 | self.nodes[0].links[0] = Some(self.nodes[len - 1].pair.key.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.nodes[len - 1].pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `DoublyLinkedList` [INFO] [stdout] --> src/map/traversable/linked.rs:1347:5 [INFO] [stdout] | [INFO] [stdout] 1347 | / pub fn new() -> Self { [INFO] [stdout] 1348 | | DoublyLinkedList { [INFO] [stdout] 1349 | | circular: false, [INFO] [stdout] 1350 | | nodes: Vec::new(), [INFO] [stdout] 1351 | | } [INFO] [stdout] 1352 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 1327 + impl Default for DoublyLinkedList [INFO] [stdout] 1328 + where [INFO] [stdout] 1329 + V: PartialEq + PartialOrd + Clone + Debug, [INFO] [stdout] 1330 + { [INFO] [stdout] 1331 + fn default() -> Self { [INFO] [stdout] 1332 + Self::new() [INFO] [stdout] 1333 + } [INFO] [stdout] 1334 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `index` is used as a loop counter [INFO] [stdout] --> src/map/traversable/linked.rs:1338:9 [INFO] [stdout] | [INFO] [stdout] 1338 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (index, i) in v.into_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] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/map/traversable/linked.rs:1338:20 [INFO] [stdout] | [INFO] [stdout] 1338 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `index` is used as a loop counter [INFO] [stdout] --> src/map/traversable/linked.rs:1369:9 [INFO] [stdout] | [INFO] [stdout] 1369 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (index, i) in v.into_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] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `Vec` [INFO] [stdout] --> src/map/traversable/linked.rs:1369:20 [INFO] [stdout] | [INFO] [stdout] 1369 | for i in v.into_iter() { [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: it looks like the same item is being pushed into this `Vec` [INFO] [stdout] --> src/map/traversable/graph.rs:189:13 [INFO] [stdout] | [INFO] [stdout] 189 | visited.push(false); [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using `vec![false;SIZE]` [INFO] [stdout] = help: or `visited.extend(std::iter::repeat_n(false, SIZE))` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#same_item_push [INFO] [stdout] = note: `#[warn(clippy::same_item_push)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:199:28 [INFO] [stdout] | [INFO] [stdout] 199 | let n: usize = queue.dequeue().unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `queue.dequeue().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `visited` [INFO] [stdout] --> src/map/traversable/graph.rs:203:22 [INFO] [stdout] | [INFO] [stdout] 203 | for i in 0..self.graph.amtx.columns() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 203 - for i in 0..self.graph.amtx.columns() { [INFO] [stdout] 203 + for (i, ) in visited.iter_mut().enumerate().take(self.graph.amtx.columns()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: it looks like the same item is being pushed into this `Vec` [INFO] [stdout] --> src/map/traversable/graph.rs:219:13 [INFO] [stdout] | [INFO] [stdout] 219 | visited.push(false); [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using `vec![false;SIZE]` [INFO] [stdout] = help: or `visited.extend(std::iter::repeat_n(false, SIZE))` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#same_item_push [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:233:36 [INFO] [stdout] | [INFO] [stdout] 233 | let n: usize = queue.dequeue().unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `queue.dequeue().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `j` is used to index `visited` [INFO] [stdout] --> src/map/traversable/graph.rs:237:30 [INFO] [stdout] | [INFO] [stdout] 237 | for j in 0..self.graph.amtx.columns() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 237 - for j in 0..self.graph.amtx.columns() { [INFO] [stdout] 237 + for (j, ) in visited.iter_mut().enumerate().take(self.graph.amtx.columns()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: it looks like the same item is being pushed into this `Vec` [INFO] [stdout] --> src/map/traversable/graph.rs:254:13 [INFO] [stdout] | [INFO] [stdout] 254 | visited.push(false); [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using `vec![false;SIZE]` [INFO] [stdout] = help: or `visited.extend(std::iter::repeat_n(false, SIZE))` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#same_item_push [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `visited` [INFO] [stdout] --> src/map/traversable/graph.rs:271:22 [INFO] [stdout] | [INFO] [stdout] 271 | for i in 0..self.graph.amtx.columns() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 271 - for i in 0..self.graph.amtx.columns() { [INFO] [stdout] 271 + for (i, ) in visited.iter().enumerate().take(self.graph.amtx.columns()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: it looks like the same item is being pushed into this `Vec` [INFO] [stdout] --> src/map/traversable/graph.rs:286:13 [INFO] [stdout] | [INFO] [stdout] 286 | visited.push(false); [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using `vec![false;SIZE]` [INFO] [stdout] = help: or `visited.extend(std::iter::repeat_n(false, SIZE))` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#same_item_push [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `j` is used to index `visited` [INFO] [stdout] --> src/map/traversable/graph.rs:305:26 [INFO] [stdout] | [INFO] [stdout] 305 | for j in 0..self.graph.amtx.columns() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 305 - for j in 0..self.graph.amtx.columns() { [INFO] [stdout] 305 + for (j, ) in visited.iter().enumerate().take(self.graph.amtx.columns()) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `index` is used as a loop counter [INFO] [stdout] --> src/map/traversable/graph.rs:454:9 [INFO] [stdout] | [INFO] [stdout] 454 | for i in self.nodes.into_iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (index, i) in self.nodes.into_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] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:529:21 [INFO] [stdout] | [INFO] [stdout] 529 | if i == item.pair.key.clone() && self.nodes[i].clone() == item.pair.value.clone() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `item.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `vec` [INFO] [stdout] --> src/map/traversable/graph.rs:539:18 [INFO] [stdout] | [INFO] [stdout] 539 | for i in 0..vec.len() { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 539 - for i in 0..vec.len() { [INFO] [stdout] 539 + for in &vec { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:579:24 [INFO] [stdout] | [INFO] [stdout] 579 | if self.exists(key.clone()) { [INFO] [stdout] | ^^^^^^^^^^^ help: try removing the `clone` call: `key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:580:37 [INFO] [stdout] | [INFO] [stdout] 580 | return Some(&self.nodes[key.clone()]); [INFO] [stdout] | ^^^^^^^^^^^ help: try removing the `clone` call: `key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:589:24 [INFO] [stdout] | [INFO] [stdout] 589 | if self.exists(pair.key.clone()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:611:24 [INFO] [stdout] | [INFO] [stdout] 611 | if self.exists(pair.key.clone()) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:612:24 [INFO] [stdout] | [INFO] [stdout] 612 | self.nodes[pair.key.clone()] = pair.value.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:633:24 [INFO] [stdout] | [INFO] [stdout] 633 | if self.exists(key.clone()) { [INFO] [stdout] | ^^^^^^^^^^^ help: try removing the `clone` call: `key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: it looks like the same item is being pushed into this `Vec` [INFO] [stdout] --> src/map/traversable/graph.rs:735:13 [INFO] [stdout] | [INFO] [stdout] 735 | color.push(0); [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider using `vec![0;SIZE]` [INFO] [stdout] = help: or `color.extend(std::iter::repeat_n(0, SIZE))` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#same_item_push [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:745:28 [INFO] [stdout] | [INFO] [stdout] 745 | let n: usize = queue.dequeue().unwrap().clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `queue.dequeue().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/graph.rs:803:9 [INFO] [stdout] | [INFO] [stdout] 803 | / return if DIRECTED { [INFO] [stdout] 804 | | self.amtx[(key_a, key_b)] != 0.0 [INFO] [stdout] 805 | | } [INFO] [stdout] 806 | | else { [INFO] [stdout] 807 | | self.amtx[(key_a, key_b)] != 0.0 || self.amtx[(key_b, key_a)] != 0.0 [INFO] [stdout] 808 | | } [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] 803 ~ if DIRECTED { [INFO] [stdout] 804 + self.amtx[(key_a, key_b)] != 0.0 [INFO] [stdout] 805 + } [INFO] [stdout] 806 + else { [INFO] [stdout] 807 + self.amtx[(key_a, key_b)] != 0.0 || self.amtx[(key_b, key_a)] != 0.0 [INFO] [stdout] 808 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/graph.rs:856:17 [INFO] [stdout] | [INFO] [stdout] 856 | return None; [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 None; [INFO] [stdout] 856 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/graph.rs:886:17 [INFO] [stdout] | [INFO] [stdout] 886 | return Some(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] 886 - return Some(path); [INFO] [stdout] 886 + Some(path) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/graph.rs:934:17 [INFO] [stdout] | [INFO] [stdout] 934 | return None; [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] 934 - return None; [INFO] [stdout] 934 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/graph.rs:946:17 [INFO] [stdout] | [INFO] [stdout] 946 | return Some(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] 946 - return Some(path); [INFO] [stdout] 946 + Some(path) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/map/traversable/graph.rs:844:21 [INFO] [stdout] | [INFO] [stdout] 844 | / if dist[i.node_a].is_finite() { [INFO] [stdout] 845 | | if dist[i.node_b] > dist[i.node_a] + i.weight { [INFO] [stdout] 846 | | dist[i.node_b] = dist[i.node_a] + i.weight; [INFO] [stdout] 847 | | pred[i.node_b] = i.node_a as isize; [INFO] [stdout] ... | [INFO] [stdout] 850 | | } [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] 844 ~ if dist[i.node_a].is_finite() [INFO] [stdout] 845 ~ && dist[i.node_b] > dist[i.node_a] + i.weight { [INFO] [stdout] 846 | dist[i.node_b] = dist[i.node_a] + i.weight; [INFO] [stdout] 847 | pred[i.node_b] = i.node_a as isize; [INFO] [stdout] 848 | neg_cycle = i.node_b as isize; [INFO] [stdout] 849 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against false can be replaced by a negation [INFO] [stdout] --> src/map/traversable/graph.rs:908:24 [INFO] [stdout] | [INFO] [stdout] 908 | if visited[i] == false && dist[i] <= min { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `!visited[i]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/map/traversable/graph.rs:973:21 [INFO] [stdout] | [INFO] [stdout] 973 | / if ecc == r { [INFO] [stdout] 974 | | vec.push(node.clone()); [INFO] [stdout] 975 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 972 ~ Some(ecc) [INFO] [stdout] 973 ~ if ecc == r => { [INFO] [stdout] 974 | vec.push(node.clone()); [INFO] [stdout] 975 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/graph.rs:971:13 [INFO] [stdout] | [INFO] [stdout] 971 | / match self.eccentricity(&node) { [INFO] [stdout] 972 | | Some(ecc) => { [INFO] [stdout] 973 | | if ecc == r { [INFO] [stdout] 974 | | vec.push(node.clone()); [INFO] [stdout] ... | [INFO] [stdout] 977 | | None => {}, [INFO] [stdout] 978 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 971 ~ if let Some(ecc) = self.eccentricity(&node) { [INFO] [stdout] 972 + if ecc == r { [INFO] [stdout] 973 + vec.push(node.clone()); [INFO] [stdout] 974 + } [INFO] [stdout] 975 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/graph.rs:1023:17 [INFO] [stdout] | [INFO] [stdout] 1023 | return None; [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] 1023 - return None; [INFO] [stdout] 1023 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/graph.rs:1029:21 [INFO] [stdout] | [INFO] [stdout] 1029 | return Some(f32::MIN); [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] 1029 - return Some(f32::MIN); [INFO] [stdout] 1029 + Some(f32::MIN) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/graph.rs:1033:21 [INFO] [stdout] | [INFO] [stdout] 1033 | return Some(dist[b.pair.key.clone()]); [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] 1033 - return Some(dist[b.pair.key.clone()]); [INFO] [stdout] 1033 + Some(dist[b.pair.key.clone()]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/graph.rs:1080:17 [INFO] [stdout] | [INFO] [stdout] 1080 | return None; [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] 1080 - return None; [INFO] [stdout] 1080 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable/graph.rs:1084:17 [INFO] [stdout] | [INFO] [stdout] 1084 | return Some(dist[b.pair.key.clone()]); [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] 1084 - return Some(dist[b.pair.key.clone()]); [INFO] [stdout] 1084 + Some(dist[b.pair.key.clone()]) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:989:12 [INFO] [stdout] | [INFO] [stdout] 989 | if a.pair.key.clone() >= self.nodes.len() || b.pair.key.clone() >= self.nodes.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `a.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:989:54 [INFO] [stdout] | [INFO] [stdout] 989 | if a.pair.key.clone() >= self.nodes.len() || b.pair.key.clone() >= self.nodes.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `b.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:1005:18 [INFO] [stdout] | [INFO] [stdout] 1005 | dist[a.pair.key.clone()] = 0.0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `a.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/map/traversable/graph.rs:1012:21 [INFO] [stdout] | [INFO] [stdout] 1012 | / if dist[i.node_a].is_finite() { [INFO] [stdout] 1013 | | if dist[i.node_b] > dist[i.node_a] + i.weight { [INFO] [stdout] 1014 | | dist[i.node_b] = dist[i.node_a] + i.weight; [INFO] [stdout] 1015 | | neg_cycle = i.node_b as isize; [INFO] [stdout] 1016 | | } [INFO] [stdout] 1017 | | } [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] 1012 ~ if dist[i.node_a].is_finite() [INFO] [stdout] 1013 ~ && dist[i.node_b] > dist[i.node_a] + i.weight { [INFO] [stdout] 1014 | dist[i.node_b] = dist[i.node_a] + i.weight; [INFO] [stdout] 1015 | neg_cycle = i.node_b as isize; [INFO] [stdout] 1016 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:1022:21 [INFO] [stdout] | [INFO] [stdout] 1022 | if dist[b.pair.key.clone()].is_infinite() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `b.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:1033:38 [INFO] [stdout] | [INFO] [stdout] 1033 | return Some(dist[b.pair.key.clone()]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `b.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:1047:18 [INFO] [stdout] | [INFO] [stdout] 1047 | dist[a.pair.key.clone()] = 0.0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `a.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against false can be replaced by a negation [INFO] [stdout] --> src/map/traversable/graph.rs:1055:24 [INFO] [stdout] | [INFO] [stdout] 1055 | if visited[i] == false && dist[i] <= min { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `!visited[i]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:1079:21 [INFO] [stdout] | [INFO] [stdout] 1079 | if dist[b.pair.key.clone()].is_infinite() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `b.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:1084:34 [INFO] [stdout] | [INFO] [stdout] 1084 | return Some(dist[b.pair.key.clone()]); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `b.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:1094:12 [INFO] [stdout] | [INFO] [stdout] 1094 | if node.pair.key.clone() >= self.nodes.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `node.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:1102:21 [INFO] [stdout] | [INFO] [stdout] 1102 | if i != node.pair.key.clone() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `node.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/map/traversable/graph.rs:1106:17 [INFO] [stdout] | [INFO] [stdout] 1106 | / match self.distance(&node, &self.node(i).unwrap()) { [INFO] [stdout] 1107 | | Some(d) => dist = d, [INFO] [stdout] 1108 | | None => {}, [INFO] [stdout] 1109 | | } [INFO] [stdout] | |_________________^ help: try: `if let Some(d) = self.distance(&node, &self.node(i).unwrap()) { dist = d }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/map/traversable/graph.rs:1106:37 [INFO] [stdout] | [INFO] [stdout] 1106 | match self.distance(&node, &self.node(i).unwrap()) { [INFO] [stdout] | ^^^^^ help: change this to: `node` [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: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:1128:12 [INFO] [stdout] | [INFO] [stdout] 1128 | if a.pair.key.clone() >= self.nodes.len() || b.pair.key.clone() >= self.nodes.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `a.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:1128:54 [INFO] [stdout] | [INFO] [stdout] 1128 | if a.pair.key.clone() >= self.nodes.len() || b.pair.key.clone() >= self.nodes.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `b.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:1133:20 [INFO] [stdout] | [INFO] [stdout] 1133 | self.amtx[(a.pair.key.clone(), b.pair.key.clone())] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `a.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `usize` which implements the `Copy` trait [INFO] [stdout] --> src/map/traversable/graph.rs:1133:40 [INFO] [stdout] | [INFO] [stdout] 1133 | self.amtx[(a.pair.key.clone(), b.pair.key.clone())] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `b.pair.key` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Graph` [INFO] [stdout] --> src/map/traversable/graph.rs:1176:5 [INFO] [stdout] | [INFO] [stdout] 1176 | / pub fn new() -> Self { [INFO] [stdout] 1177 | | Graph { [INFO] [stdout] 1178 | | amtx: AdjacencyMatrix::new(), [INFO] [stdout] 1179 | | nodes: Vec::new(), [INFO] [stdout] 1180 | | } [INFO] [stdout] 1181 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 1170 + impl Default for Graph [INFO] [stdout] 1171 + where [INFO] [stdout] 1172 + V: Clone + Debug + PartialEq + PartialOrd, [INFO] [stdout] 1173 + { [INFO] [stdout] 1174 + fn default() -> Self { [INFO] [stdout] 1175 + Self::new() [INFO] [stdout] 1176 + } [INFO] [stdout] 1177 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/map/traversable.rs:63:17 [INFO] [stdout] | [WARN] too many lines in the log, truncating it