[INFO] updating cached repository remram44/rs-specs-quadtree [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/remram44/rs-specs-quadtree [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/remram44/rs-specs-quadtree" "work/ex/clippy-test-run/sources/stable/gh/remram44/rs-specs-quadtree"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/remram44/rs-specs-quadtree'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/remram44/rs-specs-quadtree" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/remram44/rs-specs-quadtree"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/remram44/rs-specs-quadtree'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] a8bb454c5ee5d7550042419cc92d932d256c0d69 [INFO] sha for GitHub repo remram44/rs-specs-quadtree: a8bb454c5ee5d7550042419cc92d932d256c0d69 [INFO] validating manifest of remram44/rs-specs-quadtree 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 remram44/rs-specs-quadtree 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 remram44/rs-specs-quadtree [INFO] finished frobbing remram44/rs-specs-quadtree [INFO] frobbed toml for remram44/rs-specs-quadtree written to work/ex/clippy-test-run/sources/stable/gh/remram44/rs-specs-quadtree/Cargo.toml [INFO] started frobbing remram44/rs-specs-quadtree [INFO] finished frobbing remram44/rs-specs-quadtree [INFO] frobbed toml for remram44/rs-specs-quadtree written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/remram44/rs-specs-quadtree/Cargo.toml [INFO] crate remram44/rs-specs-quadtree 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 remram44/rs-specs-quadtree 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/remram44/rs-specs-quadtree:/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] 700b625793e8560efc85af8b35795c0390f417bbc131d42c0fe54d9e37776aba [INFO] running `"docker" "start" "-a" "700b625793e8560efc85af8b35795c0390f417bbc131d42c0fe54d9e37776aba"` [INFO] [stderr] Checking smallvec v0.4.3 [INFO] [stderr] Checking pulse v0.5.3 [INFO] [stderr] Checking rayon-core v1.2.1 [INFO] [stderr] Compiling shred-derive v0.3.0 [INFO] [stderr] Checking rayon v0.7.1 [INFO] [stderr] Checking hibitset v0.1.3 [INFO] [stderr] Checking shred v0.4.3 [INFO] [stderr] Checking specs v0.9.5 [INFO] [stderr] Checking specs-octree v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/quadtree.rs:142:21 [INFO] [stderr] | [INFO] [stderr] 142 | parent: parent, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `parent` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/quadtree.rs:222:13 [INFO] [stderr] | [INFO] [stderr] 222 | target: target, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `target` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/quadtree.rs:142:21 [INFO] [stderr] | [INFO] [stderr] 142 | parent: parent, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `parent` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/quadtree.rs:222:13 [INFO] [stderr] | [INFO] [stderr] 222 | target: target, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `target` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unused variable: `quadtree` [INFO] [stderr] --> src/main.rs:28:50 [INFO] [stderr] | [INFO] [stderr] 28 | fn run(&mut self, (mut pos, mut bounds, vel, quadtree): Self::SystemData) { [INFO] [stderr] | ^^^^^^^^ help: consider using `_quadtree` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `find_node` [INFO] [stderr] --> src/quadtree.rs:74:5 [INFO] [stderr] | [INFO] [stderr] 74 | fn find_node(&self, bounds: &Bounds) -> &QuadtreeNode { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `iter_with_max_dist` [INFO] [stderr] --> src/quadtree.rs:216:5 [INFO] [stderr] | [INFO] [stderr] 216 | / pub fn iter_with_max_dist<'a>( [INFO] [stderr] 217 | | &'a self, [INFO] [stderr] 218 | | target: Position, [INFO] [stderr] 219 | | max_dist: f32, [INFO] [stderr] ... | [INFO] [stderr] 227 | | } [INFO] [stderr] 228 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `QuadtreeIterator` [INFO] [stderr] --> src/quadtree.rs:231:1 [INFO] [stderr] | [INFO] [stderr] 231 | pub struct QuadtreeIterator<'a> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/quadtree.rs:65:28 [INFO] [stderr] | [INFO] [stderr] 65 | fn find(&self, entity: &Entity) -> Option { [INFO] [stderr] | ^^^^^^^ help: consider passing by value instead: `Entity` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/quadtree.rs:162:23 [INFO] [stderr] | [INFO] [stderr] 162 | while node != null_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_null)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> src/quadtree.rs:164:54 [INFO] [stderr] | [INFO] [stderr] 164 | if node_.children.iter().all(|n| { [INFO] [stderr] | ______________________________________________________^ [INFO] [stderr] 165 | | n.children.is_empty() && [INFO] [stderr] 166 | | n.members.is_empty() [INFO] [stderr] 167 | | }) { [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::block_in_if_condition_stmt)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/quadtree.rs:216:5 [INFO] [stderr] | [INFO] [stderr] 216 | / pub fn iter_with_max_dist<'a>( [INFO] [stderr] 217 | | &'a self, [INFO] [stderr] 218 | | target: Position, [INFO] [stderr] 219 | | max_dist: f32, [INFO] [stderr] ... | [INFO] [stderr] 227 | | } [INFO] [stderr] 228 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/quadtree.rs:282:24 [INFO] [stderr] | [INFO] [stderr] 282 | if self.node.parent == null_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: unused variable: `quadtree` [INFO] [stderr] --> src/main.rs:28:50 [INFO] [stderr] | [INFO] [stderr] 28 | fn run(&mut self, (mut pos, mut bounds, vel, quadtree): Self::SystemData) { [INFO] [stderr] | ^^^^^^^^ help: consider using `_quadtree` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> src/quadtree.rs:333:24 [INFO] [stderr] | [INFO] [stderr] 333 | if { [INFO] [stderr] | ________________________^ [INFO] [stderr] 334 | | let ptr: *const QuadtreeNode = node; [INFO] [stderr] 335 | | let better_child = node.find_node_mut(bounds); [INFO] [stderr] 336 | | let better_ptr: *const QuadtreeNode = better_child; [INFO] [stderr] ... | [INFO] [stderr] 346 | | } [INFO] [stderr] 347 | | } { [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: try [INFO] [stderr] let res = { [INFO] [stderr] let ptr: *const QuadtreeNode = node; [INFO] [stderr] let better_child = node.find_node_mut(bounds); [INFO] [stderr] let better_ptr: *const QuadtreeNode = better_child; [INFO] [stderr] if better_ptr != ptr { [INFO] [stderr] println!("Moving it to children node {}, {}, {}", [INFO] [stderr] better_child.bounds.pos.x, [INFO] [stderr] better_child.bounds.pos.y, [INFO] [stderr] better_child.bounds.size); [INFO] [stderr] better_child.add(entity, bounds.clone()); [INFO] [stderr] true [INFO] [stderr] } else { [INFO] [stderr] false // This is the best place for the entity [INFO] [stderr] } [INFO] [stderr] }; [INFO] [stderr] if res { [INFO] [stderr] // We defer the remove call after the borrow ends [INFO] [stderr] node.remove(entity); [INFO] [stderr] } ... [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] warning: method is never used: `find_node` [INFO] [stderr] --> src/quadtree.rs:74:5 [INFO] [stderr] | [INFO] [stderr] 74 | fn find_node(&self, bounds: &Bounds) -> &QuadtreeNode { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `iter_with_max_dist` [INFO] [stderr] --> src/quadtree.rs:216:5 [INFO] [stderr] | [INFO] [stderr] 216 | / pub fn iter_with_max_dist<'a>( [INFO] [stderr] 217 | | &'a self, [INFO] [stderr] 218 | | target: Position, [INFO] [stderr] 219 | | max_dist: f32, [INFO] [stderr] ... | [INFO] [stderr] 227 | | } [INFO] [stderr] 228 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `QuadtreeIterator` [INFO] [stderr] --> src/quadtree.rs:231:1 [INFO] [stderr] | [INFO] [stderr] 231 | pub struct QuadtreeIterator<'a> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/quadtree.rs:65:28 [INFO] [stderr] | [INFO] [stderr] 65 | fn find(&self, entity: &Entity) -> Option { [INFO] [stderr] | ^^^^^^^ help: consider passing by value instead: `Entity` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/quadtree.rs:162:23 [INFO] [stderr] | [INFO] [stderr] 162 | while node != null_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_null)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> src/quadtree.rs:164:54 [INFO] [stderr] | [INFO] [stderr] 164 | if node_.children.iter().all(|n| { [INFO] [stderr] | ______________________________________________________^ [INFO] [stderr] 165 | | n.children.is_empty() && [INFO] [stderr] 166 | | n.members.is_empty() [INFO] [stderr] 167 | | }) { [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::block_in_if_condition_stmt)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/quadtree.rs:216:5 [INFO] [stderr] | [INFO] [stderr] 216 | / pub fn iter_with_max_dist<'a>( [INFO] [stderr] 217 | | &'a self, [INFO] [stderr] 218 | | target: Position, [INFO] [stderr] 219 | | max_dist: f32, [INFO] [stderr] ... | [INFO] [stderr] 227 | | } [INFO] [stderr] 228 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: Comparing with null is better expressed by the .is_null() method [INFO] [stderr] --> src/quadtree.rs:282:24 [INFO] [stderr] | [INFO] [stderr] 282 | if self.node.parent == null_mut() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_null [INFO] [stderr] [INFO] [stderr] warning: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> src/quadtree.rs:333:24 [INFO] [stderr] | [INFO] [stderr] 333 | if { [INFO] [stderr] | ________________________^ [INFO] [stderr] 334 | | let ptr: *const QuadtreeNode = node; [INFO] [stderr] 335 | | let better_child = node.find_node_mut(bounds); [INFO] [stderr] 336 | | let better_ptr: *const QuadtreeNode = better_child; [INFO] [stderr] ... | [INFO] [stderr] 346 | | } [INFO] [stderr] 347 | | } { [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: try [INFO] [stderr] let res = { [INFO] [stderr] let ptr: *const QuadtreeNode = node; [INFO] [stderr] let better_child = node.find_node_mut(bounds); [INFO] [stderr] let better_ptr: *const QuadtreeNode = better_child; [INFO] [stderr] if better_ptr != ptr { [INFO] [stderr] println!("Moving it to children node {}, {}, {}", [INFO] [stderr] better_child.bounds.pos.x, [INFO] [stderr] better_child.bounds.pos.y, [INFO] [stderr] better_child.bounds.size); [INFO] [stderr] better_child.add(entity, bounds.clone()); [INFO] [stderr] true [INFO] [stderr] } else { [INFO] [stderr] false // This is the best place for the entity [INFO] [stderr] } [INFO] [stderr] }; [INFO] [stderr] if res { [INFO] [stderr] // We defer the remove call after the borrow ends [INFO] [stderr] node.remove(entity); [INFO] [stderr] } ... [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 11.31s [INFO] running `"docker" "inspect" "700b625793e8560efc85af8b35795c0390f417bbc131d42c0fe54d9e37776aba"` [INFO] running `"docker" "rm" "-f" "700b625793e8560efc85af8b35795c0390f417bbc131d42c0fe54d9e37776aba"` [INFO] [stdout] 700b625793e8560efc85af8b35795c0390f417bbc131d42c0fe54d9e37776aba