[INFO] updating cached repository megesdal/bedtree-rs [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/megesdal/bedtree-rs [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/megesdal/bedtree-rs" "work/ex/clippy-test-run/sources/stable/gh/megesdal/bedtree-rs"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/megesdal/bedtree-rs'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/megesdal/bedtree-rs" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/megesdal/bedtree-rs"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/megesdal/bedtree-rs'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 619e6a2c8e1ed408362deaa39469d5f685c0c4a1 [INFO] sha for GitHub repo megesdal/bedtree-rs: 619e6a2c8e1ed408362deaa39469d5f685c0c4a1 [INFO] validating manifest of megesdal/bedtree-rs 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 megesdal/bedtree-rs 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 megesdal/bedtree-rs [INFO] finished frobbing megesdal/bedtree-rs [INFO] frobbed toml for megesdal/bedtree-rs written to work/ex/clippy-test-run/sources/stable/gh/megesdal/bedtree-rs/Cargo.toml [INFO] started frobbing megesdal/bedtree-rs [INFO] finished frobbing megesdal/bedtree-rs [INFO] frobbed toml for megesdal/bedtree-rs written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/megesdal/bedtree-rs/Cargo.toml [INFO] crate megesdal/bedtree-rs 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 megesdal/bedtree-rs against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/megesdal/bedtree-rs:/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 -Dclippy::into_iter_on_array" "-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] c5086380a5535314dc088666248a8d4c7cf86fd782b31937ef9418396000fb90 [INFO] running `"docker" "start" "-a" "c5086380a5535314dc088666248a8d4c7cf86fd782b31937ef9418396000fb90"` [INFO] [stderr] Checking hello_world v0.0.1 (/opt/crater/workdir) [INFO] [stderr] warning: unused import: `max` [INFO] [stderr] --> src/main.rs:2:16 [INFO] [stderr] | [INFO] [stderr] 2 | use std::cmp::{max, min, Ordering}; [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `max` [INFO] [stderr] --> src/main.rs:2:16 [INFO] [stderr] | [INFO] [stderr] 2 | use std::cmp::{max, min, Ordering}; [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `node_to_insert` [INFO] [stderr] --> src/main.rs:114:14 [INFO] [stderr] | [INFO] [stderr] 114 | let (node_to_insert, insert_idx) = match split_result { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using `_node_to_insert` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `insert_idx` [INFO] [stderr] --> src/main.rs:114:30 [INFO] [stderr] | [INFO] [stderr] 114 | let (node_to_insert, insert_idx) = match split_result { [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_insert_idx` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `q` [INFO] [stderr] --> src/main.rs:125:68 [INFO] [stderr] | [INFO] [stderr] 125 | fn split_if_necessary(&'a self, parent: &'a BPlusTreeNode<'a>, q: &str) [INFO] [stderr] | ^ help: consider using `_q` instead [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `BPlusTree` [INFO] [stderr] --> src/main.rs:42:1 [INFO] [stderr] | [INFO] [stderr] 42 | struct BPlusTree<'a> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `BPlusTreeNode` [INFO] [stderr] --> src/main.rs:48:1 [INFO] [stderr] | [INFO] [stderr] 48 | struct BPlusTreeNode<'a> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `is_leaf_node` [INFO] [stderr] --> src/main.rs:57:5 [INFO] [stderr] | [INFO] [stderr] 57 | fn is_leaf_node(&self) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `insert` [INFO] [stderr] --> src/main.rs:64:5 [INFO] [stderr] | [INFO] [stderr] 64 | fn insert(&'a self, q: &str) -> &'a BPlusTreeNode<'a> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `find_node` [INFO] [stderr] --> src/main.rs:70:5 [INFO] [stderr] | [INFO] [stderr] 70 | fn find_node(&'a self, q: &str, node: &'a BPlusTreeNode<'a>) -> &'a BPlusTreeNode<'a> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `check_split` [INFO] [stderr] --> src/main.rs:75:13 [INFO] [stderr] | [INFO] [stderr] 75 | / fn check_split<'a>(tree: &'a BPlusTree<'a>, q: &str, node: &'a BPlusTreeNode<'a>, [INFO] [stderr] 76 | | child_idx: usize) -> &'a BPlusTreeNode<'a> { [INFO] [stderr] 77 | | if child_idx == node.splits.len() { [INFO] [stderr] 78 | | tree.find_node(q, &node.children[node.splits.len()]) [INFO] [stderr] ... | [INFO] [stderr] 83 | | } [INFO] [stderr] 84 | | }; [INFO] [stderr] | |_____________^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `rec_insert` [INFO] [stderr] --> src/main.rs:89:5 [INFO] [stderr] | [INFO] [stderr] 89 | / fn rec_insert(&'a self, q: &str, parent: &'a BPlusTreeNode<'a>, [INFO] [stderr] 90 | | child: Option<&'a BPlusTreeNode>) -> &'a BPlusTreeNode<'a> { [INFO] [stderr] 91 | | [INFO] [stderr] 92 | | // TODO: recursive closure via struct? [INFO] [stderr] ... | [INFO] [stderr] 122 | | parent [INFO] [stderr] 123 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `find_insert_loc` [INFO] [stderr] --> src/main.rs:93:9 [INFO] [stderr] | [INFO] [stderr] 93 | / fn find_insert_loc<'a>(compare: fn(&str,&str)->Ordering, splits: &Vec<&str>, idx: usize, [INFO] [stderr] 94 | | q: &str, child: Option<&'a BPlusTreeNode>) -> (usize, bool) { [INFO] [stderr] 95 | | if idx == splits.len() { [INFO] [stderr] 96 | | (splits.len(), true) [INFO] [stderr] ... | [INFO] [stderr] 103 | | } [INFO] [stderr] 104 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `split_if_necessary` [INFO] [stderr] --> src/main.rs:125:5 [INFO] [stderr] | [INFO] [stderr] 125 | / fn split_if_necessary(&'a self, parent: &'a BPlusTreeNode<'a>, q: &str) [INFO] [stderr] 126 | | -> (Option<&'a BPlusTreeNode<'a>>, bool) { [INFO] [stderr] 127 | | let should_split = parent.splits.len() == self.branch_factor - 1; [INFO] [stderr] 128 | | if !should_split { [INFO] [stderr] ... | [INFO] [stderr] 133 | | } [INFO] [stderr] 134 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `verify_edit_distance` [INFO] [stderr] --> src/main.rs:137:1 [INFO] [stderr] | [INFO] [stderr] 137 | fn verify_edit_distance(x: &str, y: &str, distance_threshold: usize) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `create_verification_table` [INFO] [stderr] --> src/main.rs:171:1 [INFO] [stderr] | [INFO] [stderr] 171 | / fn create_verification_table( [INFO] [stderr] 172 | | nrows: usize, [INFO] [stderr] 173 | | ncols: usize, [INFO] [stderr] 174 | | distance_threshold: usize, [INFO] [stderr] ... | [INFO] [stderr] 225 | | (row0, Some(m)) [INFO] [stderr] 226 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:58:9 [INFO] [stderr] | [INFO] [stderr] 58 | self.children.len() == 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.children.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: unused variable: `node_to_insert` [INFO] [stderr] --> src/main.rs:114:14 [INFO] [stderr] | [INFO] [stderr] 114 | let (node_to_insert, insert_idx) = match split_result { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using `_node_to_insert` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `insert_idx` [INFO] [stderr] --> src/main.rs:114:30 [INFO] [stderr] | [INFO] [stderr] 114 | let (node_to_insert, insert_idx) = match split_result { [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_insert_idx` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `q` [INFO] [stderr] --> src/main.rs:125:68 [INFO] [stderr] | [INFO] [stderr] 125 | fn split_if_necessary(&'a self, parent: &'a BPlusTreeNode<'a>, q: &str) [INFO] [stderr] | ^ help: consider using `_q` instead [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/main.rs:93:74 [INFO] [stderr] | [INFO] [stderr] 93 | fn find_insert_loc<'a>(compare: fn(&str,&str)->Ordering, splits: &Vec<&str>, idx: usize, [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[&str]` [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/main.rs:117:24 [INFO] [stderr] | [INFO] [stderr] 117 | if new_node.children.len() > 0 { 1 } else { 0 }), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!new_node.children.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: the loop variable `j` is used to index `row0` [INFO] [stderr] --> src/main.rs:183:18 [INFO] [stderr] | [INFO] [stderr] 183 | for j in 0..first_end { [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] 183 | for (j, ) in row0.iter_mut().enumerate().take(first_end) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/main.rs:194:11 [INFO] [stderr] | [INFO] [stderr] 194 | for i in 1..nrows + 1 { [INFO] [stderr] | ^^^^^^^^^^^^ help: use: `1..=nrows` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/main.rs:221:12 [INFO] [stderr] | [INFO] [stderr] 221 | for j in 0..ncols + 1 { [INFO] [stderr] | ^^^^^^^^^^^^ help: try replacing the loop by: `row0[..ncols + 1].clone_from_slice(&row1[..ncols + 1])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/main.rs:221:12 [INFO] [stderr] | [INFO] [stderr] 221 | for j in 0..ncols + 1 { [INFO] [stderr] | ^^^^^^^^^^^^ help: use: `0..=ncols` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `BPlusTree` [INFO] [stderr] --> src/main.rs:42:1 [INFO] [stderr] | [INFO] [stderr] 42 | struct BPlusTree<'a> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `BPlusTreeNode` [INFO] [stderr] --> src/main.rs:48:1 [INFO] [stderr] | [INFO] [stderr] 48 | struct BPlusTreeNode<'a> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `is_leaf_node` [INFO] [stderr] --> src/main.rs:57:5 [INFO] [stderr] | [INFO] [stderr] 57 | fn is_leaf_node(&self) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `insert` [INFO] [stderr] --> src/main.rs:64:5 [INFO] [stderr] | [INFO] [stderr] 64 | fn insert(&'a self, q: &str) -> &'a BPlusTreeNode<'a> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `find_node` [INFO] [stderr] --> src/main.rs:70:5 [INFO] [stderr] | [INFO] [stderr] 70 | fn find_node(&'a self, q: &str, node: &'a BPlusTreeNode<'a>) -> &'a BPlusTreeNode<'a> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `check_split` [INFO] [stderr] --> src/main.rs:75:13 [INFO] [stderr] | [INFO] [stderr] 75 | / fn check_split<'a>(tree: &'a BPlusTree<'a>, q: &str, node: &'a BPlusTreeNode<'a>, [INFO] [stderr] 76 | | child_idx: usize) -> &'a BPlusTreeNode<'a> { [INFO] [stderr] 77 | | if child_idx == node.splits.len() { [INFO] [stderr] 78 | | tree.find_node(q, &node.children[node.splits.len()]) [INFO] [stderr] ... | [INFO] [stderr] 83 | | } [INFO] [stderr] 84 | | }; [INFO] [stderr] | |_____________^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `rec_insert` [INFO] [stderr] --> src/main.rs:89:5 [INFO] [stderr] | [INFO] [stderr] 89 | / fn rec_insert(&'a self, q: &str, parent: &'a BPlusTreeNode<'a>, [INFO] [stderr] 90 | | child: Option<&'a BPlusTreeNode>) -> &'a BPlusTreeNode<'a> { [INFO] [stderr] 91 | | [INFO] [stderr] 92 | | // TODO: recursive closure via struct? [INFO] [stderr] ... | [INFO] [stderr] 122 | | parent [INFO] [stderr] 123 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `find_insert_loc` [INFO] [stderr] --> src/main.rs:93:9 [INFO] [stderr] | [INFO] [stderr] 93 | / fn find_insert_loc<'a>(compare: fn(&str,&str)->Ordering, splits: &Vec<&str>, idx: usize, [INFO] [stderr] 94 | | q: &str, child: Option<&'a BPlusTreeNode>) -> (usize, bool) { [INFO] [stderr] 95 | | if idx == splits.len() { [INFO] [stderr] 96 | | (splits.len(), true) [INFO] [stderr] ... | [INFO] [stderr] 103 | | } [INFO] [stderr] 104 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `split_if_necessary` [INFO] [stderr] --> src/main.rs:125:5 [INFO] [stderr] | [INFO] [stderr] 125 | / fn split_if_necessary(&'a self, parent: &'a BPlusTreeNode<'a>, q: &str) [INFO] [stderr] 126 | | -> (Option<&'a BPlusTreeNode<'a>>, bool) { [INFO] [stderr] 127 | | let should_split = parent.splits.len() == self.branch_factor - 1; [INFO] [stderr] 128 | | if !should_split { [INFO] [stderr] ... | [INFO] [stderr] 133 | | } [INFO] [stderr] 134 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:58:9 [INFO] [stderr] | [INFO] [stderr] 58 | self.children.len() == 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.children.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/main.rs:93:74 [INFO] [stderr] | [INFO] [stderr] 93 | fn find_insert_loc<'a>(compare: fn(&str,&str)->Ordering, splits: &Vec<&str>, idx: usize, [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[&str]` [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/main.rs:117:24 [INFO] [stderr] | [INFO] [stderr] 117 | if new_node.children.len() > 0 { 1 } else { 0 }), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!new_node.children.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: the loop variable `j` is used to index `row0` [INFO] [stderr] --> src/main.rs:183:18 [INFO] [stderr] | [INFO] [stderr] 183 | for j in 0..first_end { [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] 183 | for (j, ) in row0.iter_mut().enumerate().take(first_end) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/main.rs:194:11 [INFO] [stderr] | [INFO] [stderr] 194 | for i in 1..nrows + 1 { [INFO] [stderr] | ^^^^^^^^^^^^ help: use: `1..=nrows` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/main.rs:221:12 [INFO] [stderr] | [INFO] [stderr] 221 | for j in 0..ncols + 1 { [INFO] [stderr] | ^^^^^^^^^^^^ help: try replacing the loop by: `row0[..ncols + 1].clone_from_slice(&row1[..ncols + 1])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/main.rs:221:12 [INFO] [stderr] | [INFO] [stderr] 221 | for j in 0..ncols + 1 { [INFO] [stderr] | ^^^^^^^^^^^^ help: use: `0..=ncols` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 0.39s [INFO] running `"docker" "inspect" "c5086380a5535314dc088666248a8d4c7cf86fd782b31937ef9418396000fb90"` [INFO] running `"docker" "rm" "-f" "c5086380a5535314dc088666248a8d4c7cf86fd782b31937ef9418396000fb90"` [INFO] [stdout] c5086380a5535314dc088666248a8d4c7cf86fd782b31937ef9418396000fb90