[INFO] updating cached repository Zeimer/aisd [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/Zeimer/aisd [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/Zeimer/aisd" "work/ex/clippy-test-run/sources/stable/gh/Zeimer/aisd"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/Zeimer/aisd'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/Zeimer/aisd" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Zeimer/aisd"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Zeimer/aisd'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] bf5ca6bbb362024091da11f2e961796a0e201475 [INFO] sha for GitHub repo Zeimer/aisd: bf5ca6bbb362024091da11f2e961796a0e201475 [INFO] validating manifest of Zeimer/aisd on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of Zeimer/aisd on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing Zeimer/aisd [INFO] finished frobbing Zeimer/aisd [INFO] frobbed toml for Zeimer/aisd written to work/ex/clippy-test-run/sources/stable/gh/Zeimer/aisd/Cargo.toml [INFO] started frobbing Zeimer/aisd [INFO] finished frobbing Zeimer/aisd [INFO] frobbed toml for Zeimer/aisd written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Zeimer/aisd/Cargo.toml [INFO] crate Zeimer/aisd has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting Zeimer/aisd against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/Zeimer/aisd:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 219ea32ac9b84d650e6a66964e2e5c186be20d2bde45813fadebbbd452ae919e [INFO] running `"docker" "start" "-a" "219ea32ac9b84d650e6a66964e2e5c186be20d2bde45813fadebbbd452ae919e"` [INFO] [stderr] Checking aisd v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/pq.rs:82:24 [INFO] [stderr] | [INFO] [stderr] 82 | } else if l <= last { [INFO] [stderr] | ________________________^ [INFO] [stderr] 83 | | if cmp(&v[i], &v[l]) { [INFO] [stderr] 84 | | return false; [INFO] [stderr] 85 | | } [INFO] [stderr] 86 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 82 | } else if l <= last && cmp(&v[i], &v[l]) { [INFO] [stderr] 83 | return false; [INFO] [stderr] 84 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::u32` [INFO] [stderr] --> src/depq.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::u32; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused `#[macro_use]` import [INFO] [stderr] --> src/lib.rs:13:1 [INFO] [stderr] | [INFO] [stderr] 13 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/pq.rs:82:24 [INFO] [stderr] | [INFO] [stderr] 82 | } else if l <= last { [INFO] [stderr] | ________________________^ [INFO] [stderr] 83 | | if cmp(&v[i], &v[l]) { [INFO] [stderr] 84 | | return false; [INFO] [stderr] 85 | | } [INFO] [stderr] 86 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 82 | } else if l <= last && cmp(&v[i], &v[l]) { [INFO] [stderr] 83 | return false; [INFO] [stderr] 84 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused import: `super::Tree::*` [INFO] [stderr] --> src/map/bst.rs:89:9 [INFO] [stderr] | [INFO] [stderr] 89 | use super::Tree::*; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `key` [INFO] [stderr] --> src/map/bst.rs:58:23 [INFO] [stderr] | [INFO] [stderr] 58 | fn del(&mut self, key: &K) -> Option { [INFO] [stderr] | ^^^ help: consider using `_key` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `key` [INFO] [stderr] --> src/map/bst.rs:58:23 [INFO] [stderr] | [INFO] [stderr] 58 | fn del(&mut self, key: &K) -> Option { [INFO] [stderr] | ^^^ help: consider using `_key` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `is_heap` [INFO] [stderr] --> src/depq.rs:248:5 [INFO] [stderr] | [INFO] [stderr] 248 | fn is_heap(&self) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `size` [INFO] [stderr] --> src/map/bst.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | fn size(&self) -> usize { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `pq::Heap` [INFO] [stderr] --> src/pq.rs:44:5 [INFO] [stderr] | [INFO] [stderr] 44 | / pub fn new() -> Heap { [INFO] [stderr] 45 | | Heap {array: vec![]} [INFO] [stderr] 46 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 37 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/pq.rs:68:27 [INFO] [stderr] | [INFO] [stderr] 68 | pub fn is_heap_aux(v: &Vec, cmp: fn(&T, &T) -> bool) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&[T]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/pq.rs:69:12 [INFO] [stderr] | [INFO] [stderr] 69 | if v.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!v.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/pq.rs:93:23 [INFO] [stderr] | [INFO] [stderr] 93 | pub fn is_heap(v: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&[T]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/pq.rs:160:12 [INFO] [stderr] | [INFO] [stderr] 160 | if v.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `v.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/pq.rs:178:9 [INFO] [stderr] | [INFO] [stderr] 178 | / loop { [INFO] [stderr] 179 | | match v.pop() { [INFO] [stderr] 180 | | Some(x) => h.insert(x), [INFO] [stderr] 181 | | None => break [INFO] [stderr] 182 | | } [INFO] [stderr] 183 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(x) = v.pop() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/pq.rs:185:9 [INFO] [stderr] | [INFO] [stderr] 185 | / loop { [INFO] [stderr] 186 | | match h.del_min() { [INFO] [stderr] 187 | | Some(x) => v.push(x), [INFO] [stderr] 188 | | None => break [INFO] [stderr] 189 | | } [INFO] [stderr] 190 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(x) = h.del_min() { .. }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `depq::DoubleHeap` [INFO] [stderr] --> src/depq.rs:94:5 [INFO] [stderr] | [INFO] [stderr] 94 | / pub fn new() -> DoubleHeap { [INFO] [stderr] 95 | | DoubleHeap { [INFO] [stderr] 96 | | min_array: vec![], [INFO] [stderr] 97 | | max_array: vec![] [INFO] [stderr] 98 | | } [INFO] [stderr] 99 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 87 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/depq.rs:184:12 [INFO] [stderr] | [INFO] [stderr] 184 | if l.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `l.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/map/bst.rs:105:17 [INFO] [stderr] | [INFO] [stderr] 105 | let mut t1 = t.clone(); [INFO] [stderr] | ----^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `pq::Heap` [INFO] [stderr] --> src/pq.rs:44:5 [INFO] [stderr] | [INFO] [stderr] 44 | / pub fn new() -> Heap { [INFO] [stderr] 45 | | Heap {array: vec![]} [INFO] [stderr] 46 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 37 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/pq.rs:68:27 [INFO] [stderr] | [INFO] [stderr] 68 | pub fn is_heap_aux(v: &Vec, cmp: fn(&T, &T) -> bool) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&[T]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/pq.rs:69:12 [INFO] [stderr] | [INFO] [stderr] 69 | if v.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!v.is_empty()` [INFO] [stderr] warning: the loop variable `i` is only used to index `coins`. [INFO] [stderr] --> src/coin_change.rs:66:18 [INFO] [stderr] | [INFO] [stderr] 66 | for mut i in 0 .. coins.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 66 | for in &coins { [INFO] [stderr] | ^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: parameter of type `HashSet` should be generalized over different hashers [INFO] [stderr] --> src/coin_change.rs:94:34 [INFO] [stderr] | [INFO] [stderr] 94 | pub fn make_change_count(coins: &HashSet, amount: usize) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/pq.rs:93:23 [INFO] [stderr] | [INFO] [stderr] 93 | pub fn is_heap(v: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&[T]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::implicit_hasher)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 94 | pub fn make_change_count(coins: &HashSet, amount: usize) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/pq.rs:160:12 [INFO] [stderr] | [INFO] [stderr] 160 | if v.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `v.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/pq.rs:178:9 [INFO] [stderr] | [INFO] [stderr] 178 | / loop { [INFO] [stderr] 179 | | match v.pop() { [INFO] [stderr] 180 | | Some(x) => h.insert(x), [INFO] [stderr] 181 | | None => break [INFO] [stderr] 182 | | } [INFO] [stderr] 183 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(x) = v.pop() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/pq.rs:185:9 [INFO] [stderr] | [INFO] [stderr] 185 | / loop { [INFO] [stderr] 186 | | match h.del_min() { [INFO] [stderr] 187 | | Some(x) => v.push(x), [INFO] [stderr] 188 | | None => break [INFO] [stderr] 189 | | } [INFO] [stderr] 190 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(x) = h.del_min() { .. }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/pq.rs:291:36 [INFO] [stderr] | [INFO] [stderr] 291 | fn is_sorted(v: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&[T]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/pq.rs:310:13 [INFO] [stderr] | [INFO] [stderr] 310 | h2.is_empty() == false [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!h2.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/pq.rs:314:50 [INFO] [stderr] | [INFO] [stderr] 314 | (h.clone().min() != Option::None) == (h.is_empty() == false) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!h.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/pq.rs:318:54 [INFO] [stderr] | [INFO] [stderr] 318 | (h.clone().del_min() != Option::None) == (h.is_empty() == false) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!h.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/pq.rs:380:13 [INFO] [stderr] | [INFO] [stderr] 380 | (Heap::new() as Heap).is_empty() == true [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `(Heap::new() as Heap).is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `depq::DoubleHeap` [INFO] [stderr] --> src/depq.rs:94:5 [INFO] [stderr] | [INFO] [stderr] 94 | / pub fn new() -> DoubleHeap { [INFO] [stderr] 95 | | DoubleHeap { [INFO] [stderr] 96 | | min_array: vec![], [INFO] [stderr] 97 | | max_array: vec![] [INFO] [stderr] 98 | | } [INFO] [stderr] 99 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 87 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/depq.rs:184:12 [INFO] [stderr] | [INFO] [stderr] 184 | if l.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `l.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/depq.rs:358:13 [INFO] [stderr] | [INFO] [stderr] 358 | h2.is_empty() == false [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!h2.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/depq.rs:362:13 [INFO] [stderr] | [INFO] [stderr] 362 | (h.is_empty() == false) == (h.clone().min() != Option::None) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!h.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/depq.rs:366:13 [INFO] [stderr] | [INFO] [stderr] 366 | (h.is_empty() == false) == (h.clone().del_min() != Option::None) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!h.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/depq.rs:370:13 [INFO] [stderr] | [INFO] [stderr] 370 | (h.is_empty() == false) == (h.clone().max() != Option::None) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!h.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/depq.rs:374:13 [INFO] [stderr] | [INFO] [stderr] 374 | (h.is_empty() == false) == (h.clone().del_max() != Option::None) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!h.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/depq.rs:492:13 [INFO] [stderr] | [INFO] [stderr] 492 | (DoubleHeap::new() as DoubleHeap).is_empty() == true [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `(DoubleHeap::new() as DoubleHeap).is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `coins`. [INFO] [stderr] --> src/coin_change.rs:66:18 [INFO] [stderr] | [INFO] [stderr] 66 | for mut i in 0 .. coins.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 66 | for in &coins { [INFO] [stderr] | ^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: parameter of type `HashSet` should be generalized over different hashers [INFO] [stderr] --> src/coin_change.rs:94:34 [INFO] [stderr] | [INFO] [stderr] 94 | pub fn make_change_count(coins: &HashSet, amount: usize) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::implicit_hasher)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 94 | pub fn make_change_count(coins: &HashSet, amount: usize) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `aisd::pq::Heap` [INFO] [stderr] --> src/bin.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use aisd::pq::Heap; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `aisd::depq::DEPQ` [INFO] [stderr] --> src/bin.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use aisd::depq::DEPQ; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `aisd::depq::DoubleHeap` [INFO] [stderr] --> src/bin.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use aisd::depq::DoubleHeap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `aisd::pq::Heap` [INFO] [stderr] --> src/bin.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use aisd::pq::Heap; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `aisd::depq::DEPQ` [INFO] [stderr] --> src/bin.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use aisd::depq::DEPQ; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `aisd::depq::DoubleHeap` [INFO] [stderr] --> src/bin.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use aisd::depq::DoubleHeap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 5.45s [INFO] running `"docker" "inspect" "219ea32ac9b84d650e6a66964e2e5c186be20d2bde45813fadebbbd452ae919e"` [INFO] running `"docker" "rm" "-f" "219ea32ac9b84d650e6a66964e2e5c186be20d2bde45813fadebbbd452ae919e"` [INFO] [stdout] 219ea32ac9b84d650e6a66964e2e5c186be20d2bde45813fadebbbd452ae919e